Files
compor-academy/types.ts
Cauê Faleiros 3d4c72e85c
All checks were successful
CI / Validate frontend and API (push) Successful in 45s
CI / Build and publish Docker images (push) Successful in 24s
feat: improve learning and platform operations
2026-09-01 15:38:14 -03:00

71 lines
1.6 KiB
TypeScript

export type SectionVariant = 'landscape' | 'portrait';
export type AttachmentType = 'pdf' | 'spreadsheet' | 'zip' | 'doc' | 'image' | 'link' | 'video';
export interface Attachment {
id: string;
name: string;
type: AttachmentType;
url: string;
size?: string; // e.g. "4.2 MB"
description?: string;
lessonId?: string; // Associated lesson or global course asset
downloadCount?: number;
}
export interface Lesson {
id: string;
title: string;
duration: string;
videoUrl: string;
mediaProvider?: string;
isFree: boolean; // true = Public, false = Pro (Login required)
description?: string;
attachments?: Attachment[]; // Lesson-specific downloadable materials
}
export interface Course {
id: string;
title: string;
category: string;
thumbnail: string;
lessons: Lesson[];
progress?: number; // 0 to 100
views?: number;
duration: string; // Total duration or lesson count
description: string;
instructor?: string;
instructorRole?: string;
tips?: string[]; // Key takeaways / instructor tips
attachments?: Attachment[]; // Downloadable materials across entire course
status?: 'draft' | 'published';
lastActivity?: string;
}
export interface Section {
title: string;
variant: SectionVariant;
courses: Course[];
}
export type UserRole = 'superadmin' | 'professor' | 'student';
export interface User {
id: string;
email: string;
name: string;
role: UserRole;
avatar?: string;
}
export interface Comment {
id: string;
courseId: string;
lessonId?: string;
user: string;
text: string;
date: string;
reply?: string; // Professor's reply
replyDate?: string;
}