LearnEngServer là backend API (RESTful) dành cho ứng dụng học tiếng Anh, được xây dựng bằng Python với FastAPI. Server cung cấp các API để quản lý người dùng, xác thực (Authentication), và đồng bộ dữ liệu (Sync).
- Web Framework: FastAPI
- Server ASGI: Uvicorn
- Database ORM: SQLModel
- Database Driver: PostgreSQL (
psycopg) - Authentication: JWT (JSON Web Tokens),
bcryptvàpython-jose
- Python 3.9+
- PostgreSQL server (đã được cài đặt và đang chạy)
Làm theo các bước sau để thiết lập môi trường và chạy server ở môi trường phát triển (development):
Mở terminal/command prompt và di chuyển vào thư mục dự án, sau đó tạo và kích hoạt môi trường ảo:
Trên Windows:
python -m venv .venv
.venv\Scripts\activateTrên macOS/Linux:
python3 -m venv .venv
source .venv/bin/activatepip install -r requirements.txtTạo một file .env ở thư mục gốc (ngang hàng với main.py) bằng cách copy từ file .env.example:
cp .env.example .envMở file .env và điền các thông tin kết nối tới database PostgreSQL cũng như các secret key của bạn:
POSTGRES_SERVER=localhost
POSTGRES_PORT=5432
POSTGRES_DB=tên_database_cua_ban
POSTGRES_USER=postgres
POSTGRES_PASSWORD=mật_khẩu_cua_ban
SECRET_KEY=mot_chuoi_bi_mat_dai_va_ngau_nhien
ACCESS_TOKEN_EXPIRE_MINUTES=30
REFRESH_TOKEN_EXPIRE_DAYS=7(Lưu ý: Đảm bảo database đã được tạo trong PostgreSQL trước khi chạy server. Ứng dụng sẽ tự động tạo các bảng khi khởi động nếu chưa có).
Sau khi đã thiết lập xong biến môi trường, bạn có thể chạy server thông qua uvicorn:
uvicorn main:app --reloadTham số --reload giúp server tự động khởi động lại mỗi khi bạn thay đổi code (chỉ dùng trong môi trường phát triển).
Khi server đang chạy (mặc định tại http://localhost:8000 hoặc http://127.0.0.1:8000), FastAPI tự động cung cấp tài liệu API tương tác:
- Swagger UI: http://localhost:8000/docs (Dùng để test API trực tiếp)
- ReDoc: http://localhost:8000/redoc
LearnEngServer/
├── api/ # Chứa các router (auth, user, sync,...)
├── core/ # Chứa file cấu hình (config), kết nối DB
├── model/ # Chứa định nghĩa các Models (Entity, DTO)
├── public/uploads/ # Thư mục lưu trữ file upload tĩnh
├── .env.example # File mẫu chứa các biến môi trường
├── main.py # Entry point của ứng dụng (nơi khởi tạo FastAPI app)
└── requirements.txt # Danh sách các thư viện Python cần thiết