Getting Started¶
Developer quickstart guide for Mini Dream Universe.
Prerequisites¶
- Node.js 20+
- Docker & Docker Compose
- Git access to
pLim-IncGitHub 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:
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