feat: admin panel enrichment
This commit is contained in:
@@ -0,0 +1,256 @@
|
||||
# Managed Projects Roadmap — Simple → Advanced
|
||||
|
||||
Expand the existing Tecvico Django site so **clients define projects; Tecvico delivers them**. No freelancer marketplace — users submit briefs, your team quotes, builds, and ships.
|
||||
|
||||
---
|
||||
|
||||
## Is This Doable on the Current Stack?
|
||||
|
||||
**Yes — and simpler than a marketplace.** No two-sided matching, escrow to third parties, or dispute flows between strangers. You are the sole provider.
|
||||
|
||||
|
||||
| Already in place | Reuse for managed projects |
|
||||
| -------------------------------- | ------------------------------------------- |
|
||||
| Django + PostgreSQL + Docker | Core backend |
|
||||
| `apps.pages` + contact form | Evolve into project brief submission |
|
||||
| File uploads (`contact_uploads`) | Brief attachments, deliverables |
|
||||
| `apps.products` CMS patterns | Service catalog / package pages |
|
||||
| Admin panel | Intake queue, quotes, assignment, delivery |
|
||||
| Email + templates | Status updates, quote sent, milestone ready |
|
||||
|
||||
|
||||
**New apps to add:**
|
||||
|
||||
- `apps.accounts` — client login, org profiles (Plan 2+)
|
||||
- `apps.projects` — briefs, quotes, orders, milestones, deliverables
|
||||
- `apps.messaging` — client ↔ Tecvico threads per project
|
||||
- `apps.payments` — client invoicing via Stripe (Plan 2+)
|
||||
|
||||
**Internal-only (admin):** team assignment, internal notes, time tracking — no public freelancer profiles.
|
||||
|
||||
**Verdict:** Plan 1 is close to an enhanced contact flow. Plan 2–3 add quoting, payments, and a client portal — all standard Django.
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
## Plan 1 — Simple (MVP) · 3–6 weeks
|
||||
|
||||
**Goal:** Clients submit project briefs online; Tecvico reviews and delivers off-platform billing if needed.
|
||||
|
||||
|
||||
| Milestone | Weeks | Deliverable |
|
||||
| ------------------ | ----- | ----------------------------------------------- |
|
||||
| M1 Client accounts | 1 | Sign up, login, password reset |
|
||||
| M2 Project briefs | 1–2 | Structured submission form + attachments |
|
||||
| M3 Status tracking | 2–3 | Client sees request status; email notifications |
|
||||
| M4 Admin intake | 3–4 | Review queue, status updates, internal notes |
|
||||
|
||||
|
||||
|
||||
|
||||
### Feature detail
|
||||
|
||||
**Accounts**
|
||||
|
||||
- Email/password signup (client role only)
|
||||
- Profile: name, company, phone, timezone
|
||||
- Dashboard: list of my project requests
|
||||
|
||||
**Project brief**
|
||||
|
||||
- Fields: title, category (web, data, research, etc.), description, goals, budget range, desired deadline, reference links
|
||||
- Attachments: specs, mockups, datasets (reuse upload patterns)
|
||||
- Status: `submitted` → `under_review` → `quoted` → `accepted` / `declined` → `in_progress` → `delivered` → `closed`
|
||||
- Client can edit brief while status is `submitted` only
|
||||
|
||||
**Notifications**
|
||||
|
||||
- Email to client on status change
|
||||
- Email to admin on new submission
|
||||
|
||||
**Admin**
|
||||
|
||||
- Intake list with filters (status, category, date)
|
||||
- View brief + files; add internal notes (not visible to client)
|
||||
- Manually set status and paste quote text (PDF/email off-platform OK)
|
||||
|
||||
**Out of scope:** online quotes, payments, messaging, milestones.
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
## Plan 2 — Medium (Client Portal) · 1–2 months
|
||||
|
||||
**Goal:** Quote, pay, and deliver on-platform. Productized packages + custom projects.
|
||||
|
||||
|
||||
| Milestone | Weeks | Deliverable |
|
||||
| ------------- | ----- | ----------------------------------------------------- |
|
||||
| M1 Foundation | 1–2 | Plan 1 + email verify, service catalog pages |
|
||||
| M2 Quotes | 3–4 | Admin builds quote; client accepts/declines in portal |
|
||||
| M3 Payments | 5–6 | Stripe deposit + milestone invoices |
|
||||
| M4 Delivery | 7–8 | Milestones, deliverable uploads, revision rounds |
|
||||
| M5 Comms | 9–10 | Per-project messaging, client dashboard polish |
|
||||
|
||||
|
||||
|
||||
|
||||
### Feature detail
|
||||
|
||||
**Service catalog**
|
||||
|
||||
- CMS pages for fixed offerings (e.g. “Landing page”, “Radiomics pipeline audit”)
|
||||
- Package tiers: scope summary, starting price, typical timeline
|
||||
- “Start from template” pre-fills brief fields
|
||||
|
||||
**Quotes**
|
||||
|
||||
- Admin creates quote from brief: line items, total, timeline, revision count included
|
||||
- Client receives email + in-portal quote view
|
||||
- Accept → order created; decline → brief archived with reason
|
||||
|
||||
**Orders & milestones**
|
||||
|
||||
- Order states: `awaiting_deposit` → `active` → `milestone_review` → `revision` → `completed`
|
||||
- Milestones: name, due date, amount, description of deliverable
|
||||
- Tecvico uploads files per milestone; client approves or requests revision (capped rounds)
|
||||
- Change requests: client submits add-on brief → admin sends revised quote
|
||||
|
||||
**Payments (Stripe)**
|
||||
|
||||
- Deposit on accept (e.g. 30–50%); remainder split across milestones
|
||||
- Checkout Session per invoice; receipt PDF
|
||||
- Refund policy flags (admin-only)
|
||||
|
||||
**Messaging**
|
||||
|
||||
- Thread per project: client ↔ assigned PM
|
||||
- File attach in thread; email digest on new message
|
||||
|
||||
**Admin**
|
||||
|
||||
- Assign internal owner (staff user) per project
|
||||
- Pipeline board: new → quoted → active → blocked → done
|
||||
- Basic reports: open projects, revenue this month
|
||||
|
||||
**Out of scope:** e-sign contracts, org/team accounts, automated estimates, real-time chat.
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
## Plan 3 — Advanced (Full Client Platform) · 2–3 months
|
||||
|
||||
**Goal:** Scalable delivery ops — enterprise clients, SLAs, automation, integrations.
|
||||
|
||||
|
||||
| Milestone | Months | Deliverable |
|
||||
| --------------- | ------ | --------------------------------------------- |
|
||||
| M1 Hardening | 1 | Plan 2 + 2FA, OAuth, org accounts |
|
||||
| M2 Sales flow | 1–2 | E-sign, ballpark estimator, kickoff booking |
|
||||
| M3 Delivery ops | 2–3 | SLA timers, internal time log, task checklist |
|
||||
| M4 Enterprise | 3–4 | Multi-user orgs, API, webhooks |
|
||||
| M5 Growth | 4–5 | Referrals, analytics, PWA, knowledge base |
|
||||
|
||||
|
||||
|
||||
|
||||
### Feature detail
|
||||
|
||||
**Auth & organizations**
|
||||
|
||||
- Google / LinkedIn OAuth; optional 2FA
|
||||
- Organization account: owner + members, shared project list, role (viewer / submitter / billing)
|
||||
- Billing contact separate from project contact
|
||||
|
||||
**Pre-sale**
|
||||
|
||||
- Ballpark estimator: category + scope sliders → indicative range (admin-configured rules)
|
||||
- Discovery call booking (Calendly embed or built-in slot picker)
|
||||
- Digital SOW + NDA (DocuSign hook or in-app accept with audit trail)
|
||||
|
||||
**Delivery workspace**
|
||||
|
||||
- Shared project hub: brief, quote, contract, timeline, files, messages
|
||||
- Visual timeline / milestone Gantt for client
|
||||
- SLA badges: response within X hours, milestone due alerts (Celery + email)
|
||||
- Internal: task checklist, time entries per staff, capacity view (admin)
|
||||
|
||||
**Revisions & scope**
|
||||
|
||||
- Structured revision requests (what to change, priority)
|
||||
- Scope creep flow: auto-flag when revision count exceeded → change order quote
|
||||
|
||||
**Payments+**
|
||||
|
||||
- Multi-currency quotes; recurring maintenance plans (Stripe Subscription)
|
||||
- Pro-forma + final invoice; export for accounting
|
||||
|
||||
**Enterprise & integrations**
|
||||
|
||||
- REST API: submit brief, poll status, download deliverables
|
||||
- Webhooks: `quote.sent`, `milestone.delivered`, `project.completed`
|
||||
- SSO option (SAML) for large clients — optional phase
|
||||
|
||||
**Knowledge & retention**
|
||||
|
||||
- Client-facing FAQ / “how we work” tied to project phase
|
||||
- Post-delivery satisfaction survey + testimonial request
|
||||
- Referral codes (credit on next project)
|
||||
|
||||
**Admin analytics**
|
||||
|
||||
- Funnel: brief → quote → accept → complete
|
||||
- Utilization, avg delivery time, revenue by service line
|
||||
|
||||
**Out of scope:** marketplace, freelancer payouts, native mobile apps.
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
## Comparison
|
||||
|
||||
|
||||
| | Simple | Medium | Advanced |
|
||||
| ------------------------------- | ---------- | -------- | ----------------- |
|
||||
| Project brief submission | ✓ | ✓ | ✓ + templates |
|
||||
| Online quotes | — | ✓ | ✓ + estimator |
|
||||
| Stripe payments | — | ✓ | ✓ + subscriptions |
|
||||
| Milestones & deliverables | — | ✓ | ✓ + SLA |
|
||||
| Client ↔ Tecvico messaging | — | ✓ | ✓ + digests |
|
||||
| Service catalog / packages | — | ✓ | ✓ |
|
||||
| Org / team accounts | — | — | ✓ |
|
||||
| E-sign / contracts | — | — | ✓ |
|
||||
| API / webhooks | — | — | ✓ |
|
||||
| Internal ops (assign, time log) | notes only | pipeline | full |
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
## Managed vs Marketplace
|
||||
|
||||
|
||||
| | Managed (this doc) | Marketplace (`marketplace-roadmap.md`) |
|
||||
| ------------ | -------------------------- | -------------------------------------- |
|
||||
| Who delivers | Tecvico team | Freelancers / clients hire each other |
|
||||
| Payments | Client → Tecvico | Escrow, payouts, commissions |
|
||||
| Complexity | Lower | Higher (trust, disputes, matching) |
|
||||
| Best when | You sell your own services | You broker others' work |
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
## Recommended Path
|
||||
|
||||
1. **Plan 1** — ship brief + status portal; keep quoting via email if needed.
|
||||
2. **Plan 2** — add quotes and Stripe once you have repeatable delivery workflow.
|
||||
3. **Plan 3** — when project volume needs SLAs, org accounts, and ops dashboards.
|
||||
|
||||
*Timelines assume extending the current codebase; bespoke UI redesign adds ~20%.*
|
||||
@@ -0,0 +1,241 @@
|
||||
# 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%.*
|
||||
Reference in New Issue
Block a user