Logo Lanfrica

tarifit/tarifit-learning-back

Domain:

natural language processing

Record type:

software
Creator:
tar
Host:
# Tarifit Learning Content Service A Spring Boot Kotlin microservice for managing learning content, skills, exercises, and achievements in the Tarifit language learning platform. ## Architecture This service follows strict anemic domain principles with clear separation of concerns: ### Domain Layer (Pure Anemic Data) - **Entities**: Completely anemic data classes with no business logic - **Ports**: Repository interfaces defining data access contracts ### Application Layer (Business Logic) - **Services**: All business logic and domain rules - **Achievement System**: Achievement tracking and validation - **Exercise Validation**: Exercise answer validation and scoring - **Skill Progress**: Skill dependency and progression logic ### Infrastructure Layer (Persistence & External) - **MongoDB Entities**: Separate persistence models with annotations - **Repository Implementations**: Data access layer - **Feign Clients**: External service communication (User Service, Content Service) - **Mappers**: Entity-to-domain mapping ### Adapter Layer (Web Interface) - **Controllers**: REST API endpoints - **DTOs**: Request/response objects - **Exception Handling**: Global error handling ## Features ### Skill Management - Hierarchical skill structure with categories - Skill dependencies and prerequisites - Progress tracking and unlocking logic - Dynamic skill availability based on user progress ### Exercise System - Multiple exercise types (vocabulary, grammar, listening, etc.) - Exercise validation and scoring - Media reference support (audio, images) - Difficulty progression within skills ### Achievement System - Dynamic achievement requirements - Progress calculation and tracking - XP rewards for achievement completion - Integration with user progress service ### Content Management - Media asset references - Exercise type definitions - Skill categorization - Content versioning support ## API Endpoints ### Skills - `GET /api/skills` - Get all skills with user progress - …

Languages