Initial commit: add FastAPI MVP (모프) and existing web app

Includes FastAPI+Jinja2+HTMX+SQLite implementation with seed categories, plus deployment templates.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dsyoon
2026-02-16 17:17:22 +09:00
commit 27540269b7
37 changed files with 3246 additions and 0 deletions

69
docker-compose.yml Normal file
View File

@@ -0,0 +1,69 @@
services:
web:
build:
context: ./apps/web
dockerfile: Dockerfile
environment:
NODE_ENV: production
PORT: 3000
DATABASE_URL: ${DATABASE_URL}
NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_SITE_URL:-https://prompt.ncue.net}
restart: unless-stopped
networks:
- allprompt
caddy:
image: caddy:2
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy_data:/data
- caddy_config:/config
environment:
CADDY_EMAIL: ${CADDY_EMAIL}
depends_on:
- web
restart: unless-stopped
networks:
- allprompt
# 1회성: 스키마 적용(필요할 때만)
db_init:
image: postgres:16
profiles: ["init"]
volumes:
- ./apps/web/db/schema.sql:/schema.sql:ro
environment:
PGHOST: ${PGHOST:-ncue.net}
PGDATABASE: ${PGDATABASE:-all_prompt}
PGUSER: ${PGUSER:-ncue}
PGPASSWORD: ${PGPASSWORD}
entrypoint: ["/bin/bash", "-lc"]
command: ["psql -v ON_ERROR_STOP=1 -f /schema.sql"]
networks:
- allprompt
# 1회성: 시드 데이터(필요할 때만)
db_seed:
build:
context: ./apps/web
dockerfile: Dockerfile
profiles: ["init"]
environment:
NODE_ENV: production
DATABASE_URL: ${DATABASE_URL}
entrypoint: ["/bin/bash", "-lc"]
command: ["node -e \"console.log('Seeding...')\" && npx prisma db seed --schema prisma/schema.prisma"]
networks:
- allprompt
networks:
allprompt:
driver: bridge
volumes:
caddy_data:
caddy_config: