Skip to content

TienNHM/x2mint-backend

Repository files navigation

X2M!NT API

Cấu trúc thư mục

Xem chi tiết
x2mint-backend
│   .gitignore
│   index.js
│   package-lock.json
│   package.json
│   Procfile
│   README.md
├───.vscode
│       settings.json
└───src
    ├───middleware
    │       requireAuth.js
    ├───models
    │       Account.js
    │       Answer.js
    │       Bill.js
    │       Contest.js
    │       enum.js
    │       Question.js
    │       TakeTest.js
    │       TakeTestLogs.js
    │       Test.js
    │       User.js
    ├───routers
    │       adminRoutes.js
    │       answerRoutes.js
    │       authRoutes.js
    │       billRoutes.js
    │       contestRoutes.js
    │       paymentRoutes.js
    │       questionRoutes.js
    │       sendMail.js
    │       takeTestRoutes.js
    │       testRoutes.js
    │       userRoutes.js
    └───utils
            SortObj.js
            Timezone.js

Hướng dẫn cài đặt

  • Bước 1: Clone project
git clone https://github.com/x2mint/x2mint-backend.git
  • Bước 2: Install

Tại thư mục x2mint-backend, mở terminal và gõ lệnh:

npm install

Hoặc:

yarn install
  • Bước 3: Thêm file .env chứa thông tin các biến môi trường:
Tên biến Mô tả
DB_URL Connection string kết nối cơ sở dữ liệu MongoDB.
REACT_APP_SECRET_HASH_KEY Hash key bí mật
REACT_APP_ACCESS_TOKEN_SECRET Token bí mật
REACT_APP_ACTIVATION_TOKEN_SECRET Token kích hoạt
REACT_APP_GOOGLE_CLIENT_ID Google Client ID, đăng ký vào tạo mới project. Xem hướng dẫn chi tiết tại đây.
REACT_APP_GOOGLE_SECRET_KEY Key bí mật của ứng dụng Google.
REACT_APP_MAILING_SERVICE_CLIENT_ID Google Client ID dùng cho việc gửi mail.
REACT_APP_MAILING_SERVICE_CLIENT_SECRET Key bí mật của ứng dụng Google dùng cho việc gửi mail.
REACT_APP_MAILING_SERVICE_REFRESH_TOKEN Refresh token.
REACT_APP_SENDER_EMAIL_ADDRESS Tài khoản email của ứng dụng, dùng cho việc gửi mail thông báo đến người dùng.
REACT_APP_VNP_TMNCODE VNPay tmnCode, hướng dẫn chi tiết về tạo tài khoản thanh toán VNPay xem tại đây.
REACT_APP_VNP_HASHSECRET hashSecret của VNPay.
REACT_APP_VNP_URL Endpoint gọi API thanh toán của VNPay, mặc định là: https://sandbox.vnpayment.vn/paymentv2/vpcpay.html.
REACT_APP_VNP_EMAIL Email tài khoản VNPay.
REACT_APP_CLIENT_URL Link domain của website, VD: http://x2mint.vercel.app. Lưu ý: không có dấu / ở cuối URL.
REACT_APP_API_ROOT App root endpoint, VD: http://api-x2mint.herokuapp.com/app/api/v1.
  • Bước 4: Khởi chạy

Mặc định, server sẽ chạy tại cổng 5005. Mở terminal và chạy lệnh sau:

npm run server

Kết quả:

> backend@1.0.0 server
> nodemon index

[nodemon] 2.0.15
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node index index.js`
Express server listening on port 5005 in development mode
 Mongoose connected 

Cập nhật swagger

Chạy lệnh sau để cập nhật file swagger-output.json:

npm run swagger

Thông tin API sẽ được cập nhật trong file swagger-output.json. Bạn có thể xem Swagger UI tại đường dẫn /doc.

Hướng dẫn deploy lên Heroku

  • Bước 1: Tạo tài khoản Heroku tại đây. Sau đó, tải và cài đặt Heroku CLI theo hướng dẫn tại đây.
  • Bước 2: Tạo file Procfile tại thư mục gốc của project. Lưu ý file trên không có phần mở rộng file. Mở file lên và thêm vào nội dung như sau:
web: npm run server

Sau đó, push code lên master của Github repo.

  • Bước 3: Tạo mới một ứng dụng trên Heroku (<app_name>) theo link này.
    • Bước 3.1: Đặt tên ứng dụng, sau đó bấm Create app.
    • Bước 3.2: Tại mục Deployment method, chọn Github để import. Lưu ý, tài khoản phải được kết nối với Github trước đó.
    • Bước 3.3: Nhập tên Github repo, bấm tìm kiếm. Repo tương ứng hiện ra thì chọn Connect để kết nối.
    • Bước 3.4: Bấm Deploy branch để bắt đầu deploy. Chờ quá trình deploy diễn ra thành công và thông báo Your app was successfully deployed.
  • Bước 4: Thêm biến môi trường cho ứng dụng.
    • Bước 4.1: Tại thư mục gốc của project, mở terminal và chạy lệnh sau: heroku plugins:install heroku-config. Lưu ý: Bắt buộc đã cài đặt Heroku CLI trước đó.
    • Bước 4.2: Cập nhật biến môi trường cho ứng dụng Heroku:
heroku config:push -a <app_name>

Trong đó, <app_name> là tên ứng dụng trên Heroku. Ví dụ:

heroku config:push -a api-x2mint
  • Bước 5: Deploy lại ứng dụng.

Contributors