package domain import "time" type CourseCategory struct { ID int64 Name string // "Learning English", "Other Courses" IsActive bool CreatedAt time.Time } type Course struct { ID int64 CategoryID int64 Title string Description string IsActive bool } type Program struct { ID int64 CourseID int64 Title string Description string Thumbnail string Order int // ordering inside course IsActive bool } type Level struct { ID int64 ProgramID int64 Title string // "Beginner", "Level 1" Description string LevelIndex int // 1,2,3... NumberOfModules int NumberOfPractices int NumberOfVideos int IsActive bool } type Module struct { ID int64 LevelID int64 Title string Content string Order int IsActive bool } type ModuleVideo struct { ID int64 ModuleID int64 Title string Description string VideoURL string Duration int // seconds Resolution string // "720p", "1080p" PublishSettings PublishSettings IsActive bool InstructorId string Thumbnail string } type PublishSettings struct { IsPublished bool PublishDate time.Time Visibility string // "public", "private", "unlisted" } type Practice struct { ID int64 OwnerType string // "LEVEL" | "MODULE" OwnerID int64 Title string Description string BannerImage string Persona string IsActive bool } type PracticeQuestion struct { ID int64 PracticeID int64 Question string QuestionVoicePrompt string SampleAnswerVoicePrompt string SampleAnswer string Tips string Type string // MCQ, TRUE_FALSE, SHORT }