Neo Academy Django and Next.js MVP

Neo Academy is now scaffolded as an isolated Django backend and Next.js frontend. The backend owns courses, enrollments, progress, Razorpay orders, certificate issuance, certificate verification, and the Django admin panel. The frontend owns learner-facing pages at /academy/.

Services

Environment

NamePurpose
DJANGO_SECRET_KEYRequired Django signing and security secret.
DJANGO_ALLOWED_HOSTSComma-separated host allowlist for Django.
DJANGO_CSRF_TRUSTED_ORIGINSTrusted HTTPS origins for admin and browser requests.
POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORDPostgreSQL database name, app user, and password for Django.
POSTGRES_HOST_PORTLocal-only Compose port for backend validation, defaulting to 55432.
RAZORPAY_KEY_IDPublic Razorpay key identifier used by payment order creation.
RAZORPAY_KEY_SECRETSecret key used by the backend to create and verify Razorpay payments.
NEXT_PUBLIC_API_BASEServer-side Next.js API base, defaulting to http://academy-backend:8000/api.
NEXT_PUBLIC_BROWSER_API_BASEBrowser API base, defaulting to same-origin /api.

API Surface

RouteUse
POST /api/auth/register, POST /api/auth/login, GET /api/auth/meLearner account token flow.
GET /api/academy/courses, GET /api/academy/courses/:slugPublished course catalog and details.
POST /api/academy/courses/:slug/enroll, POST /api/academy/courses/:slug/progressEnrollment and progress tracking.
POST /api/payments/razorpay/orders, POST /api/payments/razorpay/verifyRazorpay order and signature verification flow.
POST /api/academy/courses/:slug/certificate, GET /api/academy/certificates/:idCertificate issuance and public verification.
GET /api/academy/admin/dashboardStaff-only metrics for the frontend admin dashboard.

Validation

cd academy/backend && uv sync
docker compose up -d academy-postgres
cd academy/backend && set -a && . ../../.env && set +a && POSTGRES_HOST=127.0.0.1 POSTGRES_PORT=${POSTGRES_HOST_PORT:-55432} uv run python manage.py test
cd academy/frontend && npm install && npm run build
docker compose config