72 lines
3.4 KiB
Markdown
72 lines
3.4 KiB
Markdown
# 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
|