first commit

This commit is contained in:
Space
2026-01-17 13:37:57 +01:00
commit 3e34d84a29
49 changed files with 8579 additions and 0 deletions

149
app/types/api.ts Normal file
View File

@@ -0,0 +1,149 @@
// API Types matching backend models
export interface GradingCategory {
name: string;
weight: number;
color?: string;
}
export interface Subject {
_id: string;
name: string;
grading_categories: GradingCategory[];
color?: string;
teacher?: string;
grade_system?: string;
target_grade?: number;
target_grade_max?: number;
created_at: string;
updated_at: string;
}
export interface SubjectCreate {
name: string;
grading_categories: GradingCategory[];
color?: string;
teacher?: string;
grade_system?: string;
target_grade?: number;
target_grade_max?: number;
}
export interface SubjectUpdate {
name?: string;
grading_categories?: GradingCategory[];
color?: string;
teacher?: string;
grade_system?: string;
target_grade?: number;
target_grade_max?: number;
}
export interface Grade {
_id: string;
subject_id: string;
category_name: string;
grade: number;
max_grade: number;
weight_in_category: number;
name?: string;
date: string;
notes?: string;
created_at: string;
updated_at: string;
}
export interface GradeCreate {
subject_id: string;
category_name: string;
grade: number;
max_grade: number;
weight_in_category?: number;
name?: string;
date?: string;
notes?: string;
}
export interface GradeUpdate {
category_name?: string;
grade?: number;
max_grade?: number;
weight_in_category?: number;
name?: string;
date?: string;
notes?: string;
}
export interface ReportPeriod {
_id: string;
name: string;
start_date: string;
end_date: string;
created_at: string;
updated_at: string;
}
export interface ReportPeriodCreate {
name: string;
start_date: string;
end_date: string;
}
export interface ReportPeriodUpdate {
name?: string;
start_date?: string;
end_date?: string;
}
export interface TeacherGrade {
_id: string;
subject_id: string;
period_id: string;
grade: number;
max_grade: number;
notes?: string;
created_at: string;
updated_at: string;
}
export interface TeacherGradeCreate {
subject_id: string;
period_id: string;
grade: number;
max_grade: number;
notes?: string;
}
export interface TeacherGradeUpdate {
grade?: number;
max_grade?: number;
notes?: string;
}
export interface User {
_id: string;
email: string;
username: string;
created_at: string;
}
export interface UserLogin {
email: string;
password: string;
}
export interface UserRegister {
email: string;
username: string;
password: string;
}
export interface AuthResponse {
access_token: string;
token_type: string;
user: User;
}
export interface ApiError {
detail: string;
}