Deployment Notes
This page is a short map of production hosting for Nova Print. The full runbook (DNS, RDS, EC2, Nginx, R2, Cloudflare Pages/Workers, GitHub secrets, first-deploy order, health checks) lives in:
docs/DEPLOYMENT.md
This docs site on Cloudflare Pages (push to main): Docs → Cloudflare Pages.
Admin / POS / Checkout Pages apps: repo docs/CLOUDFLARE_PAGES.md.
Do not treat this page as a substitute for those documents.
What runs where
| App | Folder | Host | Public URL (current prod) |
|---|---|---|---|
| Store | frontend-ecommerce | Cloudflare Workers (OpenNext) | https://novaprint.co.in |
| Admin | frontend-admin-dashboard | Cloudflare Pages nova-print-admin | https://admin.novaorder.in |
| POS | frontend-pos | Cloudflare Pages nova-print-pos | https://pos.novaorder.in |
| Checkout | printbazar-checkout | Cloudflare Pages nova-print-checkout | https://store.novaorder.in |
| Docs | documentation | Cloudflare Pages nova-print-docs | https://docs.novaorder.in |
| API | backend-main | EC2 + Gunicorn + Nginx | https://api.novaorder.in |
| Archive scheduler | backend-main | Same EC2, systemd nova-print-scheduler | not public |
| Database | PostgreSQL | Amazon RDS (private) | not public |
| Media | Django uploads | Cloudflare R2 | https://media.novaorder.in |
Local stays on SQLite + disk uploads. Production is where DATABASE_URL and R2_BUCKET_NAME are set (docs/DEPLOYMENT.md).
CI / CD
GitHub Actions on push to main (path-filtered) or workflow_dispatch:
| Workflow | Effect |
|---|---|
deploy-backend.yml | rsync API to EC2, migrate, collectstatic, restart nova-print-api, install/restart nova-print-scheduler |
deploy-ecommerce.yml | OpenNext build + Worker deploy |
deploy-admin.yml / deploy-pos.yml / deploy-checkout.yml | Vite build → Wrangler Pages publish |
deploy-documentation.yml | Docusaurus build → Wrangler Pages publish (nova-print-docs) |
Docs site deploy guide: Docs → Cloudflare Pages. Other Pages apps: docs/CLOUDFLARE_PAGES.md.
Frontend VITE_* / NEXT_PUBLIC_* are build-time; changing a GitHub secret requires re-running the matching workflow. Env catalog: Environment variables.
Payments (Razorpay)
Ecommerce storefront only. Keys on the API host; enable in Admin → Ecommerce → Payment Options.
→ docs/RAZORPAY_SETUP.md
Archive scheduler
Daily 02:00 Asia/Kolkata job on the same EC2 as the API (manage.py runapscheduler, unit nova-print-scheduler). No Celery/Redis/OS cron.
→ docs/ARCHIVE_SCHEDULER_DEPLOY.md
Local: run python manage.py runapscheduler beside runserver (Local development).
Admin SQL editor
Hidden Admin route /sql-editor (superuser only). Production example: https://admin.novaorder.in/sql-editor. API: POST /api/sql-editor/execute/.
→ docs/SQL_EDITOR.md
Quick verify after deploy
From docs/DEPLOYMENT.md § Confirm it works:
curl -sI https://api.novaorder.in/api/
curl -sI https://novaprint.co.in
curl -sI https://admin.novaorder.in
curl -sI https://pos.novaorder.in
curl -sI https://store.novaorder.in
curl -sI https://media.novaorder.in
Also confirm Admin/POS call https://api.novaorder.in/api/..., media URLs use media.novaorder.in, and POS checkout links use store.novaorder.in.