DeshiCourse is a Next.js 15 application for the public marketing site, checkout and payment flows, member dashboard, and the in-app super admin console.
- Next.js 15 App Router
- React 19
- TypeScript
- Tailwind CSS 4
- Supabase Auth + Postgres
- ZiniPay payment flow
- Nodemailer, Telegram, Google Sheets, Google Drive integrations
- Node.js 20+
- npm
- Supabase project credentials
npm install
cp .env.example .env.localFill the required values in .env.local before starting the app.
npm run devOpen http://localhost:3000.
npm run dev- start the local development servernpm run build- run the production Next.js buildnpm run build:isolated- run a production build into.next-buildwithout touching the active.nextdirectorynpm run start- start the standalone production buildnpm run lint- run ESLintnpm run lint:fix- auto-fix lint issues where possiblenpm run typecheck- run TypeScript without emitting filesnpm run clean- remove local build/test artifactsnpm run test:e2e- run Playwright end-to-end tests
Copy from .env.example. The main groups are:
NEXT_PUBLIC_SITE_URLAPP_URLADMIN_EMAIL_ALLOWLIST
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEYSUPABASE_SECRET_KEYSUPABASE_MEDIA_BUCKET
ZINIPAY_API_KEY
SMTP_HOSTSMTP_PORTSMTP_SECURESMTP_USERSMTP_PASSSMTP_FROM
NEXT_PUBLIC_GTM_IDMETA_PIXEL_IDNEXT_PUBLIC_META_PIXEL_IDMETA_CAPI_ACCESS_TOKENMETA_DATASET_QUALITY_ACCESS_TOKEN
APP_CRON_SECRETTELEGRAM_BOT_TOKENTELEGRAM_CHANNEL_IDTELEGRAM_SUPPORT_GROUP_IDTELEGRAM_TEMPLATE_CHANNEL_IDTELEGRAM_VIBE_CHANNEL_IDTELEGRAM_VIBE_TEMPLATE_CHANNEL_IDTELEGRAM_VIBE_SUPPORT_GROUP_ID
GOOGLE_SHEETS_SPREADSHEET_IDGOOGLE_SHEETS_SHEET_NAMEGOOGLE_SHEETS_CLIENT_EMAILGOOGLE_SHEETS_PRIVATE_KEYGOOGLE_DRIVE_SERVICE_ACCOUNT_CLIENT_EMAILGOOGLE_DRIVE_SERVICE_ACCOUNT_PRIVATE_KEY
Run the Supabase migrations before using /admin:
supabase/migrations/20260405_admin_content_cms.sqlsupabase/migrations/20260406_production_admin_console.sql
After the migration:
- Sign in with an email included in
ADMIN_EMAIL_ALLOWLIST - Open
/admin - Run the legacy content sync once
- Framework preset:
Next.js - Node.js version:
20.x - Install command:
npm install - Build command:
npm run build
At minimum:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEYSUPABASE_SECRET_KEYZINIPAY_API_KEYNEXT_PUBLIC_SITE_URLADMIN_EMAIL_ALLOWLIST
- Preview deployments can safely derive the current host from request headers for redirects and metadata where needed.
.vercelignoreexcludes local logs, temporary files, and private env files from uploads.- If you use the delivery job processor route, trigger it from a scheduler with
Authorization: Bearer <APP_CRON_SECRET>.
Before pushing or deploying:
npm run lint
npm run typecheck
npm run build:isolated