Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tiennhm/x2mint-backend
x2mint APIs
https://github.com/tiennhm/x2mint-backend
cicd express-js google heroku mail mongodb nodejs rest-api swagger swagger-ui vnpay-api
Last synced: 27 days ago
JSON representation
x2mint APIs
- Host: GitHub
- URL: https://github.com/tiennhm/x2mint-backend
- Owner: TienNHM
- Created: 2021-11-10T08:48:11.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2024-09-08T16:16:26.000Z (4 months ago)
- Last Synced: 2024-09-08T18:03:36.120Z (4 months ago)
- Topics: cicd, express-js, google, heroku, mail, mongodb, nodejs, rest-api, swagger, swagger-ui, vnpay-api
- Language: JavaScript
- Homepage: https://x2mint-api.onrender.com/doc
- Size: 531 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# X2M!NT API
[![](https://img.shields.io/badge/API-Documentation-brightgreen)](https://documenter.getpostman.com/view/13444000/UVJeEbgb)
## 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](https://dev.to/chandrapantachhetri/sending-emails-securely-using-node-js-nodemailer-smtp-gmail-and-oauth2-g3a#:~:text=Step%201%3A%20Creating%20a%20Google%20Project). |
| 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](https://sandbox.vnpayment.vn/apis/docs/huong-dan-tich-hop/). |
| REACT_APP_VNP_HASHSECRET| Mã `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ả:**
```
> [email protected] 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`:
```bash
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](https://signup.heroku.com/login). Sau đó, tải và cài đặt Heroku CLI theo hướng dẫn [tại đây](https://devcenter.heroku.com/articles/heroku-cli).
- 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 (``) theo link [này](https://dashboard.heroku.com/new-app).
+ 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](https://devcenter.heroku.com/articles/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
```Trong đó, `` 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
[![](https://avatars.githubusercontent.com/u/33385777?v=4&s=80)](https://github.com/TienNHM)
[![](https://avatars.githubusercontent.com/u/58748687?v=4&s=80)](https://github.com/timomint)