Skip to content

Getting Started

Developer quickstart guide for Mini Dream Universe.

Prerequisites

  • Node.js 20+
  • Docker & Docker Compose
  • Git access to pLim-Inc GitHub organization

Repositories

Repo Stack Purpose
3dplim Next.js 16 SSR Main site + landing page
miniature-forge Vite + React User-facing app (Miniature Forge)
agenthub-mdu Vite + React Admin dashboard (AgentHub)
mdu-api Express + Node.js Backend API (56+ endpoints)
mdu-stl-pipeline FastAPI + Python STL export microservice

Local Development

1. Clone the backend

git clone git@github.com:pLim-Inc/mdu-api.git
cd mdu-api
cp .env.example .env
# Fill in required secrets: DATABASE_URL, JWT_SECRET, STRIPE_SECRET_KEY
npm install
npm run dev

2. Clone the frontend

git clone git@github.com:pLim-Inc/miniature-forge.git
cd miniature-forge
npm install
npm run dev
# Opens at http://localhost:5173

3. Run infrastructure (Docker)

The backend requires PostgreSQL, Redis, and MinIO:

cd /opt/3dplim
docker compose up -d postgres redis minio

Environment Variables

Required

Variable Description
DATABASE_URL PostgreSQL connection string
JWT_SECRET HMAC-SHA256 signing key
STRIPE_SECRET_KEY Stripe API secret key
STRIPE_WEBHOOK_SECRET Stripe webhook signing secret

Optional (AI Providers)

Variable Description
TRIPO3D_API_KEY Tripo3D API key (prefix tsk_)
MESHY_API_KEY Meshy API key
OPENAI_API_KEY OpenAI key (GPT-4o for prompt optimization)

Optional (Services)

Variable Description
REDIS_URL Redis URL for rate limiting
MINIO_ENDPOINT MinIO S3 endpoint
SMTP_HOST / SMTP_USER / SMTP_PASS Resend SMTP credentials

Project Structure (mdu-api)

/opt/mdu-api/
  app.js           # Express app + poller
  routes.js         # All API routes (56+ endpoints)
  plans.cjs         # Subscription plan limits
  langflow.cjs      # Langflow/GPT-4o integration
  ollama.cjs        # Ollama local AI client
  chunker.cjs       # Text chunking for RAG
  admin-hub.js      # Admin dashboard backend
  requirement-agent.js  # CVO Support Bot
  log-analyzer.js   # System Guardian agent

Note

.cjs extension is required for CommonJS modules because package.json has "type": "module" (ESM default).

Authentication

MDU uses its own JWT-based auth (not Supabase). See Authentication for details.

  • OTP login via email (Resend SMTP)
  • Google OAuth
  • JWT access + refresh tokens stored in localStorage