An open-source enterprise innovation collaboration platform built with Next.js 16 + Payload CMS 3 + PostgreSQL + Redis. It unifies a public-facing portal, authentication center, innovation workspace, and admin panel into a single full-stack application.
| Public Homepage | Tech Needs Hall |
![]() |
![]() |
| Ecosystem Partners | Case Studies |
![]() |
![]() |
| Innovation Workspace | Admin Background |
![]() |
![]() |
| Innovation Workspace dark-mode | Public Homepage dark-mode |
![]() |
![]() |
- Homepage with hero section and CTAs (
/) - Tech Needs Hall with search and filtering (
/needs,/needs/[id]) - Ecosystem Partner directory (
/ecosystem) - Case Studies showcase (
/cases,/cases/[slug]) - Collaboration process overview (
/process) - Proposal submission entry (
/submit)
- Email / phone + password login
- Email / SMS verification code login
- Multi-channel registration (email verification, SMS verification, or both)
- Unified light/dark theme support across all auth pages
- Dashboard overview (
/dashboard) - Proposal management (
/dashboard/proposals) - New proposal with multi-file upload (
/dashboard/proposals/new) - Proposal detail and review workflow (
/dashboard/proposals/[id]) - Profile settings (
/dashboard/settings) - Partner management (
/dashboard/partners) - User management (
/dashboard/users)
- Branded admin panel at
/admin - Collection management:
users,user-groups,tech-needs,proposals,partners,case-studies,media
| Layer | Technology |
|---|---|
| Web Framework | Next.js 16.2.3 |
| CMS / Data Access | Payload CMS 3.82.1 |
| Frontend | React 19 + Tailwind CSS 4 |
| Database | PostgreSQL |
| OTP Cache | Redis |
| nodemailer + SMTP | |
| SMS | Alibaba Cloud SMS |
| Process Manager | systemd |
| Reverse Proxy | nginx |
| Runtime | next build standalone + pnpm start |
Request flow:
Browser -> nginx :443 -> systemd service -> .next/standalone/server.js
-> Next.js App Router / Payload Local API -> PostgreSQL / Redis / media/
- Node.js >= 18.20.2 or >= 20.9.0
- pnpm >= 9
- Docker (for PostgreSQL and Redis)
pnpm install
pnpm db:up # Start PostgreSQL + Redis via Docker
pnpm generate:types
pnpm generate:importmap
pnpm seed # Seed initial data
pnpm dev # Start development serverDefault dev addresses:
- Public portal:
http://localhost:3000 - Dashboard:
http://localhost:3000/dashboard - Admin:
http://localhost:3000/admin
pnpm lint # Lint with ESLint + oxlint
pnpm typecheck # TypeScript type check
pnpm build # Production build
pnpm test:int # Integration tests
pnpm test:e2e # End-to-end tests (Playwright)src/
app/ # Next.js App Router pages and API routes
(public)/ # Public portal pages
(auth)/ # Login, register, verify
(dashboard)/ # Innovation workspace
(payload)/ # Payload CMS admin
api/ # REST API routes (auth, proposals, sms, etc.)
collections/ # Payload CMS collection definitions
components/ # React components (shared, layout, auth, dashboard, payload)
hooks/ # Payload hooks (notifications, status changes, media sync)
lib/ # Utilities (auth, env, theme, validators, etc.)
services/ # External services (email, redis, SMS, rate limiting)
scripts/ # Seed data and maintenance scripts
migrations/ # Database migrations
deploy/ # nginx config, systemd service file
docs/ # Architecture, deployment, ops, and progress docs
public/branding/ # Brand assets (logos, favicons)
Copy .env.example and fill in your values:
PAYLOAD_SECRET= # At least 32 characters
NEXT_PUBLIC_SERVER_URL= # e.g. http://localhost:3000
DATABASE_URI= # PostgreSQL connection string
REDIS_URL= # Redis connection string
SMTP_HOST= # SMTP server
SMTP_USER= / SMTP_PASS= # SMTP credentials
ALIYUN_SMS_ACCESS_KEY_ID= # Alibaba Cloud SMS (optional)
ALIYUN_SMS_ACCESS_KEY_SECRET= # Alibaba Cloud SMS (optional)See docs/deployment/deployment.md for the full guide.
Quick reference:
- systemd:
deploy/systemd/innovation-platform.service - nginx:
deploy/nginx/innovation.example.com.conf - Port:
3005 - Media storage:
media/in project root
Note: The production build uses
.next/standalone. After changing environment variables, you must runpnpm buildand restart the service for changes to take effect.
- Automated tests do not yet fully cover SMS, email, attachment permissions, and review workflows
- Email send failures do not block the main business flow
- When Redis is unavailable, OTP falls back to in-memory storage (codes lost on restart)
- Direct database writes bypass Payload hooks, access control, and notification logic







