feat: Implement API modules for admin, auth, exam, result, and setup functionalities

- Created adminApi.ts for admin-related operations including user management and site settings.
- Developed authApi.ts for authentication processes such as registration, login, and profile management.
- Added examApi.ts for handling exam CRUD operations.
- Introduced resultApi.ts for managing results submission and retrieval.
- Established setupApi.ts for initial setup processes and status checks.
- Created ErrorBoundary component to handle rendering errors gracefully in the frontend.
- Re-exported shared API utilities in index.ts for easier access.
This commit is contained in:
LaurensBartelds committed 2026-04-26 20:10:46 +02:00
1 parent 62af83ce53
commit c64cdcd9e3
46 files changed
+2227 -1125

No files matched your search

+31
View File
@@ -0,0 +1,31 @@
import { apiFetch } from '../utils/api.js'
import type { Exam } from '../types'
export interface ExamListItem {
id: number
title: string
subtitle: string | null
created_at: number
updated_at: number
question_count: number
}
export function listExams(): Promise<ExamListItem[]> {
return apiFetch('/api/exams')
}
export function getExam(id: number): Promise<Exam> {
return apiFetch(`/api/exams/${id}`)
}
export function createExam(exam: Exam): Promise<{ id: number; title: string }> {
return apiFetch('/api/exams', { method: 'POST', body: JSON.stringify({ exam }) })
}
export function updateExam(id: number, exam: Exam): Promise<{ success: boolean }> {
return apiFetch(`/api/exams/${id}`, { method: 'PUT', body: JSON.stringify({ exam }) })
}
export function deleteExam(id: number): Promise<{ success: boolean }> {
return apiFetch(`/api/exams/${id}`, { method: 'DELETE' })
}