diff --git a/PROJECTWISE_2026_PLAN.md b/PROJECTWISE_2026_PLAN.md new file mode 100644 index 0000000..ad77793 --- /dev/null +++ b/PROJECTWISE_2026_PLAN.md @@ -0,0 +1,1066 @@ +# Projectwise 2026: Platform Modernization Plan + +> **Mission:** Build a business on open source — connecting commercial-ready open source software with the experts who can deploy it. + +--- + +## Table of Contents + +1. [Executive Summary](#executive-summary) +2. [The Evolution](#the-evolution) +3. [Platform Architecture](#platform-architecture) +4. [Tech Stack](#tech-stack) +5. [Data Model](#data-model) +6. [Features & Pages](#features--pages) +7. [Content Strategy](#content-strategy) +8. [SEO Strategy](#seo-strategy) +9. [Launch Plan](#launch-plan) +10. [Revenue Model](#revenue-model) +11. [Appendix: Project Seed List](#appendix-project-seed-list) + +--- + +## Executive Summary + +### What is Projectwise? + +Projectwise is a curated directory of **commercial-ready open source software** — projects you can self-host, white-label, and build a business on. It connects three audiences: + +1. **Projects** — Open source software with permissive licenses and commercial potential +2. **Experts** — Contributors and developers who can deploy/customize these projects +3. **Operators** — Entrepreneurs and agencies who want to run OSS as SaaS businesses + +### Why Now? + +- **Open source maintainer crisis:** 60% of maintainers are unpaid, 44% cite burnout ([source](https://byteiota.com/open-source-maintainer-crisis-60-unpaid-burnout-hits-44/)) +- **AI disruption:** Traditional teaching/Stack Overflow traffic declining; developers need new income streams +- **Proven model:** WordPress ecosystem is worth $600B+ with hosting, agencies, and developers as layers +- **Market validation:** OpenAlternative reached 100k visitors in week 1, now 1M+ annually, $3.5k/month revenue + +### The Opportunity + +No platform currently connects: +- Commercial-ready OSS projects (with white-label support) +- Verified contributors who can implement them +- Entrepreneurs who want to build businesses on top + +Projectwise fills this gap. + +--- + +## The Evolution + +### Original Projectwise (2017-2018) + +> "Open source needs better design workflows. Find open source projects and help them improve their user interface and experience." + +| Aspect | 2017 Version | +|--------|--------------| +| **Problem** | OSS projects need design help | +| **Solution** | Directory to connect designers with projects | +| **Tech** | React 16 + Redux + Express + MongoDB | +| **Status** | Functional but outdated | + +### New Projectwise (2026) + +> "Build a business on open source. Find commercial-ready software and the experts who can deploy it." + +| Aspect | 2026 Version | +|--------|--------------| +| **Problem** | OSS needs sustainable business models | +| **Solution** | Marketplace connecting projects, experts, and operators | +| **Tech** | Next.js 15 + Payload CMS + PostgreSQL | +| **Model** | Directory → Interest forms → Job board → Marketplace | + +--- + +## Platform Architecture + +### Two-Repository Structure + +We maintain separation between frontend and backend for flexibility and independent scaling. + +``` +┌─────────────────────────────────────────────────────────────────────┐ +│ PROJECTWISE PLATFORM │ +├─────────────────────────────────────────────────────────────────────┤ +│ │ +│ REPO 1: projectwise-app (Frontend) │ +│ ┌─────────────────────────────────────────────────────────────┐ │ +│ │ Next.js 15 (App Router) │ │ +│ │ • Server-side rendering for SEO │ │ +│ │ • Static generation for programmatic pages │ │ +│ │ • Tailwind CSS + shadcn/ui │ │ +│ │ • Fetches data from CMS API │ │ +│ │ • Deployed on Vercel │ │ +│ └─────────────────────────────────────────────────────────────┘ │ +│ │ │ +│ │ REST/GraphQL API │ +│ ▼ │ +│ REPO 2: projectwise-server (Backend/CMS) │ +│ ┌─────────────────────────────────────────────────────────────┐ │ +│ │ Payload CMS 3.0 │ │ +│ │ • Headless CMS with admin UI │ │ +│ │ • TypeScript-native, code-first config │ │ +│ │ • PostgreSQL database │ │ +│ │ • REST + GraphQL APIs auto-generated │ │ +│ │ • Media handling (screenshots, logos) │ │ +│ │ • Deployed on Railway/Render │ │ +│ └─────────────────────────────────────────────────────────────┘ │ +│ │ │ +│ ▼ │ +│ ┌─────────────────────────────────────────────────────────────┐ │ +│ │ PostgreSQL Database │ │ +│ │ • Projects, Categories, Experts, Jobs, etc. │ │ +│ └─────────────────────────────────────────────────────────────┘ │ +│ │ +│ EXTERNAL INTEGRATIONS │ +│ ┌─────────────────────────────────────────────────────────────┐ │ +│ │ • GitHub API: Stars, contributors, last commit │ │ +│ │ • Screenshot API: Landing page captures │ │ +│ │ • Stripe Connect: Revenue verification (future) │ │ +│ │ • Formspree/Loops: Email capture │ │ +│ └─────────────────────────────────────────────────────────────┘ │ +│ │ +└─────────────────────────────────────────────────────────────────────┘ +``` + +### Why Payload CMS? + +After evaluating Strapi, Directus, and Payload ([comparison](https://www.glukhov.org/post/2025/11/headless-cms-comparison-strapi-directus-payload/)): + +| CMS | Pros | Cons | +|-----|------|------| +| **Strapi** | Mature, large community, 60k+ stars | Role limits on free tier, heavier | +| **Directus** | Database-agnostic, great permissions | More complex setup, developer-oriented | +| **Payload** | TypeScript-native, Next.js integration, code-first | Newer, smaller community | + +**Recommendation: Payload CMS 3.0** + +- Built on Next.js — same stack as frontend +- TypeScript-native — type safety across the full stack +- Code-first configuration — version-controlled schema +- Self-hostable — no vendor lock-in +- Admin UI included — non-technical team can manage content + +### Future: Monorepo Migration + +After MVP validation, consider migrating to a Turborepo monorepo: + +``` +projectwise/ +├── apps/ +│ ├── web/ # Next.js frontend +│ └── cms/ # Payload CMS +├── packages/ +│ ├── ui/ # Shared components +│ ├── db/ # Database schema +│ └── config/ # Shared config +└── turbo.json +``` + +--- + +## Tech Stack + +### Frontend (projectwise-app) + +| Layer | Technology | Reason | +|-------|------------|--------| +| **Framework** | Next.js 15 (App Router) | SSR/SSG for SEO, React Server Components | +| **Language** | TypeScript 5.x | Type safety, better DX | +| **Styling** | Tailwind CSS 4 + shadcn/ui | Rapid development, consistent design | +| **State** | TanStack Query | Server state management, caching | +| **Forms** | React Hook Form + Zod | Validation, type-safe forms | +| **Analytics** | Plausible (self-hosted) | Privacy-friendly, dogfooding | +| **Deployment** | Vercel | Free tier, instant deploys, edge functions | + +### Backend (projectwise-server) + +| Layer | Technology | Reason | +|-------|------------|--------| +| **CMS** | Payload CMS 3.0 | Headless, TypeScript, Next.js native | +| **Database** | PostgreSQL | Relational, robust, free on Supabase/Railway | +| **API** | REST + GraphQL (auto-generated) | Flexibility for frontend | +| **Auth** | Payload built-in + GitHub OAuth | Secure, simple | +| **Media** | Payload Media + Cloudinary | Image optimization, CDN | +| **Deployment** | Railway or Render | Simple, affordable | + +### External Services + +| Service | Purpose | Cost | +|---------|---------|------| +| **GitHub API** | Fetch stars, contributors, commits | Free | +| **ScreenshotOne / Urlbox** | Capture landing page screenshots | ~$20/mo | +| **Formspree or Loops** | Email capture from interest forms | Free tier | +| **Stripe Connect** | Revenue verification (future) | Usage-based | +| **Vercel** | Frontend hosting | Free tier | +| **Railway** | Backend hosting | $5/mo starter | + +--- + +## Data Model + +### Core Collections (Payload CMS) + +```typescript +// ============================================ +// PROJECTS COLLECTION +// ============================================ +interface Project { + id: string + slug: string // URL-friendly: "plausible-analytics" + + // Basic Info + name: string // "Plausible Analytics" + tagline: string // "Simple, privacy-friendly analytics" + description: string // Rich text, detailed description + logo: Media // Uploaded logo image + screenshot: Media // Landing page screenshot (auto-captured) + + // Links + website_url: string + github_url: string + docs_url?: string + demo_url?: string + + // Classification + categories: Category[] // Many-to-many + alternatives_to: string[] // ["Google Analytics", "Mixpanel"] + + // License & Commercial Readiness + license: 'MIT' | 'Apache-2.0' | 'BSD-3-Clause' | 'AGPL-3.0' | 'ISC' | 'Other' + license_url?: string + tier: 1 | 2 | 3 // Commercial readiness tier + + // Commercial Features + has_white_label: boolean + has_multi_tenancy: boolean + has_official_support: boolean + has_cloud_version: boolean + pricing_url?: string + + // Deployment + deploy_options: { + docker: boolean + docker_compose_url?: string + coolify: boolean + coolify_template_url?: string + railway: boolean + railway_template_url?: string + elestio: boolean + elestio_url?: string + } + estimated_hosting_cost?: string // "$5-20/month" + + // GitHub Stats (auto-synced) + github_stats: { + stars: number + forks: number + open_issues: number + last_commit: Date + language: string + contributors_count: number + } + + // Contributors (auto-synced from GitHub) + contributors: Contributor[] + + // Metadata + featured: boolean + status: 'draft' | 'published' | 'archived' + created_at: Date + updated_at: Date +} + +// ============================================ +// CATEGORIES COLLECTION +// ============================================ +interface Category { + id: string + slug: string // "analytics" + name: string // "Analytics" + description: string + icon?: string // Lucide icon name + projects_count: number // Computed +} + +// ============================================ +// CONTRIBUTORS COLLECTION +// ============================================ +interface Contributor { + id: string + github_username: string + github_id: number + avatar_url: string + profile_url: string + + // Stats per project + project_contributions: { + project: Project + commits: number + additions: number + deletions: number + is_maintainer: boolean + }[] + + // Expert profile (claimed) + is_claimed: boolean // Has the person signed up? + expert_profile?: Expert +} + +// ============================================ +// EXPERTS COLLECTION +// ============================================ +interface Expert { + id: string + + // Basic Info + name: string + email: string + avatar: Media + bio: string + + // Links + github_url: string + linkedin_url?: string + website_url?: string + calendly_url?: string + + // Expertise + projects_expertise: Project[] // Projects they can implement + experience_level: 'contributor' | 'expert' | 'maintainer' + + // Availability + status: 'available' | 'busy' | 'not_available' + hourly_rate?: number + location: string + timezone: string + languages: string[] // ["English", "Spanish"] + + // Verification + verified_contributor: boolean // Linked to GitHub contributions + verified_at?: Date + + // Stats + implementations_count: number + + // Metadata + status: 'pending' | 'approved' | 'rejected' +} + +// ============================================ +// JOBS COLLECTION (Job Board) +// ============================================ +interface Job { + id: string + + // Basic Info + title: string // "Deploy Plausible for Marketing Agency" + description: string + + // Project + project: Project + + // Posted By + posted_by: { + name: string + email: string + company?: string + location: string + } + + // Requirements + job_type: 'one_time' | 'ongoing' | 'full_time' + budget_type: 'fixed' | 'hourly' | 'negotiable' + budget_range?: { + min: number + max: number + currency: string + } + + // Details + requirements: string[] + timeline?: string + remote_ok: boolean + + // Status + status: 'open' | 'in_progress' | 'filled' | 'closed' + applications_count: number + + // Metadata + created_at: Date + expires_at?: Date +} + +// ============================================ +// INTEREST FORMS (Waitlist) +// ============================================ +interface ExpertInterest { + id: string + name: string + email: string + github_username: string + projects_interested: string[] // Project names + experience: string + submitted_at: Date + status: 'new' | 'contacted' | 'converted' +} + +interface OperatorInterest { + id: string + name: string + email: string + company?: string + project_interested: string + location: string + use_case: string + submitted_at: Date + status: 'new' | 'contacted' | 'converted' +} + +// ============================================ +// ALTERNATIVES COLLECTION (For pSEO) +// ============================================ +interface Alternative { + id: string + slug: string // "google-analytics" + name: string // "Google Analytics" + description: string + logo?: Media + website_url: string + pricing?: string // "Free - $150k/year" + projects: Project[] // OSS alternatives to this +} +``` + +--- + +## Features & Pages + +### Phase 1: MVP Directory (Weeks 1-2) + +| Page | URL | Description | +|------|-----|-------------| +| **Homepage** | `/` | Hero + featured projects + categories | +| **Projects List** | `/projects` | All projects, filterable | +| **Project Detail** | `/projects/[slug]` | Full project info + contributors | +| **Categories** | `/category/[slug]` | Projects by category (pSEO) | +| **Alternatives** | `/alternative/[slug]` | OSS alternatives to X (pSEO) | +| **About** | `/about` | Mission, story, team | +| **Submit Project** | `/submit` | Form to suggest new projects | + +### Phase 2: Expert Network (Weeks 3-4) + +| Page | URL | Description | +|------|-----|-------------| +| **Experts List** | `/experts` | Browse verified experts | +| **Expert Profile** | `/experts/[username]` | Expert details + projects | +| **Join as Expert** | `/experts/join` | Interest form + GitHub connect | +| **Claim Profile** | `/claim` | Contributors claim their profile | + +### Phase 3: Job Board (Weeks 5-6) + +| Page | URL | Description | +|------|-----|-------------| +| **Jobs List** | `/jobs` | Open implementation jobs | +| **Job Detail** | `/jobs/[id]` | Job details + apply | +| **Post a Job** | `/jobs/post` | Form to post implementation job | +| **My Applications** | `/dashboard/applications` | Expert's applications | + +### Phase 4: Operator Dashboard (Weeks 7-8) + +| Page | URL | Description | +|------|-----|-------------| +| **Operator Signup** | `/operators/join` | Interest form for operators | +| **Operator Directory** | `/operators` | People running OSS as SaaS | +| **Revenue Verification** | `/operators/verify` | Connect Stripe for verified MRR | + +--- + +## Content Strategy + +### Project Content (100 Projects Target) + +Each project page needs: + +1. **Hero Section** + - Logo + name + tagline + - Screenshot (auto-captured) + - Key stats (stars, license, last update) + - CTA buttons (Website, GitHub, Deploy) + +2. **Overview** + - What it does (2-3 paragraphs) + - What SaaS it replaces + - Why choose open source version + +3. **Commercial Readiness** + - Tier badge (1/2/3) + - White-label support (yes/no) + - Multi-tenancy (yes/no) + - Official support available (yes/no) + +4. **Deployment** + - One-click deploy buttons + - Docker instructions + - Estimated hosting cost + +5. **Contributors/Experts** + - Top contributors from GitHub + - Claimed expert profiles + - "Become an expert" CTA + +6. **Alternatives Comparison** + - Proprietary alternatives with pricing + - Feature comparison table + +### Screenshot Automation + +Like OpenAlternative, automatically capture screenshots: + +```typescript +// Using ScreenshotOne API +async function captureScreenshot(url: string): Promise { + const response = await fetch( + `https://api.screenshotone.com/take?url=${encodeURIComponent(url)}&viewport_width=1280&viewport_height=800&format=webp&access_key=${API_KEY}` + ) + // Upload to Cloudinary/Payload media + return uploadedUrl +} + +// Cron job: Update screenshots weekly +``` + +### Content Sources + +| Source | Data | +|--------|------| +| GitHub API | Stars, forks, contributors, languages, last commit | +| Project website | Description, pricing, features (manual + AI assist) | +| README.md | Installation, features, screenshots | +| ScreenshotOne | Automated landing page captures | + +--- + +## SEO Strategy + +### Programmatic SEO Pages + +Following OpenAlternative's playbook: + +| Page Type | Template | Count | Target Keywords | +|-----------|----------|-------|-----------------| +| **Projects** | `/projects/[slug]` | 100 | "[project name] open source" | +| **Categories** | `/category/[slug]` | 15 | "open source [category] software" | +| **Alternatives** | `/alternative/[slug]` | 50 | "[saas] open source alternative" | +| **Licenses** | `/license/[type]` | 6 | "[license] licensed software" | +| **Stacks** | `/stack/[tech]` | 20 | "open source [tech] projects" | +| **Use Cases** | `/for/[usecase]` | 10 | "white label software for [usecase]" | +| **Total** | - | **~200** | - | + +### Meta Tags Template + +```html + +Projectwise | Build a Business on Open Source + + + +{name} - Open Source Alternative to {alternative} | Projectwise + + + +Open Source {category} Software - {count} Projects | Projectwise + + + +{count} Open Source Alternatives to {saas} | Projectwise + +``` + +### Technical SEO + +- [ ] XML Sitemap (auto-generated) +- [ ] robots.txt +- [ ] Canonical URLs +- [ ] Open Graph images (auto-generated) +- [ ] JSON-LD structured data +- [ ] Core Web Vitals optimization + +--- + +## Launch Plan + +### Pre-Launch (Week 1-2) + +| Day | Task | +|-----|------| +| 1 | Set up Next.js frontend repo | +| 2 | Set up Payload CMS backend repo | +| 3 | Define collections, seed 30 projects | +| 4 | Build homepage + project list + detail pages | +| 5 | Build category + alternative pages (pSEO) | +| 6 | Add interest forms (Expert + Operator) | +| 7 | SEO optimization, sitemap, meta tags | +| 8-10 | Add 70 more projects (total 100) | +| 11 | Deploy frontend to Vercel, backend to Railway | +| 12 | Screenshot automation, final testing | +| 13 | Soft launch to friends/community | +| 14 | Collect feedback, fix issues | + +### Launch Week (Week 3) + +| Day | Channel | Action | +|-----|---------|--------| +| Mon | Setup | Prepare all launch assets | +| Tue | Product Hunt | Submit listing (schedule for Wed) | +| Wed | Product Hunt | Launch day, engage with comments | +| Wed | Hacker News | "Show HN: Projectwise - Build a business on open source" | +| Wed | Twitter/X | Thread about the project | +| Wed | LinkedIn | Post for professional audience | +| Thu | Reddit | r/opensource, r/selfhosted, r/SaaS, r/startups | +| Fri | Dev.to | Article: "100 Open Source Projects You Can Build a Business On" | +| Sat | Indie Hackers | Share the journey | +| Sun | Analyze | Review metrics, plan iteration | + +### Post-Launch (Week 4+) + +- Monitor interest form submissions +- Reach out to top contributors for expert profiles +- Contact projects about official partnerships +- Start job board based on demand +- Iterate based on user feedback + +--- + +## Revenue Model + +### Phase 1: Free (MVP) + +No monetization — focus on traffic and validation. + +### Phase 2: Sponsorships ($500-2k/month) + +| Tier | Price | Benefits | +|------|-------|----------| +| **Featured Project** | $100/month | Highlighted in category + homepage | +| **Sponsor Banner** | $200/month | Banner on relevant pages | +| **Newsletter Sponsor** | $150/issue | Ad in weekly newsletter | + +### Phase 3: Job Board (10-15% of revenue) + +| Model | Fee | +|-------|-----| +| **Job Posting** | $99 one-time or free with revenue share | +| **Successful Hire** | 10% of first payment (if tracked) | + +### Phase 4: Expert Subscriptions ($20-100/month) + +| Tier | Price | Benefits | +|------|-------|----------| +| **Basic** | Free | Profile, limited visibility | +| **Pro** | $29/month | Featured in searches, analytics | +| **Agency** | $99/month | Multiple team members, priority placement | + +### Phase 5: Revenue Sharing (Future) + +Optional: Experts pledge 5-10% of implementation earnings back to maintainers through platform. + +--- + +## Appendix: Project Seed List (100 Projects) + +### Tier 1: Reseller-Ready (White-Label Support) + +| # | Project | Category | Replaces | License | +|---|---------|----------|----------|---------| +| 1 | Dittofeed | Customer Engagement | Customer.io, Klaviyo | MIT | +| 2 | n8n | Automation | Zapier, Make | Sustainable Use | +| 3 | Chatwoot | Customer Support | Intercom, Zendesk | MIT | +| 4 | Appsmith | Internal Tools | Retool | Apache-2.0 | +| 5 | ToolJet | Internal Tools | Retool | AGPL-3.0 | +| 6 | Budibase | Internal Tools | Retool | GPL-3.0 | +| 7 | Metabase | BI/Analytics | Tableau, Looker | AGPL-3.0 | +| 8 | Novu | Notifications | Courier, OneSignal | MIT | +| 9 | Appwrite | BaaS | Firebase | BSD-3-Clause | +| 10 | Supabase | BaaS | Firebase | Apache-2.0 | +| 11 | Directus | Headless CMS | Contentful | GPL-3.0 | +| 12 | Strapi | Headless CMS | Contentful | MIT | +| 13 | Mautic | Marketing Automation | HubSpot, Marketo | GPL-3.0 | +| 14 | Erxes | CRM/Marketing | HubSpot | GPL-3.0 | +| 15 | Activepieces | Automation | Zapier | MIT | + +### Tier 2: Operator-Friendly (Easy Deploy) + +| # | Project | Category | Replaces | License | +|---|---------|----------|----------|---------| +| 16 | Plausible | Analytics | Google Analytics | AGPL-3.0 | +| 17 | Umami | Analytics | Google Analytics | MIT | +| 18 | PostHog | Product Analytics | Mixpanel, Amplitude | MIT | +| 19 | Uptime Kuma | Monitoring | Pingdom, UptimeRobot | MIT | +| 20 | Docuseal | E-Signatures | DocuSign | AGPL-3.0 | +| 21 | Formbricks | Surveys | Typeform | AGPL-3.0 | +| 22 | Typebot | Chatbots | Landbot | AGPL-3.0 | +| 23 | Cal.com | Scheduling | Calendly | AGPL-3.0 | +| 24 | Hoppscotch | API Testing | Postman | MIT | +| 25 | Infisical | Secrets Management | Vault, Doppler | MIT | +| 26 | Lago | Billing | Chargebee, Stripe Billing | AGPL-3.0 | +| 27 | Windmill | Automation | Retool, Airplane | AGPL-3.0 | +| 28 | Trigger.dev | Background Jobs | Inngest | Apache-2.0 | +| 29 | Rallly | Scheduling Polls | Doodle | AGPL-3.0 | +| 30 | Papermark | Document Sharing | DocSend | AGPL-3.0 | +| 31 | Documenso | E-Signatures | DocuSign | AGPL-3.0 | +| 32 | OpenStatus | Status Pages | Statuspage.io | MIT | +| 33 | Dub | Link Shortening | Bitly | AGPL-3.0 | +| 34 | Coolify | PaaS | Heroku, Vercel | Apache-2.0 | +| 35 | Gitea | Git Hosting | GitHub, GitLab | MIT | +| 36 | Logto | Auth | Auth0, Clerk | MPL-2.0 | +| 37 | SuperTokens | Auth | Auth0 | Apache-2.0 | +| 38 | Zitadel | Auth/IAM | Auth0, Okta | Apache-2.0 | +| 39 | Hanko | Passkeys | Auth0 | AGPL-3.0 | +| 40 | Listmonk | Newsletters | Mailchimp | AGPL-3.0 | +| 41 | Penpot | Design | Figma | MPL-2.0 | +| 42 | Teable | Database/Spreadsheet | Airtable | AGPL-3.0 | +| 43 | NocoDB | Database/Spreadsheet | Airtable | AGPL-3.0 | +| 44 | Twenty | CRM | Salesforce | AGPL-3.0 | +| 45 | Affine | Workspace | Notion | MIT | +| 46 | AppFlowy | Workspace | Notion | AGPL-3.0 | +| 47 | Plane | Project Management | Jira, Linear | AGPL-3.0 | +| 48 | Focalboard | Project Management | Trello, Asana | AGPL-3.0 | +| 49 | Heyform | Forms | Typeform | AGPL-3.0 | +| 50 | Answer | Q&A Platform | Stack Overflow | Apache-2.0 | + +### Tier 2 Continued + +| # | Project | Category | Replaces | License | +|---|---------|----------|----------|---------| +| 51 | Inbox Zero | Email Management | SaneBox | AGPL-3.0 | +| 52 | Requestly | API Debugging | Charles Proxy | Apache-2.0 | +| 53 | Flagsmith | Feature Flags | LaunchDarkly | BSD-3-Clause | +| 54 | GrowthBook | A/B Testing | Optimizely | MIT | +| 55 | Laudspeaker | Customer Journey | Braze | MIT | +| 56 | Webstudio | Website Builder | Webflow | MIT | +| 57 | Grist | Spreadsheet | Airtable | Apache-2.0 | +| 58 | Baserow | Database | Airtable | MIT | +| 59 | Krayin | CRM | Pipedrive | MIT | +| 60 | Monica | Personal CRM | - | AGPL-3.0 | +| 61 | Kimai | Time Tracking | Toggl, Harvest | AGPL-3.0 | +| 62 | Invoice Ninja | Invoicing | FreshBooks | AAL | +| 63 | Crater | Invoicing | Wave | AGPL-3.0 | +| 64 | Akaunting | Accounting | QuickBooks | GPL-3.0 | +| 65 | Killbill | Billing | Stripe Billing | Apache-2.0 | +| 66 | Medusa | E-commerce | Shopify | MIT | +| 67 | Saleor | E-commerce | Shopify | BSD-3-Clause | +| 68 | Vendure | E-commerce | Shopify | MIT | +| 69 | Bagisto | E-commerce | Magento | MIT | +| 70 | Sylius | E-commerce | Magento | MIT | + +### Tier 2 Continued (Infrastructure) + +| # | Project | Category | Replaces | License | +|---|---------|----------|----------|---------| +| 71 | MinIO | Object Storage | AWS S3 | AGPL-3.0 | +| 72 | SeaweedFS | File System | AWS EFS | Apache-2.0 | +| 73 | Meilisearch | Search | Algolia | MIT | +| 74 | Typesense | Search | Algolia | GPL-3.0 | +| 75 | Sonic | Search | Algolia | MPL-2.0 | +| 76 | Qdrant | Vector DB | Pinecone | Apache-2.0 | +| 77 | Weaviate | Vector DB | Pinecone | BSD-3-Clause | +| 78 | Milvus | Vector DB | Pinecone | Apache-2.0 | +| 79 | ClickHouse | Analytics DB | Snowflake | Apache-2.0 | +| 80 | TimescaleDB | Time Series DB | InfluxDB | Apache-2.0 | + +### Tier 2 Continued (DevTools) + +| # | Project | Category | Replaces | License | +|---|---------|----------|----------|---------| +| 81 | Gitpod | Cloud IDE | GitHub Codespaces | AGPL-3.0 | +| 82 | OpenHands | AI Coding | Cursor | MIT | +| 83 | Bolt.new | AI Builder | v0 | MIT | +| 84 | Firecrawl | Web Scraping | Apify | AGPL-3.0 | +| 85 | Crawlee | Web Scraping | Apify | Apache-2.0 | +| 86 | Sentry | Error Tracking | - | FSL | +| 87 | GlitchTip | Error Tracking | Sentry | MIT | +| 88 | Highlight | Session Replay | FullStory | Apache-2.0 | +| 89 | OpenReplay | Session Replay | FullStory | ELv2 | +| 90 | Aptabase | Mobile Analytics | Firebase Analytics | AGPL-3.0 | + +### Tier 3: Technically Possible (Needs Negotiation) + +| # | Project | Category | Replaces | License | +|---|---------|----------|----------|---------| +| 91 | Ghost | Publishing | Substack, Medium | MIT | +| 92 | Mattermost | Team Chat | Slack | MIT + EE | +| 93 | Rocket.Chat | Team Chat | Slack | MIT + EE | +| 94 | Jitsi | Video Calls | Zoom | Apache-2.0 | +| 95 | BigBlueButton | Video Conference | Zoom | LGPL-3.0 | +| 96 | GitLab | DevOps | GitHub | MIT + EE | +| 97 | Odoo | ERP | SAP, NetSuite | LGPL-3.0 | +| 98 | ERPNext | ERP | SAP | GPL-3.0 | +| 99 | Discourse | Forums | - | GPL-2.0 | +| 100 | Nextcloud | File Sync | Dropbox, GDrive | AGPL-3.0 | + +--- + +--- + +## Business Ideas Feature + +### Inspiration: Ideabrowser + +[Ideabrowser](https://www.ideabrowser.com/) (launched May 2025) shows that curated business ideas drive massive engagement: +- 669K visits with 704% growth in July 2025 +- Each idea = 50+ hours of research condensed into 10-minute read +- Includes market analysis, competitor research, execution strategies + +### Ideas for Each Project + +For each white-label platform, we provide curated business ideas with: + +1. **Target Market** — Who would buy this? +2. **Market Size** — How big is the opportunity? +3. **Why Now** — Trends making this viable +4. **Suggested Pricing** — What to charge +5. **Countries** — Geographic opportunities (regulatory, language, etc.) +6. **Difficulty** — Easy/Medium/Hard to execute +7. **Proof Signals** — Reddit threads, search trends, competitor gaps + +### Example: Plausible Analytics Ideas + +| Idea | Target | Market | Countries | +|------|--------|--------|-----------| +| HIPAA-Compliant Healthcare Analytics | Hospitals, health apps | $4.2B | USA | +| GDPR Analytics for EU E-commerce | Shopify stores in EU | 1.2M stores | Germany, France, NL | +| School/University Analytics | K-12, universities | 130K US schools | USA, UK, Australia | +| Privacy Analytics for Fintech | Banking apps, trading platforms | Growing | Worldwide | + +### Ideas Data Model + +```typescript +interface BusinessIdea { + id: string + project: Project + + // Core + title: string + slug: string + description: string + + // Market + target_market: string + market_size?: string + why_now: string + + // Execution + suggested_pricing: string + revenue_potential: string + difficulty: 'easy' | 'medium' | 'hard' + time_to_launch: string + + // Geographic + countries: string[] + country_specific_reasons?: string + + // Validation + search_volume?: number + competitor_count?: number + proof_signals: string[] + + // SEO + keywords: string[] +} +``` + +### Additional Programmatic SEO Pages + +| Page Type | URL Pattern | Count | +|-----------|-------------|-------| +| Ideas by project | `/projects/[slug]/ideas` | 100 | +| Ideas by country | `/ideas/country/[country]` | 30 | +| Ideas by industry | `/ideas/industry/[slug]` | 15 | +| Ideas by difficulty | `/ideas/difficulty/[level]` | 3 | +| Individual idea | `/ideas/[slug]` | 300+ | + +**Total additional pages: 400-500** + +--- + +## Revised Architecture: Single Next.js App + +### Why Single Repo? + +After researching [Payload CMS 3.0](https://payloadcms.com/posts/blog/payload-30-the-first-cms-that-installs-directly-into-any-nextjs-app), the recommended approach has changed: + +> **Payload 3.0 is the first CMS that installs directly into your Next.js /app folder** + +This means: +- No separate backend server needed +- No Express or Fastify required +- Built-in authentication (JWT, cookies, OAuth via Auth.js) +- Deploy entire stack to Vercel as one app +- No CORS configuration needed + +### Updated Architecture + +``` +projectwise/ # Single Next.js 15 + Payload 3.0 app +├── app/ +│ ├── (frontend)/ # Public pages (SSR/SSG) +│ │ ├── page.tsx # Homepage +│ │ ├── projects/ +│ │ │ ├── page.tsx # Project listing +│ │ │ └── [slug]/ +│ │ │ ├── page.tsx # Project detail +│ │ │ └── ideas/ +│ │ │ └── page.tsx # Ideas for this project +│ │ ├── ideas/ +│ │ │ ├── page.tsx # All ideas +│ │ │ ├── country/[country]/ +│ │ │ └── industry/[industry]/ +│ │ ├── experts/ +│ │ ├── category/[slug]/ +│ │ └── alternative/[slug]/ +│ │ +│ ├── (payload)/ # Payload CMS (admin + API) +│ │ ├── admin/[[...segments]]/ +│ │ │ └── page.tsx # Admin panel at /admin +│ │ └── api/[...slug]/ +│ │ └── route.ts # REST API at /api +│ │ +│ └── layout.tsx +│ +├── payload/ +│ ├── collections/ +│ │ ├── Projects.ts +│ │ ├── Ideas.ts # NEW +│ │ ├── Categories.ts +│ │ ├── Experts.ts +│ │ ├── Jobs.ts +│ │ └── Users.ts +│ ├── globals/ +│ │ └── Settings.ts +│ └── payload.config.ts +│ +├── components/ # Shared UI (shadcn/ui) +├── lib/ # Utilities +├── public/ # Static assets +├── tailwind.config.ts +├── next.config.js +└── package.json +``` + +### Deployment + +| Component | Service | Cost | +|-----------|---------|------| +| App (Next.js + Payload) | Vercel | Free tier | +| Database | Neon PostgreSQL | Free tier (0.5GB) | +| Media/Uploads | Vercel Blob | Free tier (1GB) | +| Domain | Cloudflare | ~$10/year | + +**Total MVP cost: ~$10/year** (domain only) + +### Authentication (Built into Payload) + +No need for separate auth service: + +```typescript +// payload.config.ts +export default buildConfig({ + collections: [ + { + slug: 'users', + auth: { + tokenExpiration: 7200, // 2 hours + verify: true, // Email verification + maxLoginAttempts: 5, // Lockout protection + lockTime: 600000, // 10 min lockout + }, + fields: [ + { name: 'role', type: 'select', options: ['admin', 'expert', 'operator'] }, + // ... + ], + }, + { + slug: 'experts', + auth: true, // Separate auth collection for experts + // ... + }, + ], +}) +``` + +### OAuth (GitHub) via Auth.js Plugin + +```typescript +// Using payload-authjs plugin +import { buildConfig } from 'payload' +import { authPlugin } from 'payload-authjs' +import GitHub from '@auth/core/providers/github' + +export default buildConfig({ + plugins: [ + authPlugin({ + providers: [ + GitHub({ + clientId: process.env.GITHUB_ID, + clientSecret: process.env.GITHUB_SECRET, + }), + ], + }), + ], +}) +``` + +--- + +## Next Steps + +1. **Set up single repository** + - [ ] Create new Next.js 15 project with Payload 3.0 + - [ ] Configure PostgreSQL (Neon) + - [ ] Set up Vercel deployment + +2. **Build data layer** + - [ ] Implement Payload collections (Projects, Ideas, Categories, Experts) + - [ ] Seed initial 30 projects with 2-3 ideas each + - [ ] Set up GitHub API integration for stats + +3. **Build frontend** + - [ ] Homepage with featured projects + - [ ] Project listing and detail pages + - [ ] Ideas pages (per project, by country, by industry) + - [ ] Interest forms (Expert + Operator waitlist) + +4. **Launch** + - [ ] Deploy to Vercel + - [ ] Submit to Product Hunt + - [ ] Execute launch plan + +--- + +## Migration Path (If Needed Later) + +If the single app becomes too large or we need to scale independently: + +``` +Phase 1: MVP (Single App) +───────────────────────── +projectwise/ # Everything in one Next.js app +Deploy: Vercel + +Phase 2: Scale (If Needed) +───────────────────────── +projectwise-web/ # Frontend only (static/SSG) +projectwise-cms/ # Payload CMS (API + Admin) +Deploy: Both on Vercel with CORS config +``` + +This is standard practice: **start simple, split when necessary**. + +--- + +*Document created: January 2026* +*Last updated: January 2026* +*Version: 1.1* diff --git a/docs/01-vision.md b/docs/01-vision.md new file mode 100644 index 0000000..8008096 --- /dev/null +++ b/docs/01-vision.md @@ -0,0 +1,211 @@ +# Vision & Problem Statement + +> **Mission:** Enable anyone to build a sustainable business on open source software. + +--- + +## The Problem + +### 1. Open Source Maintainers Are Burning Out + +| Statistic | Source | +|-----------|--------| +| **60%** of maintainers are unpaid | [ByteIota 2025](https://byteiota.com/open-source-maintainer-crisis-60-unpaid-burnout-hits-44/) | +| **60%** have quit or considered quitting | ByteIota 2025 | +| **44%** cite burnout as reason for leaving | ByteIota 2025 | +| **45%** say burnout is top challenge | Intel Survey 2023 | + +**Real-world impact:** +- Kubernetes Ingress NGINX retired due to maintainer burnout +- External Secrets Operator has only ONE active maintainer left +- Asahi Linux lead quit citing burnout + +### 2. AI Is Disrupting Developer Education + +Traditional income streams for developers are drying up: +- Stack Overflow traffic declining (AI answers questions) +- Tutorial/course creators losing to AI-generated content +- Documentation writers being replaced + +**Result:** Skilled developers need new ways to monetize their expertise. + +### 3. The "Commercialization Gap" + +Open source projects exist on a spectrum: + +``` +FREE PAID +│ │ +│ Self-hosted White-label Managed Enterprise │ +│ (DIY) (Resellable) Hosting Licenses │ +│ │ +└─────────────────────────────────────────────────────────────┘ + ▲ + │ + THE GAP + + No platform helps people navigate this spectrum + or connects them with implementation help. +``` + +--- + +## The Opportunity + +### WordPress Proved the Model + +The WordPress ecosystem is worth **$600+ billion** with clear layers: + +| Layer | Example | Value | +|-------|---------|-------| +| **Platform** | WordPress.org | Free, open source | +| **Managed Hosting** | WP Engine, Kinsta | $156B+ market | +| **Agencies** | 50,000+ worldwide | Implementation | +| **Freelancers** | Codeable, etc. | $20-100/hr | +| **End Customers** | Businesses | Pay for solutions | + +**Key insight:** WordPress didn't build all this. It emerged organically because the platform enabled it. + +### The Modern Equivalent Doesn't Exist + +For newer open source (Plausible, n8n, Cal.com, etc.): +- No central directory of "commercial-ready" projects +- No verified expert network for implementation +- No standardized way to find white-label options +- No connection between contributors and paid work + +--- + +## The Solution: Projectwise + +### What We're Building + +A curated directory of **commercial-ready open source software** that connects: + +``` +┌─────────────────────────────────────────────────────────────┐ +│ PROJECTWISE │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ PROJECTS EXPERTS OPERATORS │ +│ ───────── ─────── ───────── │ +│ Open source Contributors Entrepreneurs │ +│ with commercial who can deploy who run OSS │ +│ potential & customize as SaaS │ +│ │ +│ │ │ │ │ +│ └───────────────────┼────────────────────┘ │ +│ │ │ +│ PROJECTWISE.IO │ +│ Discovery + Trust │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +### Core Value Propositions + +| Audience | Value | +|----------|-------| +| **Projects** | Free promotion, more adoption, potential revenue share | +| **Experts** | Paid work, portfolio, verified contributor status | +| **Operators** | Curated software, trusted experts, business ideas | + +--- + +## Target Users + +### Primary: Operators (Demand Side) + +> "I want to start a SaaS business but don't want to build from scratch." + +- **Demographics:** Entrepreneurs, agency owners, technical founders +- **Geography:** Global, especially emerging markets (India, Brazil, Nigeria) +- **Budget:** $500-5,000 for implementation +- **Goal:** Launch a SaaS product quickly using proven software + +### Secondary: Experts (Supply Side) + +> "I contribute to open source. How do I get paid for my expertise?" + +- **Demographics:** Developers, former educators, Stack Overflow users +- **Skills:** Know specific OSS projects deeply (contributed code) +- **Availability:** Part-time or full-time freelance +- **Goal:** Monetize their open source knowledge + +### Tertiary: Projects (Platform Side) + +> "We want more adoption and potentially revenue from white-label." + +- **Demographics:** OSS maintainers, small teams, VC-backed startups +- **License:** MIT, Apache, BSD, or AGPL with commercial options +- **Goal:** Grow ecosystem, reduce support burden, generate revenue + +--- + +## Success Metrics + +### Phase 1 (MVP - Week 4) + +| Metric | Target | +|--------|--------| +| Projects listed | 50 | +| Weekly visitors | 500 | +| Expert signups | 20 | +| Operator interests | 10 | + +### Phase 2 (Growth - Week 8) + +| Metric | Target | +|--------|--------| +| Projects listed | 100 | +| Weekly visitors | 2,000 | +| Expert signups | 50 | +| Operator interests | 30 | +| First job posted | 1 | + +### Phase 3 (Traction - Week 12) + +| Metric | Target | +|--------|--------| +| Projects listed | 150 | +| Weekly visitors | 10,000 | +| Expert signups | 100 | +| Operator interests | 75 | +| Revenue (sponsorships) | $500/month | + +--- + +## What We're NOT Building + +| Not This | Why | +|----------|-----| +| Another "awesome list" | No curation, no commercial focus | +| GitHub alternative | We link to GitHub, not replace it | +| Hosting provider | We connect to Coolify, Railway, etc. | +| Freelance marketplace (Upwork) | Focused only on OSS implementation | +| VC-backed startup factory | Sustainable, indie-scale business | + +--- + +## The Evolution from Original Projectwise + +| Aspect | Original (2017) | New (2026) | +|--------|-----------------|------------| +| **Problem** | OSS needs design help | OSS needs sustainable business models | +| **Solution** | Connect designers | Connect projects + experts + operators | +| **Audience** | Designers | Entrepreneurs, developers | +| **Model** | Volunteer | Commercial (eventually) | +| **Tech** | React + Express + MongoDB | Next.js + Payload + PostgreSQL | + +--- + +## Long-Term Vision (2-3 Years) + +1. **The Index** — Definitive source for commercial OSS discovery +2. **The Network** — Verified experts for every major project +3. **The Marketplace** — Jobs, revenue sharing, partnerships +4. **The Standard** — "Projectwise Verified" badge for commercial-ready OSS + +--- + +*Last updated: January 2026* diff --git a/docs/02-market-research.md b/docs/02-market-research.md new file mode 100644 index 0000000..3872ed5 --- /dev/null +++ b/docs/02-market-research.md @@ -0,0 +1,374 @@ +# Market Research + +> Summary of research conducted on the open source commercialization landscape. + +--- + +## Table of Contents + +1. [Open Source Market Overview](#open-source-market-overview) +2. [The WordPress Ecosystem Model](#the-wordpress-ecosystem-model) +3. [Competitor Analysis](#competitor-analysis) +4. [Business Models in Open Source](#business-models-in-open-source) +5. [The Maintainer Crisis](#the-maintainer-crisis) +6. [AI's Impact on the Ecosystem](#ais-impact-on-the-ecosystem) +7. [Directory Site Case Study: OpenAlternative](#directory-site-case-study-openalternative) +8. [Key Insights](#key-insights) + +--- + +## Open Source Market Overview + +### Market Size + +| Metric | Value | Source | +|--------|-------|--------| +| Annual value of OSS | **$8.8 trillion** | Harvard Study | +| Organizations using OSS | **96%** increased or maintained use | OSI 2025 | +| SaaS market (2025) | **$300 billion** | Industry estimates | +| SaaS market (2032) | **$1.13 trillion** | Projected | + +### Key Trends + +1. **Open source is mission-critical** — 96% of organizations depend on it +2. **Governance lags adoption** — Most lack frameworks to manage OSS dependency +3. **Security underinvestment** — Companies take more than they give back +4. **Funding innovation** — New models emerging (Open Source Endowment, etc.) + +--- + +## The WordPress Ecosystem Model + +### Why WordPress Matters + +WordPress represents the most successful open source commercialization ever: + +| Metric | Value | +|--------|-------| +| Market share (all websites) | **43.4%** | +| Market share (CMS) | **62.8%** | +| Total websites powered | **518+ million** | +| Ecosystem value | **$596.7 billion** | +| Active plugins | **59,000+** | +| Free themes | **13,000+** | +| Agencies worldwide | **50,000+** | + +### The Layered Ecosystem + +``` +┌─────────────────────────────────────────────────────────────┐ +│ WORDPRESS ECOSYSTEM │ +├─────────────────────────────────────────────────────────────┤ +│ │ +│ Layer 1: PLATFORM (Free) │ +│ └── WordPress.org - GPL licensed, free forever │ +│ │ +│ Layer 2: MANAGED HOSTING ($156B+ market) │ +│ └── WP Engine, Kinsta, Flywheel, WordPress.com │ +│ │ +│ Layer 3: AGENCIES (50,000+) │ +│ └── WP VIP Partners, implementation specialists │ +│ │ +│ Layer 4: FREELANCERS │ +│ └── Codeable, Upwork specialists ($20-100/hr) │ +│ │ +│ Layer 5: END CUSTOMERS │ +│ └── Businesses paying $0 to $10,000+ for solutions │ +│ │ +└─────────────────────────────────────────────────────────────┘ +``` + +### Key Lesson + +WordPress.org (the foundation) didn't build hosting, agencies, or marketplaces. They emerged organically because the platform was: +- Free and open +- Easy to extend +- Had clear documentation +- Built trust over time + +**Our opportunity:** Accelerate this for modern OSS projects. + +--- + +## Competitor Analysis + +### Direct Competitors (Directories) + +| Platform | Focus | Monetization | Gap We Fill | +|----------|-------|--------------|-------------| +| [OpenAlternative](https://openalternative.co) | OSS alternatives to SaaS | Sponsored listings ($3.5k/mo) | No expert network, no commercial focus | +| [awesome-selfhosted](https://github.com/awesome-selfhosted/awesome-selfhosted) | Self-hosted software | None (GitHub list) | No curation, no commercial info | +| [AlternativeTo](https://alternativeto.net) | All software alternatives | Ads | Not OSS-focused, no implementation help | +| [Product Hunt](https://producthunt.com) | All products | Promoted listings | Not OSS-focused | + +### Adjacent Competitors (Expert Networks) + +| Platform | Focus | Model | Gap We Fill | +|----------|-------|-------|-------------| +| [Codeable](https://codeable.io) | WordPress developers | 17.5% commission | Only WordPress | +| [Toptal](https://toptal.com) | Elite freelancers | Premium pricing | Not OSS-specific | +| [Upwork](https://upwork.com) | All freelance | 5-20% commission | No OSS verification | + +### Adjacent Competitors (Hosting/Deployment) + +| Platform | Focus | Model | Gap We Fill | +|----------|-------|-------|-------------| +| [Coolify](https://coolify.io) | Self-hosting PaaS | Free + Cloud tier | No discovery, no experts | +| [Elestio](https://elest.io) | Managed OSS hosting | Per-service fees | No local operators, no revenue share | +| [Railway](https://railway.app) | App deployment | Usage-based | No OSS curation | + +### Adjacent Competitors (Funding) + +| Platform | Focus | Model | Gap We Fill | +|----------|-------|-------|-------------| +| [Open Collective](https://opencollective.com) | OSS funding | 10% of transactions | Donations, not commercial | +| [GitHub Sponsors](https://github.com/sponsors) | Developer funding | Direct donations | No business connection | +| [Tidelift](https://tidelift.com) | Enterprise subscriptions | $100-150/dev/year | B2B only, no individual operators | + +### Competitive Positioning + +``` + COMMERCIAL FOCUS + ▲ + │ + Projectwise ● + │ + Tidelift ● │ ● Codeable + │ + ──────────────────────────┼──────────────────────────► + GENERAL │ SPECIALIZED + │ + OpenAlternative ● │ + │ + awesome-selfhosted ● │ ● Coolify + │ + │ + TECHNICAL FOCUS +``` + +**Our position:** Commercial focus + Specialized (OSS only) + +--- + +## Business Models in Open Source + +### Open Core Model + +Used by: Cal.com, Dub.co, GitLab, Metabase + +``` +┌─────────────────────────────────────┐ +│ OPEN CORE MODEL │ +├─────────────────────────────────────┤ +│ │ +│ Core (99%) Enterprise (1%) │ +│ ─────────── ─────────────── │ +│ AGPL/MIT Commercial │ +│ Self-hostable SSO, SAML │ +│ Full features Multi-tenant │ +│ Community Priority support│ +│ │ +└─────────────────────────────────────┘ +``` + +### Fair Source / Business Source License + +Used by: Sentry, CockroachDB, MariaDB + +- Free for limited use +- Paid for commercial scale +- Converts to open source after time delay (e.g., 3 years) + +### Managed Hosting Model + +Used by: Ghost, Plausible, Umami + +``` +Self-hosted: Free (you run it) +Cloud/Managed: Paid (they run it) +``` + +### Support/Services Model + +Used by: Red Hat, Canonical + +- Software is free +- Pay for support, consulting, training + +### White-Label Model (Emerging) + +Used by: Dittofeed, n8n, Appsmith + +- Core is open source +- Paid license for embedding/white-labeling +- Target: SaaS companies wanting to add features + +**This is our primary focus.** + +--- + +## The Maintainer Crisis + +### Key Statistics + +| Statistic | Source | +|-----------|--------| +| 60% of maintainers are unpaid | ByteIota 2025 | +| 60% have quit or considered quitting | ByteIota 2025 | +| 44% cite burnout as reason | ByteIota 2025 | +| 45% say burnout is #1 challenge | Intel Survey | + +### Notable Burnout Cases (2024-2025) + +| Project | Impact | +|---------|--------| +| Kubernetes Ingress NGINX | Retired, no security patches after March 2026 | +| External Secrets Operator | Down to 1 active maintainer | +| Asahi Linux | Lead developer quit | +| ESLint | Funding crisis, near shutdown | + +### The Core Problem + +> "Money doesn't write code. Money doesn't review pull requests. Companies owe projects both financial resources AND engineering hours." + +### What's Being Tried + +| Solution | Approach | Limitation | +|----------|----------|------------| +| Open Collective | Donations | Not sustainable income | +| GitHub Sponsors | Direct funding | Low adoption | +| Tidelift | Enterprise subscriptions | Only works for big projects | +| Open Source Endowment | Grants up to $250k | Limited reach | + +### Our Angle + +Instead of asking companies to donate, we create a **commercial ecosystem** where: +1. Operators pay experts for implementation +2. Experts become advocates for projects +3. Projects get adoption without support burden +4. Optional: Revenue sharing back to maintainers + +--- + +## AI's Impact on the Ecosystem + +### Design/UI Generation + +| Tool | What It Does | +|------|--------------| +| [v0 by Vercel](https://v0.app) | Text → React/Tailwind components | +| [Figma AI](https://figma.com) | Prompt → Figma designs | +| [Galileo](https://usegalileo.ai) | AI-generated UI screens | + +**Impact:** "Need a designer for OSS" is less relevant. AI can generate UI. + +### Code Generation + +| Tool | Impact | +|------|--------| +| GitHub Copilot | Autocomplete, boilerplate | +| Cursor | AI-native IDE | +| Claude Code | Full implementation assistance | + +**Impact:** Building is easier, but understanding existing codebases still requires human expertise. + +### What AI CAN'T Replace (Yet) + +1. **Domain expertise** — Knowing why a project works a certain way +2. **Integration** — Connecting OSS to specific business contexts +3. **Customization** — Adapting for unique requirements +4. **Trust** — Verified humans for critical deployments + +**Our opportunity:** The "last mile" of OSS implementation still needs humans. + +--- + +## Directory Site Case Study: OpenAlternative + +### Background + +- **Founder:** Piotr Kulpinski +- **Launched:** 2024 +- **Built in:** 48 hours +- **Stack:** Astro → Next.js, Cloudflare + +### Growth Metrics + +| Metric | Value | +|--------|-------| +| Week 1 visitors | 100,000 | +| Product Hunt | 3rd place, 500+ upvotes | +| Hacker News | #1 for several hours | +| Current monthly visitors | 70,000 | +| Current monthly revenue | $3,000-3,500 | +| MRR from featured listings | $1,200 | +| Total visitors (2025) | 1M+ | + +### What Worked + +1. **Programmatic SEO** — Generated pages from Airtable data (categories, tags) +2. **Simple MVP** — No search/filtering initially, just listings +3. **Free hosting** — Cloudflare static site ($0/month) +4. **Consistency** — Daily updates, automation +5. **Community launch** — Product Hunt + HN on same day + +### Key Quote + +> "The best competitive advantage is consistency and showing up every day. With AI capable of cloning any website within minutes, the only way to maintain an edge is by being persistent." + +### What We Learn + +- Start simple (48 hours to MVP) +- Programmatic SEO works +- Featured listings = revenue +- Community launch matters +- Consistency > perfection + +--- + +## Key Insights + +### 1. The Market is Validated + +- WordPress proves the model ($600B ecosystem) +- OpenAlternative proves demand (1M+ visitors) +- Maintainer crisis proves the need + +### 2. The Gap is Real + +No platform currently: +- Focuses on **commercial** OSS +- Connects **experts** with **operators** +- Provides **business ideas** for each project +- Offers **verified** contributor status + +### 3. Timing is Right + +- AI disruption creating displaced experts +- Maintainer burnout at crisis levels +- "Build in public" culture normalized +- Remote work enables global operators + +### 4. Distribution Strategy is Key + +With 500 followers, we can't rely on audience. We must: +- Get projects to share (borrowed audience) +- Build SEO moat (programmatic pages) +- Be consistent (daily content) +- Provide genuine value first + +--- + +## Sources + +- [WordPress Economy Study - WP Engine](https://wpengine.com/resources/value-of-wordpress-worlds-first-study-of-wordpress-economy/) +- [WordPress Market Share 2025 - ThemeHunk](https://themehunk.com/wordpress-market-share/) +- [Open Source Maintainer Crisis - ByteIota](https://byteiota.com/open-source-maintainer-crisis-60-unpaid-burnout-hits-44/) +- [OpenAlternative Launch - Piotr Kulpinski](https://kulpinski.dev/posts/openalternative-launch/) +- [Headless CMS Comparison](https://www.glukhov.org/post/2025/11/headless-cms-comparison-strapi-directus-payload/) +- [Payload CMS 3.0 Announcement](https://payloadcms.com/posts/blog/payload-30-the-first-cms-that-installs-directly-into-any-nextjs-app) +- [Dittofeed - YC](https://www.ycombinator.com/companies/dittofeed) + +--- + +*Last updated: January 2026* diff --git a/docs/03-architecture.md b/docs/03-architecture.md new file mode 100644 index 0000000..50974ff --- /dev/null +++ b/docs/03-architecture.md @@ -0,0 +1,839 @@ +# Architecture & Tech Stack + +> Technical architecture for Projectwise — a Next.js 15 + Payload CMS 3.0 application. + +--- + +## Table of Contents + +1. [Architecture Overview](#architecture-overview) +2. [Tech Stack](#tech-stack) +3. [Project Structure](#project-structure) +4. [Data Models](#data-models) +5. [API Design](#api-design) +6. [Authentication](#authentication) +7. [Deployment](#deployment) +8. [External Integrations](#external-integrations) + +--- + +## Architecture Overview + +### Single-App Architecture + +Payload CMS 3.0 installs directly into Next.js, eliminating the need for separate frontend/backend repos. + +``` +┌─────────────────────────────────────────────────────────────────────┐ +│ PROJECTWISE ARCHITECTURE │ +├─────────────────────────────────────────────────────────────────────┤ +│ │ +│ ┌─────────────────────────────────────────────────────────────┐ │ +│ │ NEXT.JS 15 APP │ │ +│ ├─────────────────────────────────────────────────────────────┤ │ +│ │ │ │ +│ │ /app │ │ +│ │ ├── (frontend)/ # Public pages (SSR/SSG) │ │ +│ │ │ ├── / # Homepage │ │ +│ │ │ ├── /projects # Project listings │ │ +│ │ │ ├── /experts # Expert profiles │ │ +│ │ │ ├── /ideas # Business ideas │ │ +│ │ │ └── /category # Category pages │ │ +│ │ │ │ │ +│ │ └── (payload)/ # CMS (admin + API) │ │ +│ │ ├── /admin # Admin panel │ │ +│ │ └── /api # REST + GraphQL │ │ +│ │ │ │ +│ └─────────────────────────────────────────────────────────────┘ │ +│ │ │ +│ ▼ │ +│ ┌─────────────────────────────────────────────────────────────┐ │ +│ │ PAYLOAD CMS 3.0 │ │ +│ ├─────────────────────────────────────────────────────────────┤ │ +│ │ Collections: Projects, Categories, Experts, Ideas, Users │ │ +│ │ Globals: Site Settings, Featured Projects │ │ +│ │ Auth: Built-in JWT + OAuth │ │ +│ │ Media: Image/file handling │ │ +│ └─────────────────────────────────────────────────────────────┘ │ +│ │ │ +│ ▼ │ +│ ┌─────────────────────────────────────────────────────────────┐ │ +│ │ POSTGRESQL (Neon) │ │ +│ └─────────────────────────────────────────────────────────────┘ │ +│ │ +└─────────────────────────────────────────────────────────────────────┘ +``` + +### Why Single-App? + +| Benefit | Description | +|---------|-------------| +| **Simpler deployment** | One Vercel project | +| **No CORS issues** | Frontend and API same origin | +| **Shared types** | TypeScript types across app | +| **Local API** | No HTTP overhead for internal calls | +| **Faster development** | Single codebase to manage | + +--- + +## Tech Stack + +### Core Framework + +| Layer | Technology | Version | Purpose | +|-------|------------|---------|---------| +| **Framework** | Next.js | 15.x | React framework with App Router | +| **CMS** | Payload CMS | 3.x | Headless CMS, admin panel | +| **Language** | TypeScript | 5.x | Type safety | +| **Runtime** | Node.js | 20.x LTS | Server runtime | + +### Frontend + +| Layer | Technology | Purpose | +|-------|------------|---------| +| **Styling** | Tailwind CSS 4 | Utility-first CSS | +| **Components** | shadcn/ui | Pre-built accessible components | +| **Icons** | Lucide React | Icon library | +| **Forms** | React Hook Form + Zod | Form handling + validation | +| **Data Fetching** | TanStack Query | Server state management | + +### Backend/CMS + +| Layer | Technology | Purpose | +|-------|------------|---------| +| **CMS** | Payload CMS 3.0 | Content management | +| **Database** | PostgreSQL | Primary data store | +| **ORM** | Drizzle (via Payload) | Database queries | +| **Auth** | Payload Auth + Auth.js | Authentication | +| **Media** | Vercel Blob / Cloudinary | Image storage | + +### Infrastructure + +| Service | Provider | Tier | +|---------|----------|------| +| **Hosting** | Vercel | Free | +| **Database** | Neon PostgreSQL | Free (0.5GB) | +| **Media Storage** | Vercel Blob | Free (1GB) | +| **Domain** | Cloudflare | ~$10/year | +| **Analytics** | Plausible (self-hosted) | Free | + +### Development Tools + +| Tool | Purpose | +|------|---------| +| **Package Manager** | pnpm | Fast, disk-efficient | +| **Linting** | ESLint + Prettier | Code quality | +| **Testing** | Vitest + Playwright | Unit + E2E tests | +| **Git Hooks** | Husky + lint-staged | Pre-commit checks | + +--- + +## Project Structure + +``` +projectwise/ +├── app/ +│ ├── (frontend)/ # Public routes (route group) +│ │ ├── page.tsx # Homepage +│ │ ├── layout.tsx # Frontend layout +│ │ ├── projects/ +│ │ │ ├── page.tsx # /projects - listing +│ │ │ └── [slug]/ +│ │ │ ├── page.tsx # /projects/[slug] - detail +│ │ │ └── ideas/ +│ │ │ └── page.tsx # /projects/[slug]/ideas +│ │ ├── category/ +│ │ │ └── [slug]/ +│ │ │ └── page.tsx # /category/[slug] +│ │ ├── alternative/ +│ │ │ └── [slug]/ +│ │ │ └── page.tsx # /alternative/[slug] +│ │ ├── experts/ +│ │ │ ├── page.tsx # /experts - listing +│ │ │ ├── join/ +│ │ │ │ └── page.tsx # /experts/join - signup form +│ │ │ └── [username]/ +│ │ │ └── page.tsx # /experts/[username] - profile +│ │ ├── ideas/ +│ │ │ ├── page.tsx # /ideas - all ideas +│ │ │ ├── country/ +│ │ │ │ └── [country]/ +│ │ │ │ └── page.tsx # /ideas/country/[country] +│ │ │ └── industry/ +│ │ │ └── [industry]/ +│ │ │ └── page.tsx # /ideas/industry/[industry] +│ │ ├── submit/ +│ │ │ └── page.tsx # /submit - project submission +│ │ └── about/ +│ │ └── page.tsx # /about +│ │ +│ ├── (payload)/ # Payload routes (route group) +│ │ ├── admin/ +│ │ │ └── [[...segments]]/ +│ │ │ └── page.tsx # /admin - CMS admin panel +│ │ └── api/ +│ │ └── [...slug]/ +│ │ └── route.ts # /api/* - REST API +│ │ +│ ├── layout.tsx # Root layout +│ └── globals.css # Global styles +│ +├── payload/ +│ ├── collections/ +│ │ ├── Projects.ts # Projects collection +│ │ ├── Categories.ts # Categories collection +│ │ ├── Experts.ts # Experts collection +│ │ ├── Ideas.ts # Business ideas collection +│ │ ├── Contributors.ts # GitHub contributors +│ │ ├── Jobs.ts # Job postings (V3) +│ │ ├── Interests.ts # Waitlist signups +│ │ └── Users.ts # Admin users +│ ├── globals/ +│ │ ├── Settings.ts # Site-wide settings +│ │ └── Featured.ts # Featured projects +│ ├── hooks/ # Payload hooks +│ │ └── syncGitHub.ts # Sync GitHub stats +│ └── payload.config.ts # Main Payload config +│ +├── components/ +│ ├── ui/ # shadcn/ui components +│ ├── projects/ +│ │ ├── ProjectCard.tsx +│ │ ├── ProjectGrid.tsx +│ │ └── ProjectDetail.tsx +│ ├── experts/ +│ │ ├── ExpertCard.tsx +│ │ └── ExpertProfile.tsx +│ ├── ideas/ +│ │ ├── IdeaCard.tsx +│ │ └── IdeaList.tsx +│ ├── forms/ +│ │ ├── ExpertSignupForm.tsx +│ │ ├── OperatorInterestForm.tsx +│ │ └── ProjectSubmitForm.tsx +│ └── layout/ +│ ├── Header.tsx +│ ├── Footer.tsx +│ └── Sidebar.tsx +│ +├── lib/ +│ ├── payload.ts # Payload client +│ ├── github.ts # GitHub API helpers +│ ├── utils.ts # General utilities +│ └── constants.ts # App constants +│ +├── public/ +│ ├── images/ +│ └── fonts/ +│ +├── docs/ # Documentation (this folder) +│ +├── .env.example +├── .env.local +├── next.config.js +├── payload.config.ts +├── tailwind.config.ts +├── tsconfig.json +└── package.json +``` + +--- + +## Data Models + +### Projects Collection + +```typescript +// payload/collections/Projects.ts +import { CollectionConfig } from 'payload' + +export const Projects: CollectionConfig = { + slug: 'projects', + admin: { + useAsTitle: 'name', + defaultColumns: ['name', 'tier', 'status', 'stars'], + }, + fields: [ + // Basic Info + { name: 'name', type: 'text', required: true }, + { name: 'slug', type: 'text', required: true, unique: true }, + { name: 'tagline', type: 'text', required: true, maxLength: 150 }, + { name: 'description', type: 'richText', required: true }, + { name: 'logo', type: 'upload', relationTo: 'media' }, + { name: 'screenshot', type: 'upload', relationTo: 'media' }, + + // Links + { name: 'website_url', type: 'text', required: true }, + { name: 'github_url', type: 'text', required: true }, + { name: 'docs_url', type: 'text' }, + { name: 'demo_url', type: 'text' }, + + // Classification + { + name: 'categories', + type: 'relationship', + relationTo: 'categories', + hasMany: true, + required: true, + }, + { + name: 'alternatives_to', + type: 'array', + fields: [{ name: 'name', type: 'text' }], + }, + + // License + { + name: 'license', + type: 'select', + options: [ + { label: 'MIT', value: 'MIT' }, + { label: 'Apache 2.0', value: 'Apache-2.0' }, + { label: 'BSD 3-Clause', value: 'BSD-3-Clause' }, + { label: 'AGPL 3.0', value: 'AGPL-3.0' }, + { label: 'GPL 3.0', value: 'GPL-3.0' }, + { label: 'ISC', value: 'ISC' }, + { label: 'MPL 2.0', value: 'MPL-2.0' }, + { label: 'Other', value: 'Other' }, + ], + required: true, + }, + { name: 'license_url', type: 'text' }, + + // Commercial Readiness + { + name: 'tier', + type: 'select', + options: [ + { label: 'Tier 1: Reseller-Ready', value: '1' }, + { label: 'Tier 2: Operator-Friendly', value: '2' }, + { label: 'Tier 3: Technically Possible', value: '3' }, + ], + required: true, + }, + { name: 'has_white_label', type: 'checkbox', defaultValue: false }, + { name: 'has_multi_tenancy', type: 'checkbox', defaultValue: false }, + { name: 'has_official_support', type: 'checkbox', defaultValue: false }, + { name: 'has_cloud_version', type: 'checkbox', defaultValue: false }, + { name: 'pricing_url', type: 'text' }, + + // Deployment + { + name: 'deploy_options', + type: 'group', + fields: [ + { name: 'docker', type: 'checkbox', defaultValue: false }, + { name: 'docker_url', type: 'text' }, + { name: 'coolify', type: 'checkbox', defaultValue: false }, + { name: 'coolify_url', type: 'text' }, + { name: 'railway', type: 'checkbox', defaultValue: false }, + { name: 'railway_url', type: 'text' }, + { name: 'elestio', type: 'checkbox', defaultValue: false }, + { name: 'elestio_url', type: 'text' }, + ], + }, + { name: 'estimated_hosting_cost', type: 'text' }, + + // GitHub Stats (auto-synced) + { + name: 'github_stats', + type: 'group', + admin: { readOnly: true }, + fields: [ + { name: 'stars', type: 'number', defaultValue: 0 }, + { name: 'forks', type: 'number', defaultValue: 0 }, + { name: 'open_issues', type: 'number', defaultValue: 0 }, + { name: 'last_commit', type: 'date' }, + { name: 'language', type: 'text' }, + { name: 'contributors_count', type: 'number', defaultValue: 0 }, + ], + }, + + // Contributors + { + name: 'contributors', + type: 'relationship', + relationTo: 'contributors', + hasMany: true, + }, + + // Metadata + { name: 'featured', type: 'checkbox', defaultValue: false }, + { + name: 'status', + type: 'select', + options: [ + { label: 'Draft', value: 'draft' }, + { label: 'Published', value: 'published' }, + { label: 'Archived', value: 'archived' }, + ], + defaultValue: 'draft', + required: true, + }, + ], +} +``` + +### Categories Collection + +```typescript +// payload/collections/Categories.ts +export const Categories: CollectionConfig = { + slug: 'categories', + admin: { useAsTitle: 'name' }, + fields: [ + { name: 'name', type: 'text', required: true }, + { name: 'slug', type: 'text', required: true, unique: true }, + { name: 'description', type: 'textarea' }, + { name: 'icon', type: 'text' }, // Lucide icon name + { + name: 'projects_count', + type: 'number', + admin: { readOnly: true }, + defaultValue: 0, + }, + ], +} +``` + +### Ideas Collection + +```typescript +// payload/collections/Ideas.ts +export const Ideas: CollectionConfig = { + slug: 'ideas', + admin: { useAsTitle: 'title' }, + fields: [ + { name: 'title', type: 'text', required: true }, + { name: 'slug', type: 'text', required: true, unique: true }, + { name: 'description', type: 'richText', required: true }, + + // Linked project + { + name: 'project', + type: 'relationship', + relationTo: 'projects', + required: true, + }, + + // Market analysis + { name: 'target_market', type: 'text', required: true }, + { name: 'market_size', type: 'text' }, + { name: 'why_now', type: 'textarea', required: true }, + + // Execution + { name: 'suggested_pricing', type: 'text', required: true }, + { name: 'revenue_potential', type: 'text' }, + { + name: 'difficulty', + type: 'select', + options: [ + { label: 'Easy', value: 'easy' }, + { label: 'Medium', value: 'medium' }, + { label: 'Hard', value: 'hard' }, + ], + required: true, + }, + { name: 'time_to_launch', type: 'text' }, + + // Geographic + { + name: 'countries', + type: 'array', + fields: [{ name: 'country', type: 'text' }], + }, + { name: 'country_reasons', type: 'textarea' }, + + // Validation + { name: 'search_volume', type: 'number' }, + { name: 'competitor_count', type: 'number' }, + { + name: 'proof_signals', + type: 'array', + fields: [{ name: 'signal', type: 'text' }], + }, + + // SEO + { + name: 'keywords', + type: 'array', + fields: [{ name: 'keyword', type: 'text' }], + }, + + // Status + { + name: 'status', + type: 'select', + options: [ + { label: 'Draft', value: 'draft' }, + { label: 'Published', value: 'published' }, + ], + defaultValue: 'draft', + }, + ], +} +``` + +### Experts Collection + +```typescript +// payload/collections/Experts.ts +export const Experts: CollectionConfig = { + slug: 'experts', + auth: true, // Enables authentication for this collection + admin: { useAsTitle: 'name' }, + fields: [ + { name: 'name', type: 'text', required: true }, + { name: 'avatar', type: 'upload', relationTo: 'media' }, + { name: 'bio', type: 'textarea' }, + + // Links + { name: 'github_url', type: 'text', required: true }, + { name: 'linkedin_url', type: 'text' }, + { name: 'website_url', type: 'text' }, + { name: 'calendly_url', type: 'text' }, + + // Expertise + { + name: 'projects_expertise', + type: 'relationship', + relationTo: 'projects', + hasMany: true, + }, + { + name: 'experience_level', + type: 'select', + options: [ + { label: 'Contributor', value: 'contributor' }, + { label: 'Expert', value: 'expert' }, + { label: 'Maintainer', value: 'maintainer' }, + ], + }, + + // Availability + { + name: 'status', + type: 'select', + options: [ + { label: 'Available', value: 'available' }, + { label: 'Busy', value: 'busy' }, + { label: 'Not Available', value: 'not_available' }, + ], + defaultValue: 'available', + }, + { name: 'hourly_rate', type: 'number' }, + { name: 'location', type: 'text' }, + { name: 'timezone', type: 'text' }, + { + name: 'languages', + type: 'array', + fields: [{ name: 'language', type: 'text' }], + }, + + // Verification + { name: 'verified_contributor', type: 'checkbox', defaultValue: false }, + { name: 'verified_at', type: 'date' }, + + // Stats + { name: 'implementations_count', type: 'number', defaultValue: 0 }, + + // Approval + { + name: 'approval_status', + type: 'select', + options: [ + { label: 'Pending', value: 'pending' }, + { label: 'Approved', value: 'approved' }, + { label: 'Rejected', value: 'rejected' }, + ], + defaultValue: 'pending', + }, + ], +} +``` + +### Interest Forms Collection + +```typescript +// payload/collections/Interests.ts +export const Interests: CollectionConfig = { + slug: 'interests', + admin: { useAsTitle: 'email' }, + fields: [ + { + name: 'type', + type: 'select', + options: [ + { label: 'Expert', value: 'expert' }, + { label: 'Operator', value: 'operator' }, + { label: 'Project', value: 'project' }, + ], + required: true, + }, + { name: 'name', type: 'text', required: true }, + { name: 'email', type: 'email', required: true }, + { name: 'github_username', type: 'text' }, + { name: 'company', type: 'text' }, + { name: 'project_interested', type: 'text' }, + { name: 'location', type: 'text' }, + { name: 'message', type: 'textarea' }, + { + name: 'status', + type: 'select', + options: [ + { label: 'New', value: 'new' }, + { label: 'Contacted', value: 'contacted' }, + { label: 'Converted', value: 'converted' }, + { label: 'Declined', value: 'declined' }, + ], + defaultValue: 'new', + }, + ], +} +``` + +--- + +## API Design + +### REST API (Auto-generated by Payload) + +| Endpoint | Method | Description | +|----------|--------|-------------| +| `/api/projects` | GET | List all projects | +| `/api/projects/:id` | GET | Get single project | +| `/api/projects` | POST | Create project (admin) | +| `/api/categories` | GET | List all categories | +| `/api/experts` | GET | List approved experts | +| `/api/ideas` | GET | List all ideas | +| `/api/interests` | POST | Submit interest form | + +### GraphQL (Also auto-generated) + +```graphql +query GetProject($slug: String!) { + Projects(where: { slug: { equals: $slug } }) { + docs { + name + tagline + description + categories { + name + slug + } + github_stats { + stars + forks + } + contributors { + github_username + avatar_url + } + } + } +} +``` + +--- + +## Authentication + +### Payload Built-in Auth + +```typescript +// payload.config.ts +export default buildConfig({ + collections: [ + { + slug: 'users', + auth: { + tokenExpiration: 7200, // 2 hours + verify: true, + maxLoginAttempts: 5, + lockTime: 600000, // 10 minutes + }, + fields: [ + { + name: 'role', + type: 'select', + options: ['admin', 'editor'], + required: true, + defaultValue: 'editor', + }, + ], + }, + ], +}) +``` + +### GitHub OAuth (V2+) + +```typescript +// Using Auth.js plugin for Payload +import { authPlugin } from 'payload-authjs' +import GitHub from '@auth/core/providers/github' + +export default buildConfig({ + plugins: [ + authPlugin({ + providers: [ + GitHub({ + clientId: process.env.GITHUB_ID, + clientSecret: process.env.GITHUB_SECRET, + }), + ], + }), + ], +}) +``` + +--- + +## Deployment + +### Vercel Configuration + +```javascript +// next.config.js +/** @type {import('next').NextConfig} */ +const nextConfig = { + experimental: { + reactCompiler: true, + }, + images: { + remotePatterns: [ + { hostname: 'avatars.githubusercontent.com' }, + { hostname: 'github.com' }, + ], + }, +} + +export default nextConfig +``` + +### Environment Variables + +```bash +# .env.example + +# Database +DATABASE_URI=postgresql://... + +# Payload +PAYLOAD_SECRET=your-secret-key + +# GitHub OAuth (V2+) +GITHUB_ID=your-github-client-id +GITHUB_SECRET=your-github-client-secret + +# GitHub API (for stats sync) +GITHUB_TOKEN=your-github-token + +# Media storage +BLOB_READ_WRITE_TOKEN=your-vercel-blob-token + +# Analytics +NEXT_PUBLIC_PLAUSIBLE_DOMAIN=projectwise.io +``` + +### Deployment Checklist + +- [ ] Create Vercel project +- [ ] Add Neon PostgreSQL integration +- [ ] Configure environment variables +- [ ] Enable Vercel Blob storage +- [ ] Set up custom domain (projectwise.io) +- [ ] Configure Cloudflare DNS + +--- + +## External Integrations + +### GitHub API + +Purpose: Sync stars, forks, contributors for each project + +```typescript +// lib/github.ts +export async function getRepoStats(owner: string, repo: string) { + const response = await fetch( + `https://api.github.com/repos/${owner}/${repo}`, + { + headers: { + Authorization: `Bearer ${process.env.GITHUB_TOKEN}`, + }, + } + ) + return response.json() +} + +export async function getContributors(owner: string, repo: string) { + const response = await fetch( + `https://api.github.com/repos/${owner}/${repo}/contributors`, + { + headers: { + Authorization: `Bearer ${process.env.GITHUB_TOKEN}`, + }, + } + ) + return response.json() +} +``` + +### Screenshot API (V2+) + +Purpose: Auto-capture landing page screenshots + +```typescript +// lib/screenshot.ts +export async function captureScreenshot(url: string): Promise { + const apiKey = process.env.SCREENSHOTONE_API_KEY + const screenshotUrl = `https://api.screenshotone.com/take?url=${encodeURIComponent(url)}&viewport_width=1280&viewport_height=800&format=webp&access_key=${apiKey}` + + const response = await fetch(screenshotUrl) + const blob = await response.blob() + + // Upload to Vercel Blob + const { url: blobUrl } = await put(`screenshots/${Date.now()}.webp`, blob, { + access: 'public', + }) + + return blobUrl +} +``` + +--- + +## Performance Considerations + +### Static Generation + +Use `generateStaticParams` for project/category pages: + +```typescript +// app/(frontend)/projects/[slug]/page.tsx +export async function generateStaticParams() { + const payload = await getPayloadClient() + const projects = await payload.find({ + collection: 'projects', + where: { status: { equals: 'published' } }, + }) + + return projects.docs.map((project) => ({ + slug: project.slug, + })) +} +``` + +### Caching Strategy + +| Data | Cache Duration | Revalidation | +|------|----------------|--------------| +| Project listings | 1 hour | On-demand | +| Project detail | 1 hour | On-demand | +| GitHub stats | 6 hours | Cron job | +| Categories | 24 hours | On-demand | + +--- + +*Last updated: January 2026* diff --git a/docs/04-roadmap.md b/docs/04-roadmap.md new file mode 100644 index 0000000..b27fa22 --- /dev/null +++ b/docs/04-roadmap.md @@ -0,0 +1,360 @@ +# Product Roadmap + +> Phased approach to building Projectwise, from MVP to full marketplace. + +--- + +## Overview + +| Phase | Focus | Duration | Key Deliverable | +|-------|-------|----------|-----------------| +| **V1** | MVP Directory | Week 1-2 | Static project listings | +| **V2** | Contributors + Forms | Week 3-4 | Interest capture | +| **V3** | Ideas Feature | Week 5-6 | Business ideas per project | +| **V4** | Launch Campaign | Week 7-8 | Public launch, 50 projects | + +--- + +## V1: MVP Directory + +> **Goal:** Get something live. Validate interest with minimal effort. + +### Deliverables + +| Feature | Priority | Description | +|---------|----------|-------------| +| Project listings | P0 | 20 curated commercial-ready OSS projects | +| Category pages | P0 | Analytics, CRM, CMS, etc. | +| Project detail pages | P0 | Name, description, license, links, tier | +| Basic search | P1 | Filter by category, tier | +| Responsive design | P1 | Mobile-friendly | + +### Technical Tasks + +``` +Week 1: +├── Set up Next.js 15 + Payload CMS 3.0 +├── Configure PostgreSQL (Neon) +├── Deploy to Vercel +├── Create Payload collections (Projects, Categories) +└── Build basic UI components + +Week 2: +├── Add 20 seed projects +├── Create category pages +├── Add project detail pages +├── Implement basic filtering +└── Launch V1 (soft launch) +``` + +### Data Model (V1) + +```typescript +// Projects collection (minimal) +{ + name: string; + slug: string; + tagline: string; + description: richText; + logo: upload; + category: relationship; + tier: select; // Tier 1, 2, or 3 + license: string; + githubUrl: string; + websiteUrl: string; + selfHostable: boolean; + whiteLabelReady: boolean; + featured: boolean; +} + +// Categories collection +{ + name: string; + slug: string; + description: string; + icon: string; +} +``` + +### Success Criteria + +- [ ] 20 projects listed +- [ ] Site loads in < 2 seconds +- [ ] All pages indexed by Google +- [ ] 100 organic visitors in first week + +--- + +## V2: Contributors + Forms + +> **Goal:** Capture interest from experts and operators. Validate demand. + +### Deliverables + +| Feature | Priority | Description | +|---------|----------|-------------| +| Expert interest form | P0 | "I can help with this project" | +| Operator interest form | P0 | "I want to run this as SaaS" | +| Contributor badges | P1 | Show GitHub contributors on projects | +| Email capture | P1 | Newsletter signup | +| Admin dashboard | P1 | View submissions in Payload | + +### Technical Tasks + +``` +Week 3: +├── Add Experts collection (interest form) +├── Add Interests collection (operator form) +├── Integrate GitHub API for contributors +├── Build form UI components +└── Set up email notifications + +Week 4: +├── Add newsletter signup (ConvertKit/Buttondown) +├── Create admin views in Payload +├── Add contributor badges to project pages +├── Implement form validation +└── Launch V2 +``` + +### Data Model (V2 additions) + +```typescript +// Experts collection +{ + name: string; + email: string; + githubUsername: string; + projects: relationship[]; // Projects they can help with + skills: array; + rate: number; // $/hour (optional) + availability: select; + portfolio: string; + status: select; // pending, verified, rejected +} + +// Interests collection +{ + email: string; + name: string; + project: relationship; + type: select; // 'expert' or 'operator' + message: text; + budget: select; // $500-1k, $1k-5k, $5k+ + timeline: select; + createdAt: date; +} +``` + +### Success Criteria + +- [ ] 20 expert signups +- [ ] 10 operator interest submissions +- [ ] 50 newsletter subscribers +- [ ] At least 1 "match" (expert <-> operator) + +--- + +## V3: Ideas Feature + +> **Goal:** Add business ideas for each project. Increase engagement and SEO. + +### Deliverables + +| Feature | Priority | Description | +|---------|----------|-------------| +| Ideas collection | P0 | 3-5 business ideas per project | +| Ideas on project pages | P0 | Display ideas with details | +| Dedicated ideas pages | P1 | /ideas, /ideas/[slug] | +| Target market tags | P1 | Countries, industries | +| Pricing suggestions | P1 | Suggested pricing tiers | + +### Technical Tasks + +``` +Week 5: +├── Add Ideas collection to Payload +├── Create idea detail pages +├── Add ideas section to project pages +├── Build ideas index page +└── Add country/market targeting + +Week 6: +├── Add 100 ideas (3-5 per project) +├── Create programmatic SEO pages +├── Add related ideas suggestions +├── Implement idea filtering +└── Launch V3 +``` + +### Data Model (V3 additions) + +```typescript +// Ideas collection +{ + title: string; + slug: string; + project: relationship; + description: richText; + targetMarket: array; // Countries, industries + suggestedPricing: group { + starter: number; + professional: number; + enterprise: number; + }; + competitors: array; // SaaS alternatives + difficulty: select; // Easy, Medium, Hard + potentialMRR: string; // "$1k-5k", "$5k-20k", etc. + requirements: array; // Technical requirements +} +``` + +### Success Criteria + +- [ ] 100 business ideas published +- [ ] Ideas pages ranking for long-tail keywords +- [ ] 5+ idea submissions from community +- [ ] Increased time on site (> 2 minutes avg) + +--- + +## V4: Launch Campaign + +> **Goal:** Public launch. Drive traffic. Generate buzz. + +### Deliverables + +| Feature | Priority | Description | +|---------|----------|-------------| +| 50 projects | P0 | Minimum for launch | +| Product Hunt launch | P0 | Coordinated launch | +| Hacker News post | P0 | "Show HN" submission | +| Twitter thread | P1 | Build in public recap | +| Featured listings | P2 | Sponsored placements (future revenue) | + +### Launch Tasks + +``` +Week 7 (Preparation): +├── Reach 50 projects +├── Write Product Hunt copy +├── Create launch graphics +├── Email projects for cross-promotion +├── Prepare Twitter thread +└── Line up "hunters" for PH + +Week 8 (Launch): +├── Monday: Soft launch to newsletter +├── Tuesday: Product Hunt launch +├── Wednesday: Hacker News "Show HN" +├── Thursday: Twitter thread recap +├── Friday: Reach out to tech newsletters +└── Weekend: Respond to feedback +``` + +### Success Criteria + +- [ ] Product Hunt: Top 10 of the day +- [ ] Hacker News: Front page (even briefly) +- [ ] 10,000 visitors in launch week +- [ ] 100 newsletter subscribers +- [ ] Media coverage (1+ article) + +--- + +## Future Phases (Post-Launch) + +### V5: Marketplace Foundations (Week 9-12) + +| Feature | Description | +|---------|-------------| +| Expert profiles | Public pages for verified experts | +| Project claiming | Maintainers claim their projects | +| Job board | Post implementation jobs | +| Reviews/ratings | Expert reviews from operators | + +### V6: Monetization (Month 3+) + +| Revenue Stream | Model | +|----------------|-------| +| Featured listings | $200-500/month per project | +| Expert verification | $50/year badge | +| Job posting fees | 10% of job value | +| White-label referrals | Affiliate commissions | + +### V7: Platform Features (Month 6+) + +| Feature | Description | +|---------|-------------| +| Escrow payments | Secure transactions | +| Project analytics | Track adoption metrics | +| Revenue sharing | Automatic splits to maintainers | +| API access | For integrations | + +--- + +## Technical Milestones + +### Infrastructure + +| Milestone | Target | Status | +|-----------|--------|--------| +| Next.js 15 + Payload 3.0 setup | Week 1 | Pending | +| PostgreSQL on Neon | Week 1 | Pending | +| Vercel deployment | Week 1 | Pending | +| Custom domain (projectwise.io) | Week 2 | Pending | +| Email setup (Resend/Postmark) | Week 3 | Pending | +| Analytics (Plausible/Umami) | Week 2 | Pending | + +### Performance Targets + +| Metric | Target | +|--------|--------| +| Lighthouse score | > 90 | +| Time to First Byte | < 200ms | +| Largest Contentful Paint | < 2.5s | +| Core Web Vitals | All green | + +--- + +## Risk Mitigation + +| Risk | Mitigation | +|------|------------| +| Low traffic at launch | Focus on SEO, borrowed audience | +| No expert signups | Personally reach out to contributors | +| No operator interest | Add more business ideas, target keywords | +| Competition copies us | Move fast, build community | +| Maintainer pushback | Always ask permission, give credit | + +--- + +## Weekly Checklist Template + +```markdown +## Week [X] Checklist + +### Development +- [ ] Feature 1 +- [ ] Feature 2 +- [ ] Bug fixes + +### Content +- [ ] Add X new projects +- [ ] Write X business ideas +- [ ] Create X SEO pages + +### Marketing +- [ ] Daily tweet +- [ ] Weekly newsletter +- [ ] Outreach to X projects + +### Metrics +- [ ] Visitors: ___ +- [ ] Signups: ___ +- [ ] Projects listed: ___ +``` + +--- + +*Last updated: January 2026* diff --git a/docs/05-content-strategy.md b/docs/05-content-strategy.md new file mode 100644 index 0000000..e4065d9 --- /dev/null +++ b/docs/05-content-strategy.md @@ -0,0 +1,490 @@ +# Content & Launch Strategy + +> How we'll grow Projectwise with limited audience through SEO, borrowed audiences, and consistent content. + +--- + +## Table of Contents + +1. [The Challenge](#the-challenge) +2. [SEO Strategy](#seo-strategy) +3. [Programmatic Pages](#programmatic-pages) +4. [Social Media Strategy](#social-media-strategy) +5. [Build in Public](#build-in-public) +6. [Launch Playbook](#launch-playbook) +7. [Content Calendar](#content-calendar) +8. [Outreach Strategy](#outreach-strategy) + +--- + +## The Challenge + +### Starting Position + +| Asset | Current State | +|-------|---------------| +| Twitter followers | ~500 | +| Email list | 0 | +| Domain authority | 0 (new domain) | +| Budget for ads | $0 | + +### What This Means + +We cannot rely on existing audience. We must: +1. **Borrow audiences** — Get projects to share when featured +2. **Build SEO moat** — Programmatic pages for long-tail keywords +3. **Be consistent** — Daily content compounds over time +4. **Provide value first** — Earn attention through usefulness + +--- + +## SEO Strategy + +### Target Keywords + +#### Primary Keywords (High Intent) + +| Keyword | Volume | Difficulty | Intent | +|---------|--------|------------|--------| +| open source saas alternatives | Medium | Medium | Commercial | +| white label software | Medium | High | Commercial | +| self hosted [category] | High | Medium | Technical | +| open source [product] alternative | Medium | Low | Commercial | + +#### Long-Tail Keywords (Low Competition) + +| Pattern | Example | +|---------|---------| +| "best open source [category] 2026" | "best open source crm 2026" | +| "[product] self hosted alternative" | "mailchimp self hosted alternative" | +| "open source [product] vs [competitor]" | "cal.com vs calendly" | +| "how to start a [category] saas" | "how to start an analytics saas" | +| "[country] saas market" | "india saas market opportunities" | + +### On-Page SEO Checklist + +```markdown +Every page should have: +- [ ] Unique title tag (< 60 chars) +- [ ] Meta description (< 160 chars) +- [ ] H1 matching search intent +- [ ] Internal links to related pages +- [ ] External links to authoritative sources +- [ ] Schema markup (Product, Organization) +- [ ] Open Graph tags for social sharing +- [ ] Alt text on all images +``` + +### Technical SEO + +| Requirement | Implementation | +|-------------|----------------| +| Sitemap | Auto-generated via Next.js | +| Robots.txt | Allow all, block admin | +| Canonical URLs | Self-referencing canonicals | +| Page speed | Target > 90 Lighthouse | +| Mobile-first | Responsive design | +| HTTPS | Enforced via Vercel | + +--- + +## Programmatic Pages + +### Category Pages + +Generate pages for each category: + +``` +/categories/analytics +/categories/crm +/categories/cms +/categories/email-marketing +/categories/ecommerce +/categories/project-management +... +``` + +**Content template:** +- H1: "Best Open Source [Category] Software (2026)" +- Intro paragraph with category overview +- List of projects in category +- Comparison table +- FAQ section + +### Alternative Pages + +Generate "alternative to" pages: + +``` +/alternatives/mailchimp +/alternatives/hubspot +/alternatives/shopify +/alternatives/calendly +... +``` + +**Content template:** +- H1: "Open Source Alternatives to [Product]" +- Why switch from [Product] +- Top 3-5 alternatives with comparison +- Feature comparison table +- Migration guide link + +### Country Pages + +Generate pages for target markets: + +``` +/markets/india +/markets/brazil +/markets/nigeria +/markets/indonesia +/markets/philippines +... +``` + +**Content template:** +- H1: "Best Open Source Software for [Country] Market" +- Market overview and opportunity +- Projects with local success stories +- Pricing considerations +- Local payment integration notes + +### Tier Pages + +``` +/tiers/reseller-ready +/tiers/operator-friendly +/tiers/technically-possible +``` + +--- + +## Social Media Strategy + +### Twitter/X (@projectwise_in) + +#### Content Pillars + +| Pillar | Percentage | Example | +|--------|------------|---------| +| Project features | 40% | "🔍 [Project] makes it easy to..." | +| Business ideas | 25% | "💡 Business idea: Run [X] as SaaS for [market]" | +| Build in public | 20% | "📊 Week 3 update: X visitors, Y signups" | +| Industry insights | 15% | "The OSS maintainer crisis is real..." | + +#### Posting Schedule + +| Day | Content Type | Time (IST) | +|-----|--------------|------------| +| Monday | Project feature | 10:00 AM | +| Tuesday | Business idea | 10:00 AM | +| Wednesday | Build in public | 10:00 AM | +| Thursday | Project feature | 10:00 AM | +| Friday | Weekly roundup | 10:00 AM | +| Saturday | Industry insight | 11:00 AM | +| Sunday | Rest / engagement | - | + +#### Tweet Templates + +**Project Feature:** +``` +🔍 Featured: [Project Name] + +[One-line description] + +✅ Self-hostable +✅ White-label ready +✅ [Key feature] + +Perfect for: [Use case] + +→ projectwise.io/projects/[slug] +``` + +**Business Idea:** +``` +💡 Business idea #[X]: + +Run [Project] as a SaaS for [market] + +Target: [Customer type] +Pricing: $[X]-[Y]/month +Competition: [Low/Medium] + +Why it works: [1 sentence] + +More ideas → projectwise.io/ideas +``` + +**Build in Public:** +``` +📊 Projectwise Week [X] Update + +Visitors: [X] (+Y%) +Projects listed: [X] +Expert signups: [X] +Operator interests: [X] + +What we shipped: +• [Feature 1] +• [Feature 2] + +Next week: [Focus] +``` + +### LinkedIn (Future) + +- Repurpose Twitter content +- Focus on business/entrepreneur angle +- Target: Agency owners, technical founders + +### Reddit (Careful) + +| Subreddit | Strategy | +|-----------|----------| +| r/selfhosted | Share genuinely useful resources | +| r/startups | Participate, don't promote | +| r/opensource | Community engagement | +| r/SaaS | Answer questions, build reputation | + +**Rule:** Never spam. Only share when genuinely helpful. + +--- + +## Build in Public + +### Why Build in Public + +1. **Accountability** — Public commitment drives action +2. **Audience building** — People follow journeys +3. **Feedback** — Early users help shape product +4. **Trust** — Transparency builds credibility + +### What to Share + +| Category | Examples | +|----------|----------| +| Metrics | Visitors, signups, revenue | +| Decisions | Tech choices, pivots | +| Struggles | Bugs, delays, challenges | +| Wins | Launches, milestones | +| Learnings | What worked, what didn't | + +### What NOT to Share + +- Sensitive user data +- Security vulnerabilities +- Internal conflicts +- Unverified claims + +### Build in Public Calendar + +| Week | Focus | Share | +|------|-------|-------| +| 1 | Setup | Stack decisions, first commit | +| 2 | V1 | Soft launch, first 20 projects | +| 3 | Forms | Interest form conversions | +| 4 | V2 | First expert signups | +| 5 | Ideas | Ideas feature launch | +| 6 | Growth | Traffic milestones | +| 7 | Prep | Launch preparation | +| 8 | Launch | Full launch metrics | + +--- + +## Launch Playbook + +### Pre-Launch (Week 7) + +#### Product Hunt Preparation + +| Task | Status | +|------|--------| +| Create maker profile | Pending | +| Prepare screenshots (5+) | Pending | +| Write tagline (< 60 chars) | Pending | +| Write description (< 260 chars) | Pending | +| Create launch GIF | Pending | +| Line up "hunter" (optional) | Pending | +| Prepare first comment | Pending | + +**Tagline ideas:** +- "Build a business on open source" +- "Commercial-ready OSS directory" +- "The WordPress model for modern OSS" + +#### Hacker News Preparation + +| Task | Status | +|------|--------| +| Write "Show HN" post | Pending | +| Prepare to answer questions | Pending | +| Have technical details ready | Pending | +| Time the post (9-10 AM EST) | Pending | + +**Show HN template:** +``` +Show HN: Projectwise – A directory of commercial-ready open source software + +Hey HN, I built Projectwise to help people discover open source projects +that can be self-hosted, white-labeled, and turned into SaaS businesses. + +The problem: There's no central place to find OSS that's actually +"commercial-ready" - meaning it has permissive licenses, self-hosting +support, and potential for white-labeling. + +Features: +- 50+ curated projects across categories (CRM, analytics, CMS, etc.) +- Commercial "tiers" (Reseller-Ready, Operator-Friendly, etc.) +- Business ideas for each project +- Connect with implementation experts + +Tech stack: Next.js 15 + Payload CMS 3.0 + PostgreSQL + +Would love feedback on what projects to add or features to build next. +``` + +### Launch Day (Week 8) + +#### Timeline + +| Time | Action | +|------|--------| +| 12:01 AM PT | Product Hunt goes live | +| 6:00 AM | Wake up, engage with comments | +| 8:00 AM | Share on Twitter | +| 9:00 AM | Post to Hacker News | +| 10:00 AM | Email newsletter | +| Throughout | Respond to ALL comments | +| Evening | Twitter thread recap | + +#### Engagement Rules + +1. **Respond to every comment** — Within 1 hour if possible +2. **Be genuine** — No fake enthusiasm +3. **Thank supporters** — Personally acknowledge upvotes +4. **Ask questions** — "What projects would you want to see?" +5. **Don't ask for upvotes** — Against PH rules + +### Post-Launch (Week 9+) + +| Task | Timeline | +|------|----------| +| Compile feedback | Day 2 | +| Prioritize feature requests | Day 3 | +| Send thank you emails | Day 3 | +| Write launch retrospective | Day 7 | +| Plan V5 based on feedback | Week 9 | + +--- + +## Content Calendar + +### Weekly Template + +| Day | Content | Platform | +|-----|---------|----------| +| Mon | Project feature | Twitter | +| Tue | Business idea | Twitter | +| Wed | Build in public | Twitter | +| Thu | Project feature | Twitter | +| Fri | Weekly newsletter | Email | +| Sat | Industry insight | Twitter | +| Sun | Engagement only | Twitter | + +### Monthly Goals + +| Month | Content Target | +|-------|----------------| +| Month 1 | 20 projects, 10 ideas, 4 newsletters | +| Month 2 | 50 projects, 50 ideas, 4 newsletters | +| Month 3 | 100 projects, 100 ideas, 4 newsletters | + +--- + +## Outreach Strategy + +### Projects Outreach + +When featuring a project, reach out to maintainers: + +**Email template:** +``` +Subject: Featured [Project Name] on Projectwise + +Hi [Name], + +I just featured [Project] on Projectwise (projectwise.io), +a directory of commercial-ready open source software. + +Here's the listing: [link] + +I highlighted [specific feature] and noted the [license] +makes it great for [use case]. + +Would love your feedback on the listing. And if you'd like +to share it with your community, that would mean a lot! + +Best, +[Your name] +``` + +### Expert Outreach + +Reach out to GitHub contributors: + +**DM template:** +``` +Hey [Name]! I noticed you've contributed to [Project]. + +I'm building Projectwise, a platform connecting OSS experts +with people who want to deploy these projects. + +Would you be interested in being listed as an expert for +[Project]? It's free and could lead to paid consulting gigs. + +Let me know if you'd like to learn more! +``` + +### Newsletter Outreach + +Pitch to relevant newsletters: + +| Newsletter | Angle | +|------------|-------| +| TLDR | New OSS discovery tool | +| Bytes | Developer-focused | +| Console | OSS curation | +| Indie Hackers | Business opportunity | + +--- + +## Metrics to Track + +### Weekly Dashboard + +| Metric | Target (Week 4) | Target (Week 8) | +|--------|-----------------|-----------------| +| Unique visitors | 500 | 10,000 | +| Page views | 2,000 | 50,000 | +| Avg. session duration | 1:30 | 2:00 | +| Bounce rate | < 60% | < 50% | +| Expert signups | 20 | 100 | +| Operator interests | 10 | 75 | +| Newsletter subscribers | 50 | 500 | +| Twitter followers | 600 | 1,000 | + +### Tools + +| Purpose | Tool | +|---------|------| +| Web analytics | Plausible or Umami | +| Social analytics | Twitter native | +| SEO tracking | Google Search Console | +| Email metrics | Buttondown/ConvertKit | +| Uptime | Vercel built-in | + +--- + +*Last updated: January 2026* diff --git a/docs/06-project-seed-list.md b/docs/06-project-seed-list.md new file mode 100644 index 0000000..9fa10ea --- /dev/null +++ b/docs/06-project-seed-list.md @@ -0,0 +1,282 @@ +# Project Seed List + +> 100 open source projects to feature on Projectwise, curated for commercial potential. + +--- + +## Tier Definitions + +| Tier | Name | Criteria | +|------|------|----------| +| **Tier 1** | Reseller-Ready | White-label support, multi-tenancy, enterprise features | +| **Tier 2** | Operator-Friendly | Self-hostable, permissive license, good docs | +| **Tier 3** | Technically Possible | Can be commercialized with effort | + +--- + +## Categories + +1. [Analytics & Business Intelligence](#analytics--business-intelligence) +2. [CRM & Sales](#crm--sales) +3. [Email & Marketing](#email--marketing) +4. [CMS & Content](#cms--content) +5. [E-commerce](#e-commerce) +6. [Project Management](#project-management) +7. [Scheduling & Booking](#scheduling--booking) +8. [Forms & Surveys](#forms--surveys) +9. [Authentication & IAM](#authentication--iam) +10. [Automation & Workflows](#automation--workflows) +11. [Communication](#communication) +12. [Developer Tools](#developer-tools) +13. [File Storage & Sharing](#file-storage--sharing) +14. [Design & Creative](#design--creative) +15. [Finance & Invoicing](#finance--invoicing) + +--- + +## Analytics & Business Intelligence + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 1 | [Plausible](https://plausible.io) | AGPL-3.0 | Tier 1 | Privacy-first analytics, SaaS-proven | +| 2 | [Umami](https://umami.is) | MIT | Tier 1 | Lightweight, multi-tenant ready | +| 3 | [Matomo](https://matomo.org) | GPL-3.0 | Tier 1 | WordPress of analytics, huge ecosystem | +| 4 | [PostHog](https://posthog.com) | MIT | Tier 1 | Product analytics, feature flags | +| 5 | [Metabase](https://metabase.com) | AGPL-3.0 | Tier 1 | BI dashboards, embedded analytics | +| 6 | [Superset](https://superset.apache.org) | Apache-2.0 | Tier 2 | Enterprise BI, data exploration | +| 7 | [Redash](https://redash.io) | BSD-2 | Tier 2 | SQL dashboards, query sharing | + +--- + +## CRM & Sales + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 8 | [Twenty](https://twenty.com) | AGPL-3.0 | Tier 1 | Modern Salesforce alternative | +| 9 | [Erxes](https://erxes.io) | AGPL-3.0 | Tier 1 | All-in-one CRM, marketing, support | +| 10 | [SuiteCRM](https://suitecrm.com) | AGPL-3.0 | Tier 1 | Enterprise CRM, SugarCRM fork | +| 11 | [EspoCRM](https://espocrm.com) | GPL-3.0 | Tier 2 | Lightweight, extensible | +| 12 | [Krayin](https://krayincrm.com) | MIT | Tier 2 | Laravel-based, modern UI | +| 13 | [Monica](https://monicahq.com) | AGPL-3.0 | Tier 3 | Personal CRM, unique niche | + +--- + +## Email & Marketing + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 14 | [Listmonk](https://listmonk.app) | AGPL-3.0 | Tier 1 | Newsletter/mailing, high performance | +| 15 | [Dittofeed](https://dittofeed.com) | MIT | Tier 1 | Customer engagement, white-label | +| 16 | [Mautic](https://mautic.org) | GPL-3.0 | Tier 1 | Marketing automation | +| 17 | [Postal](https://github.com/postalserver/postal) | MIT | Tier 2 | Mail server, transactional email | +| 18 | [Mailtrain](https://github.com/Mailtrain-org/mailtrain) | GPL-3.0 | Tier 2 | Self-hosted Mailchimp | +| 19 | [Keila](https://keila.io) | AGPL-3.0 | Tier 2 | Newsletter tool, Elixir-based | +| 20 | [Sendy](https://sendy.co) | Proprietary | Tier 2 | Low-cost email, AWS SES | + +--- + +## CMS & Content + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 21 | [Payload](https://payloadcms.com) | MIT | Tier 1 | Headless CMS, Next.js native | +| 22 | [Strapi](https://strapi.io) | MIT | Tier 1 | Most popular headless CMS | +| 23 | [Directus](https://directus.io) | GPL-3.0 | Tier 1 | Database-first CMS | +| 24 | [Ghost](https://ghost.org) | MIT | Tier 1 | Publishing platform | +| 25 | [Wagtail](https://wagtail.org) | BSD-3 | Tier 2 | Django CMS | +| 26 | [KeystoneJS](https://keystonejs.com) | MIT | Tier 2 | GraphQL headless CMS | +| 27 | [TinaCMS](https://tina.io) | Apache-2.0 | Tier 2 | Git-backed CMS | +| 28 | [Builder.io](https://builder.io) | MIT | Tier 2 | Visual CMS | + +--- + +## E-commerce + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 29 | [Medusa](https://medusajs.com) | MIT | Tier 1 | Headless commerce, Shopify alt | +| 30 | [Saleor](https://saleor.io) | BSD-3 | Tier 1 | GraphQL commerce | +| 31 | [Vendure](https://vendure.io) | MIT | Tier 1 | TypeScript commerce | +| 32 | [Bagisto](https://bagisto.com) | MIT | Tier 1 | Laravel e-commerce | +| 33 | [Sylius](https://sylius.com) | MIT | Tier 2 | PHP/Symfony commerce | +| 34 | [Solidus](https://solidus.io) | BSD-3 | Tier 2 | Ruby commerce | +| 35 | [Shuup](https://shuup.com) | AGPL-3.0 | Tier 2 | Multi-vendor marketplace | +| 36 | [WooCommerce](https://woocommerce.com) | GPL-3.0 | Tier 1 | WordPress commerce | + +--- + +## Project Management + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 37 | [Plane](https://plane.so) | AGPL-3.0 | Tier 1 | Jira/Linear alternative | +| 38 | [Focalboard](https://focalboard.com) | AGPL-3.0 | Tier 1 | Notion/Trello alternative | +| 39 | [Taiga](https://taiga.io) | MPL-2.0 | Tier 2 | Agile project management | +| 40 | [OpenProject](https://openproject.org) | GPL-3.0 | Tier 1 | Enterprise project mgmt | +| 41 | [Leantime](https://leantime.io) | AGPL-3.0 | Tier 2 | Strategic project mgmt | +| 42 | [Vikunja](https://vikunja.io) | AGPL-3.0 | Tier 2 | To-do app, Todoist alt | +| 43 | [AppFlowy](https://appflowy.io) | AGPL-3.0 | Tier 2 | Notion alternative | + +--- + +## Scheduling & Booking + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 44 | [Cal.com](https://cal.com) | AGPL-3.0 | Tier 1 | Calendly alternative, white-label | +| 45 | [Easy!Appointments](https://easyappointments.org) | GPL-3.0 | Tier 2 | Appointment scheduling | +| 46 | [Calendso](https://cal.com) | AGPL-3.0 | Tier 1 | (Now Cal.com) | +| 47 | [Alf.io](https://alf.io) | GPL-3.0 | Tier 2 | Event ticketing | + +--- + +## Forms & Surveys + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 48 | [Formbricks](https://formbricks.com) | AGPL-3.0 | Tier 1 | Experience surveys | +| 49 | [Heyform](https://heyform.net) | AGPL-3.0 | Tier 1 | Typeform alternative | +| 50 | [Typebot](https://typebot.io) | AGPL-3.0 | Tier 1 | Conversational forms | +| 51 | [LimeSurvey](https://limesurvey.org) | GPL-2.0 | Tier 2 | Survey platform | +| 52 | [OhMyForm](https://ohmyform.com) | AGPL-3.0 | Tier 2 | Form builder | +| 53 | [SurveyJS](https://surveyjs.io) | MIT | Tier 2 | Survey library | + +--- + +## Authentication & IAM + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 54 | [Keycloak](https://keycloak.org) | Apache-2.0 | Tier 1 | Enterprise IAM | +| 55 | [Authentik](https://goauthentik.io) | MIT | Tier 1 | Modern identity provider | +| 56 | [SuperTokens](https://supertokens.com) | Apache-2.0 | Tier 1 | Auth for startups | +| 57 | [Logto](https://logto.io) | MPL-2.0 | Tier 1 | Auth0 alternative | +| 58 | [Ory](https://ory.sh) | Apache-2.0 | Tier 1 | Identity infrastructure | +| 59 | [Zitadel](https://zitadel.com) | Apache-2.0 | Tier 1 | Cloud-native IAM | +| 60 | [FusionAuth](https://fusionauth.io) | Apache-2.0 | Tier 2 | Customer identity | + +--- + +## Automation & Workflows + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 61 | [n8n](https://n8n.io) | Fair Source | Tier 1 | Zapier alternative, white-label | +| 62 | [Automatisch](https://automatisch.io) | AGPL-3.0 | Tier 1 | Open Zapier alternative | +| 63 | [Activepieces](https://activepieces.com) | MIT | Tier 1 | Business automation | +| 64 | [Windmill](https://windmill.dev) | AGPL-3.0 | Tier 1 | Developer workflows | +| 65 | [Huginn](https://github.com/huginn/huginn) | MIT | Tier 3 | Agent-based automation | +| 66 | [Kestra](https://kestra.io) | Apache-2.0 | Tier 2 | Data orchestration | + +--- + +## Communication + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 67 | [Mattermost](https://mattermost.com) | MIT | Tier 1 | Slack alternative | +| 68 | [Rocket.Chat](https://rocket.chat) | MIT | Tier 1 | Team chat, omnichannel | +| 69 | [Zulip](https://zulip.com) | Apache-2.0 | Tier 2 | Topic-based chat | +| 70 | [Element](https://element.io) | Apache-2.0 | Tier 2 | Matrix client | +| 71 | [Chatwoot](https://chatwoot.com) | MIT | Tier 1 | Customer support, Intercom alt | +| 72 | [Papercups](https://papercups.io) | MIT | Tier 2 | Live chat widget | +| 73 | [Typebot](https://typebot.io) | AGPL-3.0 | Tier 1 | Chatbot builder | + +--- + +## Developer Tools + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 74 | [GitLab](https://gitlab.com) | MIT | Tier 1 | DevOps platform | +| 75 | [Gitea](https://gitea.io) | MIT | Tier 1 | Lightweight Git hosting | +| 76 | [Drone](https://drone.io) | Apache-2.0 | Tier 2 | CI/CD | +| 77 | [Coolify](https://coolify.io) | Apache-2.0 | Tier 1 | Self-hosted PaaS | +| 78 | [Dokku](https://dokku.com) | MIT | Tier 2 | Mini-Heroku | +| 79 | [Sentry](https://sentry.io) | BSL | Tier 1 | Error tracking | +| 80 | [Highlight](https://highlight.io) | Apache-2.0 | Tier 1 | Session replay | +| 81 | [Flagsmith](https://flagsmith.com) | BSD-3 | Tier 1 | Feature flags | + +--- + +## File Storage & Sharing + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 82 | [Nextcloud](https://nextcloud.com) | AGPL-3.0 | Tier 1 | Google Workspace alt | +| 83 | [ownCloud](https://owncloud.com) | AGPL-3.0 | Tier 1 | File sync & share | +| 84 | [Seafile](https://seafile.com) | GPL-3.0 | Tier 2 | File hosting | +| 85 | [MinIO](https://min.io) | AGPL-3.0 | Tier 1 | S3-compatible storage | +| 86 | [Paperless-ngx](https://docs.paperless-ngx.com) | GPL-3.0 | Tier 2 | Document management | +| 87 | [Documenso](https://documenso.com) | AGPL-3.0 | Tier 1 | DocuSign alternative | + +--- + +## Design & Creative + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 88 | [Penpot](https://penpot.app) | MPL-2.0 | Tier 1 | Figma alternative | +| 89 | [Excalidraw](https://excalidraw.com) | MIT | Tier 2 | Whiteboard tool | +| 90 | [Blender](https://blender.org) | GPL-3.0 | Tier 2 | 3D creation | +| 91 | [GIMP](https://gimp.org) | GPL-3.0 | Tier 3 | Image editing | +| 92 | [Inkscape](https://inkscape.org) | GPL-3.0 | Tier 3 | Vector graphics | + +--- + +## Finance & Invoicing + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 93 | [Invoice Ninja](https://invoiceninja.com) | AAL | Tier 1 | Invoicing, white-label | +| 94 | [Crater](https://crater.financial) | AGPL-3.0 | Tier 1 | Invoice & accounting | +| 95 | [Kill Bill](https://killbill.io) | Apache-2.0 | Tier 2 | Billing platform | +| 96 | [Akaunting](https://akaunting.com) | GPL-3.0 | Tier 2 | Accounting software | +| 97 | [Firefly III](https://firefly-iii.org) | AGPL-3.0 | Tier 2 | Personal finance | +| 98 | [Maybe](https://maybe.co) | AGPL-3.0 | Tier 2 | Personal finance (now open source) | + +--- + +## Bonus: Emerging Projects + +| # | Project | License | Tier | Why It's Commercial | +|---|---------|---------|------|---------------------| +| 99 | [Dub.co](https://dub.co) | AGPL-3.0 | Tier 1 | Link management, white-label | +| 100 | [Inbox Zero](https://getinboxzero.com) | AGPL-3.0 | Tier 2 | Email productivity | + +--- + +## Selection Criteria + +When adding new projects, evaluate: + +| Criteria | Weight | Question | +|----------|--------|----------| +| License | High | Is it permissive enough for commercial use? | +| Self-hostable | High | Can someone run it on their own server? | +| White-label | Medium | Can branding be removed/replaced? | +| Multi-tenancy | Medium | Can it serve multiple customers? | +| Documentation | Medium | Is it well-documented? | +| Community | Medium | Active development and community? | +| Business model | Low | Does the project itself have commercial offering? | + +--- + +## Projects to Research + +Future additions to investigate: + +- [ ] Outline (Notion alternative) +- [ ] Docusaurus (Documentation) +- [ ] Docmost (Documentation) +- [ ] Budibase (Low-code) +- [ ] Appsmith (Low-code) +- [ ] NocoDB (Airtable alternative) +- [ ] Baserow (Airtable alternative) +- [ ] Rallly (Doodle alternative) +- [ ] Jitsi (Video conferencing) +- [ ] BigBlueButton (Virtual classroom) + +--- + +*Last updated: January 2026* diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..411bddd --- /dev/null +++ b/docs/README.md @@ -0,0 +1,90 @@ +# Projectwise Documentation + +> **Domain:** projectwise.io +> **Twitter:** @projectwise_in (to be updated) +> **Tagline:** Build a business on open source + +--- + +## Quick Links + +| Document | Description | +|----------|-------------| +| [01 - Vision & Problem](./01-vision.md) | What we're building and why | +| [02 - Market Research](./02-market-research.md) | Industry analysis, competitors, opportunity | +| [03 - Architecture](./03-architecture.md) | Tech stack, data models, infrastructure | +| [04 - Roadmap](./04-roadmap.md) | V1, V2, V3 phases with deliverables | +| [05 - Content & Launch Strategy](./05-content-strategy.md) | SEO, social media, build in public | +| [06 - Project Seed List](./06-project-seed-list.md) | 100 open source projects to feature | + +--- + +## Project Status + +| Phase | Status | Target | +|-------|--------|--------| +| **V1: MVP Directory** | 🔄 Planning | Week 1-2 | +| **V2: Contributors + Forms** | ⏳ Planned | Week 3-4 | +| **V3: Ideas Feature** | ⏳ Planned | Week 5-6 | +| **V4: Launch Campaign** | ⏳ Planned | Week 7-8 | + +--- + +## The Elevator Pitch + +**Projectwise** is a curated directory of commercial-ready open source software — projects you can self-host, white-label, and build a business on. + +We connect three audiences: +1. **Projects** — Open source with permissive licenses and commercial potential +2. **Experts** — Contributors who can deploy and customize these projects +3. **Operators** — Entrepreneurs who want to run OSS as SaaS businesses + +--- + +## Why Now? + +- **60% of OSS maintainers are unpaid**, 44% cite burnout +- **AI disruption** is killing traditional developer education/Stack Overflow +- **WordPress proved the model** — $600B ecosystem from open source +- **No platform exists** that connects commercial OSS with implementation experts + +--- + +## Quick Start (For Development) + +```bash +# Clone the repo +git clone https://github.com/Projectwise/projectwise-app.git +cd projectwise-app + +# Install dependencies (after migration to new stack) +pnpm install + +# Set up environment +cp .env.example .env.local + +# Run development server +pnpm dev +``` + +--- + +## Key Decisions + +| Decision | Choice | Rationale | +|----------|--------|-----------| +| **Framework** | Next.js 15 + Payload CMS 3.0 | Single deployment, TypeScript native | +| **Database** | PostgreSQL (Neon) | Free tier, Vercel integration | +| **Hosting** | Vercel | Free tier, instant deploys | +| **Domain** | projectwise.io | Available, professional | +| **Architecture** | Single repo | Simpler for MVP, can split later | + +--- + +## Contributing + +This project is in active development. See [04-roadmap.md](./04-roadmap.md) for current priorities. + +--- + +*Last updated: January 2026*