feat(v3): restructure project + add complete frontend

- Restructure: move backend from new_project/ to backend/
- Add full React/TypeScript frontend (37 pages, 17 services, 16 type defs, 11 query hooks)
- Add docs/ with SRS specs, user stories, and workflow documentation
- Update .gitignore for new directory layout

Workflows implemented:
  WF1 User Signup, WF2 Placement Test, WF3 Exam Configuration,
  WF4 General English Exam, WF5 Course Generation,
  WF6 Entity Student Onboarding, AI Course Generation,
  Adaptive Learning Engine UI, White-Label Branding, Score Release

Made-with: Cursor
This commit is contained in:
Yamen Ahmad
2026-04-10 17:26:42 +04:00
commit 11a7265460
392 changed files with 62287 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
import { api } from "@/lib/api-client";
import type { ExamSession, ExamStat, StatisticalData } from "@/types";
export const statsService = {
async getSessions(params?: Record<string, string | number | boolean | undefined>): Promise<ExamSession[]> {
return api.get<ExamSession[]>("/sessions", params);
},
async getStats(params?: Record<string, string | number | boolean | undefined>): Promise<ExamStat[]> {
return api.get<ExamStat[]>("/stats", params);
},
async getStatistical(params?: { entity_id?: number; start_date?: string; end_date?: string }): Promise<StatisticalData> {
return api.get<StatisticalData>("/statistical", params as Record<string, string | number | boolean | undefined>);
},
async getPerformance(params?: { entity_id?: number; search?: string }): Promise<unknown[]> {
return api.get<unknown[]>("/stats/performance", params as Record<string, string | number | boolean | undefined>);
},
};