ProductDesignOS is an MVP for an individuality-first design operating system: a premium landing experience, curated Inspire feed, AI logo demo with deterministic stubs, public profiles, design trends, and provider onboarding.
- Monorepo with npm workspaces
apps/web: Next.js, TypeScript, Tailwind CSSservices/api: Fastify API, JWT auth, in-memory MVP storesservices/ai: adapter layer with deterministic logo stubspackages/ui: shared tokens and primitivesinfra: Docker Compose and app Dockerfiles
npm install
npm run dev:api
npm run dev:webThe web app runs on http://localhost:3000. The API runs on http://localhost:4000.
Create .env.local in apps/web when using a remote API:
NEXT_PUBLIC_API_URL=http://localhost:4000
NEXT_PUBLIC_ANALYTICS_ENABLED=falseCreate .env in services/api:
PORT=4000
JWT_SECRET=replace-me
AI_PROVIDER=stub
OPENAI_API_KEY=
ANTHROPIC_API_KEY=No keys are required for the MVP. The AI service returns deterministic SVG logo variants when keys are missing.
npm run dev
npm run build
npm run lint
npm run test
npm run typecheckGET /api/inspire?page=&filter=GET /api/trendsPOST /api/ai/logoGET /api/ai/job/:idPOST /api/auth/signupPOST /api/auth/loginGET /api/profile/:usernamePOST /api/providersPOST /api/privacy/delete
Seed data lives in services/api/src/seed.ts and is mirrored in the web fallback data at apps/web/src/lib/mock-data.ts.
docker compose -f infra/docker-compose.yml up --buildFor a Linux home server, use the production profile in infra/prod.
cd infra/prod
cp .env.example .env
docker compose --env-file .env up -d --buildPoint your domain DNS A record to the home server public IP, forward ports 80 and 443, then add the GitHub Actions secrets listed in infra/prod/README.md.
This is a fast MVP scaffold. The next production pass should replace in-memory stores with a database, add email verification, wire real analytics, and add persistent object storage for provider portfolios.