# Marketplace Roadmap — Simple → Advanced

Expand the existing Tecvico Django site into a freelance/project marketplace (Upwork / Fiverr style).

---

## Is This Doable on the Current Stack?

**Yes.** Django is a standard choice for marketplaces (e.g. early Instacart, Disqus patterns). Your repo already has the right foundation:


| Already in place                                   | Reuse for marketplace                   |
| -------------------------------------------------- | --------------------------------------- |
| Django + PostgreSQL + Docker                       | Core backend — no rewrite needed        |
| `apps.core` (branding, site settings)              | Global config, fees, categories         |
| `apps.pages` (CMS, hero, sections)                 | Marketing pages + marketplace landing   |
| File uploads (`contact_uploads`, product releases) | Proposals, deliverables, gig media      |
| Admin panel                                        | Moderation, disputes, user management   |
| Templates + static CSS/JS                          | Extend UI; add dashboards incrementally |


**New apps to add** (keeps existing code intact):

- `apps.accounts` — profiles, roles, verification
- `apps.marketplace` — projects, gigs, proposals, contracts
- `apps.messaging` — threads (Plan 1: polling/refresh; Plan 3: Channels/WebSockets)
- `apps.payments` — Stripe from Plan 2 onward

**What gets harder later (not blockers now):** real-time chat, escrow/payouts, dispute automation, high traffic (Redis, Celery, CDN). None require leaving Django.

**Verdict:** Plan 1–2 are a natural extension. Plan 3 adds services (Stripe Connect, WebSockets, background jobs) but stays on the same project.

---



## Plan 1 — Simple (MVP) · 3–5 weeks

**Goal:** List projects, apply, message. Off-platform payment OK.


| Milestone          | Weeks | Deliverable                                                 |
| ------------------ | ----- | ----------------------------------------------------------- |
| M1 Auth & profiles | 1–2   | Registration, login, password reset, client/freelancer role |
| M2 Listings        | 3–4   | Project CRUD, categories, search/filters                    |
| M3 Proposals       | 5–6   | Apply, withdraw, client shortlist                           |
| M4 Comms & admin   | 7–8   | Messaging, emails, moderation                               |




### Feature detail

**Accounts**

- Email/password signup; role pick (client, freelancer, or both)
- Profile: display name, avatar, bio, location, hourly rate (optional), skills (tags), portfolio URLs
- Public profile URL (`/u/username/`)

**Projects**

- Fields: title, rich description, category, budget type (fixed/hourly/range), amount, deadline, attachments
- Status: draft → open → closed → archived
- Client dashboard: my projects, applicant count, close/reopen

**Discovery**

- List page with filters: category, budget range, posted date
- Full-text search on title + description
- Sort: newest, budget high/low

**Proposals**

- Cover letter, bid amount, estimated delivery days
- One proposal per freelancer per project; edit until client views
- Client view: compare proposals, mark shortlisted/rejected

**Messaging**

- Thread per project between client and applicant (after apply or invite)
- Attach files (reuse existing upload patterns)
- Email on new message/proposal (Django email backend)

**Admin**

- Approve/suspend users and listings; view contact-style audit trail

**Out of scope:** payments, contracts, reviews, gigs.

---



## Plan 2 — Medium (Transactional) · 2–3 months

**Goal:** Hire and pay on-platform. Gigs (Fiverr) + custom projects (Upwork).


| Milestone     | Weeks | Deliverable                                                 |
| ------------- | ----- | ----------------------------------------------------------- |
| M1 Foundation | 1–4   | Plan 1 + email verify, profile completeness, S3/local media |
| M2 Gigs       | 5–8   | Service listings with 3 tiers                               |
| M3 Contracts  | 9–12  | Award, milestones, deliverables                             |
| M4 Payments   | 13–16 | Stripe escrow, release, platform fee                        |
| M5 Trust      | 17–20 | Reviews, dashboards, manual disputes                        |




### Feature detail

**Gigs (Fiverr-style)**

- Gig: title, gallery (images/video), category, FAQ, requirements form
- Packages: Basic / Standard / Premium — price, delivery days, revision count, feature bullet list
- Extras: add-ons (e.g. +$50 rush delivery)
- Order flow: client picks package → answers requirements → pays → freelancer accepts

**Contracts (Upwork-style)**

- Client awards proposal → contract generated (scope, total, deadline)
- Milestones: name, amount, due date; client funds each before work starts
- Deliverable upload per milestone; client approve or request revision (limited rounds)
- Order states: `pending_payment` → `active` → `delivered` → `revision` → `completed` / `cancelled`

**Payments (Stripe)**

- Checkout Session on award/order; funds held (platform balance or Stripe separate charges)
- Release to freelancer on milestone approval minus commission (e.g. 10–20%)
- Refund rules: cancelled before start; partial on dispute
- PDF invoice/receipt per transaction

**Trust**

- Double-blind reviews after completion (1–5 stars + text)
- Public rating on profile; aggregate on gig
- Dispute form: reason, evidence files → admin resolves manually

**Dashboards**

- Client: spend, active orders, past hires
- Freelancer: earnings, pending clearance, gig analytics (views, orders)

**Out of scope:** hourly time tracker, OAuth, multi-currency, automated disputes.

---



## Plan 3 — Advanced (Full Platform) · 4–6 months

**Goal:** Production marketplace with discovery, compliance, and scale.


| Milestone         | Months | Deliverable                               |
| ----------------- | ------ | ----------------------------------------- |
| M1 Core hardening | 1–2    | Plan 2 + 2FA, OAuth, rate limits          |
| M2 Discovery      | 3–4    | Search, recommendations, skill tests      |
| M3 Collaboration  | 5–6    | Time tracking, workspace, real-time chat  |
| M4 Payments+      | 7–8    | Stripe Connect, multi-currency, KYC hooks |
| M5 Trust & safety | 9–10   | Auto disputes, moderation, fraud signals  |
| M6 Growth         | 11–12  | API, referrals, analytics, PWA            |




### Feature detail

**Auth & identity**

- Google / LinkedIn OAuth; TOTP 2FA
- Identity verification hook (Stripe Identity or manual)
- Verified badge on profile

**Discovery & matching**

- Elasticsearch/PostgreSQL full-text: skills, rate, location, availability
- Saved searches + email alerts for new matching projects/gigs
- Skill tests (quiz → badge on pass)
- “Recommended for you” (rules-based first; ML optional later)

**Collaboration**

- Hourly contracts: weekly hour cap, manual or screenshot time log
- Shared order workspace: brief, files, milestone checklist
- Real-time chat (Django Channels + Redis): typing, read receipts, file drag-drop
- Video intro on profile; calendar link for intro calls

**Payments & compliance**

- Stripe Connect Express: freelancer onboarding, automatic payouts
- Multi-currency display; platform fee per region
- Tax form collection hook (W-9 / W-8BEN — integrate when legally required)
- Chargebacks and refund automation with audit log

**Trust & safety**

- Dispute pipeline: open → evidence window → mediator → verdict → auto payout split
- Content moderation queue (profiles, gigs, messages flagged by users or keywords)
- Fraud heuristics: duplicate accounts, velocity limits, payment anomalies

**Growth & ops**

- Freelancer subscriptions: featured gig, lower commission tier
- Referral codes (credit for referrer/referee)
- Public REST API + webhooks (`order.completed`, `payment.released`)
- Admin analytics: GMV, take rate, conversion funnel, dispute rate, cohort retention
- SEO pages for categories and top gigs; structured data (JSON-LD)

**Out of scope:** native iOS/Android (PWA first).

---



## Comparison


|                      | Simple  | Medium        | Advanced                 |
| -------------------- | ------- | ------------- | ------------------------ |
| Projects + proposals | ✓       | ✓             | ✓                        |
| Gigs / packages      | —       | ✓             | ✓                        |
| Messaging            | refresh | refresh       | real-time                |
| Stripe / escrow      | —       | ✓             | Connect + multi-currency |
| Milestones + hourly  | —       | milestones    | both                     |
| Reviews              | —       | ✓             | ✓ + badges + tests       |
| Disputes             | —       | manual        | automated                |
| API / analytics      | —       | basic reports | full                     |


---



## Recommended Path

1. **Plan 1 on this repo** — add `apps.accounts` + `apps.marketplace`; keep marketing site live.
2. **Plan 2 when volume justifies escrow** — biggest lift is payments + order state machine.
3. **Plan 3 when GMV supports ops** — disputes, compliance, and real-time infra need people, not just code.

*Timelines assume extending the current codebase; full UI redesign adds ~20%.*