A multi-tenant assessment and study platform for organizations. Supports two modes: Study Mode (spaced repetition, flashcards, self-paced learning) and Assessment Mode (timed tests, proctoring, scoring, certification).
- Spaced Repetition (SM-2) — Optimized review scheduling based on performance
- MCQ Engine — Multiple-choice questions with auto-grading
- AI Content Generation — Create MCQs from PDFs with GPT-4 Vision
- Multi-Tenant — Organizations with role-based access (owner/admin/creator/candidate)
- Feature Flags — Enable/disable features per organization
- Analytics — Study heatmaps, topic accuracy radar, skill gap analysis
- Dark Mode — Full dark mode support with WCAG AA contrast compliance
- Mobile-First — Responsive design, PWA support
- Framework: Next.js 16 (App Router)
- Database: Supabase (PostgreSQL + Auth + RLS + Storage)
- Styling: Tailwind CSS 4 + shadcn/ui
- Testing: Vitest + fast-check (property-based testing)
- Validation: Zod
- AI: OpenAI SDK
- Node.js 20+
- A Supabase project
git clone <your-repo-url>
cd cekatan
npm install- Create a new Supabase project
- Go to SQL Editor and run
schema.sql - Enable Google Auth in Authentication > Providers
cp .env.local.example .env.localRequired variables:
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
OPENAI_API_KEY=your-openai-api-key
npm run dev| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Build for production |
npm run start |
Start production server |
npm run test |
Run tests once |
npm run test:watch |
Run tests in watch mode |
npm run lint |
Run ESLint |
npm run seed |
Seed database with sample data |
src/
├── actions/ # Server Actions (mutations)
├── app/ # Next.js App Router pages
├── components/ # React components (by feature domain)
│ └── ui/ # Reusable UI primitives
├── hooks/ # Custom React hooks
├── lib/ # Pure functions & utilities
├── types/ # TypeScript type definitions
└── __tests__/ # Property-based tests
Property-based testing with fast-check:
npm run testTests cover core algorithms (SM-2, streak), authorization, validation, and UI properties.
Private project.