Files
tecvico-website/docs/marketplace-roadmap.md
2026-07-19 14:31:28 +03:30

241 lines
9.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 12 are a natural extension. Plan 3 adds services (Stripe Connect, WebSockets, background jobs) but stays on the same project.
---
## Plan 1 — Simple (MVP) · 35 weeks
**Goal:** List projects, apply, message. Off-platform payment OK.
| Milestone | Weeks | Deliverable |
| ------------------ | ----- | ----------------------------------------------------------- |
| M1 Auth & profiles | 12 | Registration, login, password reset, client/freelancer role |
| M2 Listings | 34 | Project CRUD, categories, search/filters |
| M3 Proposals | 56 | Apply, withdraw, client shortlist |
| M4 Comms & admin | 78 | 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) · 23 months
**Goal:** Hire and pay on-platform. Gigs (Fiverr) + custom projects (Upwork).
| Milestone | Weeks | Deliverable |
| ------------- | ----- | ----------------------------------------------------------- |
| M1 Foundation | 14 | Plan 1 + email verify, profile completeness, S3/local media |
| M2 Gigs | 58 | Service listings with 3 tiers |
| M3 Contracts | 912 | Award, milestones, deliverables |
| M4 Payments | 1316 | Stripe escrow, release, platform fee |
| M5 Trust | 1720 | 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. 1020%)
- Refund rules: cancelled before start; partial on dispute
- PDF invoice/receipt per transaction
**Trust**
- Double-blind reviews after completion (15 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) · 46 months
**Goal:** Production marketplace with discovery, compliance, and scale.
| Milestone | Months | Deliverable |
| ----------------- | ------ | ----------------------------------------- |
| M1 Core hardening | 12 | Plan 2 + 2FA, OAuth, rate limits |
| M2 Discovery | 34 | Search, recommendations, skill tests |
| M3 Collaboration | 56 | Time tracking, workspace, real-time chat |
| M4 Payments+ | 78 | Stripe Connect, multi-currency, KYC hooks |
| M5 Trust & safety | 910 | Auto disputes, moderation, fraud signals |
| M6 Growth | 1112 | 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%.*