# Yimaru Backend Yimaru Backend is the server-side application that powers the Yimaru online learning system. It manages courses, lessons, quizzes, student progress, instructor content, and administrative operations for institutions and users on the platform. ## Table of Contents - [Installation](#installation) - [Environment Configuration](#environment-configuration) - [Running the Application](#running-the-application) - [Database Management](#database-management) - [Testing and Code Quality](#testing-and-code-quality) - [API Documentation](#api-documentation) - [Project Structure](#project-structure) - [Core Services Overview](#core-services-overview) - [Roles and Access Control](#roles-and-access-control) - [Code Organization Guidelines](#code-organization-guidelines) - [Further Details](#further-details) --- ## Installation Before running the application, ensure you have the following installed: - [Go](https://golang.org/doc/install) (1.20+ recommended) - [Docker](https://www.docker.com/) - [Air](https://github.com/cosmtrek/air) — for live reloading during development - [SQLC](https://sqlc.dev) - [Migrate](https://github.com/golang-migrate/migrate) - [Swag](https://github.com/swaggo/swag) Clone the repository: ```bash git clone https://github.com/your-org/Yimaru-backend.git cd Yimaru-backend ├── cmd/ │ └── main.go # Application entry point ├── internal/ │ ├── config/ # Configuration and environment loading │ │ └── config.go │ ├── domain/ # Domain models, constants, and roles │ │ ├── course.go # Course and lesson structures │ │ └── roles.go # Role definitions (e.g., RoleAdmin, RoleInstructor) │ ├── repository/ # Database interaction layer │ │ ├── course.go # Course-related queries │ │ ├── lesson.go # Lesson-related database functions │ │ ├── user.go # User repository methods │ │ └── ... # Other repository files │ ├── services/ # Business logic and core services │ │ ├── course/ │ │ │ └── service.go # Course management logic │ │ └── quiz/ │ │ ├── service.go # Quiz management and evaluation logic │ │ └── eval.go # Evaluation logic for student progress │ └── web_server/ # HTTP handlers, routes, middleware, and cron jobs │ ├── cron.go # Scheduled background tasks │ └── handlers/ │ ├── course_handler.go # Course-related API endpoints │ ├── user_handler.go # User-related endpoints │ └── ... # Additional handlers ├── db/ │ └── migrations/ # SQL migration files ├── docs/ │ ├── swagger/ # Swagger/OpenAPI documentation files │ └── docs.go # Swaggo-generated docs ├── gen/ │ └── db/ # SQLC-generated Go code for database access ├── makefile # Development and operations commands ├── .env # Environment configuration file └── README.md # Project documentation