2026-02-02 11:07:09 +07:00
2026-02-10 10:25:22 +07:00
2026-02-02 11:07:09 +07:00
2026-02-02 11:07:09 +07:00
2026-02-02 11:07:09 +07:00

Content Management System - GGCamp

Mô Tả Dự Án

Hệ thống quản lý nội dung (CMS) cho Swiss International Management School (SIMS), cung cấp giải pháp quản lý và hiển thị thông tin học viện một cách chuyên nghiệp và hiệu quả.

Yêu Cầu Hệ Thống

  • Node.js (v16 hoặc cao hơn)
  • MongoDB (v4.4 hoặc cao hơn)
  • npm (v8 hoặc cao hơn)

Cài Đặt Ban Đầu

1. Clone Dự Án

git clone https://github.com/your-username/sims-cms.git
cd sims-cms

2. Cài Đặt Dependencies

npm install

3. Cấu Hình Môi Trường

Tạo file .env trong thư mục gốc với các cấu hình sau:

PORT=3000
MONGODB_URI=mongodb://localhost:27017/SIMS
BACKEND_URL=http://localhost:3000
FRONTEND_URL=http://localhost:8080
SESSION_SECRET=your_secret_key

Hệ Thống Migration

Hệ thống migration sử dụng cơ chế tracking để quản lý các migration đã chạy, tương tự Laravel. Tất cả các file migration được tự động phát hiện trong thư mục scripts/ (trừ các file quản lý migration).

Các Lệnh Migration

1. Chạy Migrations Chưa Chạy

Chạy tất cả các migrations chưa được thực thi (có tracking, tự động skip migrations đã chạy):

npm run migrate

Tính năng:

  • Tự động phát hiện tất cả file migration trong thư mục scripts/
  • Chỉ chạy các migrations chưa được thực thi
  • Tự động skip migrations đã chạy
  • Tracking migrations trong database với batch number
  • Hiển thị bảng kết quả với trạng thái: DONE, SKIPPED, FAIL

2. Chạy Lại Tất Cả Migrations (Fresh)

Xóa tất cả tracking và chạy lại tất cả migrations từ đầu:

npm run migrate-fresh

Lưu ý: Lệnh này sẽ xóa tất cả records trong collection migrations và chạy lại tất cả migrations từ đầu. Sử dụng cẩn thận trong môi trường production.

3. Xem Trạng Thái Migrations

Kiểm tra trạng thái của tất cả migrations:

npm run migrate-status

Hiển thị:

  • Danh sách tất cả migrations
  • Trạng thái: Ran hoặc Pending
  • Batch number và thời gian chạy (nếu đã chạy)
  • Tóm tắt: số lượng migrations đã chạy và chưa chạy

4. Rollback Migrations

Rollback một migration cụ thể:

npm run migrate-rollback <migration-name>

Rollback batch cuối cùng:

npm run migrate-rollback --batch

Ví dụ:

npm run migrate-rollback 2025_12_02_114125_home
npm run migrate-rollback --batch

5. Tạo Migration Mới

Tạo file migration mới với format timestamp tự động:

npm run make-migration <migration-name>

Ví dụ:

npm run make-migration create_users_table

File migration sẽ được tạo với format: YYYY_MM_DD_HHMMSS_<migration-name>.js

Template migration:

  • Tự động kết nối database
  • Có sẵn cấu trúc cơ bản
  • Tự động disconnect sau khi hoàn thành

Quy Tắc Migration

  1. Format tên file: YYYY_MM_DD_HHMMSS_migration_name.js
  2. Tự động phát hiện: Tất cả file .js trong thư mục scripts/ (trừ các file quản lý)
  3. Tracking: Migrations được track trong collection migrations của MongoDB
  4. Batch system: Migrations được nhóm theo batch để dễ quản lý
  5. Thứ tự chạy: Migrations được sắp xếp theo tên (alphabetical) để đảm bảo thứ tự nhất quán

Chạy Ứng Dụng

Chế Độ Phát Triển

npm run dev

Ứng dụng sẽ chạy trên http://localhost:3000

Chế Độ Sản Xuất

npm start

Cấu Trúc Thư Mục

sims-cms/
│
├── config/             # Cấu hình ứng dụng
├── controllers/        # Logic xử lý
├── data/               # Dữ liệu JSON gốc
├── middleware/         # Các middleware
├── models/             # Mongoose models
├── public/             # Tài nguyên tĩnh
├── routes/             # Định nghĩa routes
├── scripts/            # Migration scripts
├── utils/              # Các hàm tiện ích
└── views/              # Giao diện EJS

Các Lệnh Quan Trọng

Ứng Dụng

  • npm run dev: Chạy ứng dụng ở chế độ phát triển (với nodemon)
  • npm start: Chạy ứng dụng ở chế độ sản xuất

Migration

  • npm run migrate: Chạy tất cả migrations chưa chạy
  • npm run migrate-fresh: Chạy lại tất cả migrations từ đầu
  • npm run migrate-status: Xem trạng thái tất cả migrations
  • npm run migrate-rollback <name>: Rollback một migration cụ thể
  • npm run migrate-rollback --batch: Rollback batch cuối cùng
  • npm run make-migration <name>: Tạo migration file mới
Description
No description provided
Readme 11 MiB
Languages
EJS 73%
JavaScript 26.5%
CSS 0.5%