A Next.js app for building and sharing FFCS (Fully Flexible Credit System) timetables. It includes authenticated scheduling, slot browsing, sharing, and feedback workflows.
- Timetable creation and validation
- Course and slot browsing
- Authenticated sharing and saved timetables
- Feature flags for controlled rollouts
- Telemetry with Sentry and PostHog
- Next.js 16 (App Router)
- React 19
- MongoDB with Mongoose
- NextAuth
- Tailwind CSS
- Flagsmith, Sentry, PostHog, Upstash Redis
- Install dependencies
npm install- Create your local environment file
cp .env.example .env.local- Start the dev server
npm run devOpen http://localhost:3000 in your browser.
The example file lists all required variables: .env.example.
Minimum local setup typically needs:
MONGODB_URINEXTAUTH_URLNEXTAUTH_SECRET
Optional integrations (recommended for full parity):
- Google OAuth:
GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET - Upstash:
UPSTASH_REDIS_REST_URL,UPSTASH_REDIS_REST_TOKEN - Flagsmith:
NEXT_PUBLIC_FLAGSMITH_ENVIRONMENT_ID,NEXT_PUBLIC_FLAGSMITH_API_URL - PostHog:
NEXT_PUBLIC_POSTHOG_PROJECT_TOKEN,NEXT_PUBLIC_POSTHOG_HOST - Sentry:
NEXT_PUBLIC_SENTRY_DSN,SENTRY_DSN,SENTRY_ORG,SENTRY_PROJECT
For environment setup details and troubleshooting, see docs/developer/ENV_SETUP.md.
npm run dev- start the dev servernpm run build- build for productionnpm run start- run the production servernpm run lint- lint the codebasenpm run seed- seed course datanpm run load:public- load test public pagesnpm run load:shared- load test shared timetable pagesnpm run load:auth- load test authenticated flowsnpm run load:all- load test all scenarios
See docs/feature-flags.md for naming, rollout rules, and cleanup guidance.
See LICENSE.