Skip to content

Repository files navigation

Open Innovation Platform

License: MIT Next.js 16 Payload CMS 3

中文文档

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.


Screenshots

Public Homepage Tech Needs Hall
Public Homepage Tech Needs Hall
Ecosystem Partners Case Studies
Ecosystem Partners Case Studies
Innovation Workspace Admin Background
Login Page Registration Page
Innovation Workspace dark-mode Public Homepage dark-mode
Innovation Workspace Admin Panel

Features

Public Portal

  • 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)

Authentication Center

  • 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

Innovation Workspace

  • 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)

Payload Admin

  • Branded admin panel at /admin
  • Collection management: users, user-groups, tech-needs, proposals, partners, case-studies, media

Tech Stack

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
Email 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/

Getting Started

Prerequisites

  • Node.js >= 18.20.2 or >= 20.9.0
  • pnpm >= 9
  • Docker (for PostgreSQL and Redis)

Installation

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 server

Default dev addresses:

  • Public portal: http://localhost:3000
  • Dashboard: http://localhost:3000/dashboard
  • Admin: http://localhost:3000/admin

Common Commands

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)

Project Structure

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)

Environment Variables

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)

Deployment

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 run pnpm build and restart the service for changes to take effect.


Documentation


Known Limitations

  • 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

License

MIT

About

The company's open innovation platform

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages