Yimaru-BackEnd/README.md

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