Works/2024/Json-Server
Live in production
NodeJS
2024
Updated Jul 2024

Json-Server.

API phục vụ toàn bộ site pinit. Giữ json-server lo CRUD, bọc thêm tầng Express cho đăng nhập JWT, tài liệu Swagger và dữ liệu mẫu sinh bằng faker.

shipped · production
▦ /2024 · NodeJS
Shipped · NodeJS
02

Project narrative.

from the maker

Bối cảnh

API phục vụ toàn bộ site pinit: bài viết, project, đăng nhập, hồ sơ. Mục tiêu là có backend đủ thật để frontend phát triển và deploy được, mà không phải dựng database và service riêng.

Vấn đề

json-server cho CRUD miễn phí nhưng dừng ở đó: không xác thực, không tài liệu, và mặc định chỉ chạy trên máy. Muốn dùng thật thì phải bù ba phần đó.

Giải pháp

Giữ json-server lo phần CRUD, bọc thêm tầng Express cho những gì nó thiếu:

  • Đăng nhập bằng jsonwebtoken — cấp JWT, route cần quyền thì kiểm token
  • Tài liệu sinh bằng swagger-jsdoc + swagger-ui-express, mở tại /api-docs để frontend tra cứu mà không cần đọc code
  • Dữ liệu mẫu sinh bằng faker qua script riêng, không phải gõ tay
GitHub Actions docker build amd64 ghcr.io ssh VPS docker compose up workflow dọn image cũ

CI/CD bằng GitHub Actions: build image amd64 ngay trên runner, đẩy lên ghcr, rồi ssh vào VPS chạy compose. Một workflow riêng dọn image cũ và giữ lại 10 bản mới nhất — không có nó thì registry phình theo mỗi lần build.

Kết quả

  • 4 nhóm endpoint: /posts, /works, /login, /profile
  • Đang phục vụ thật cho pinit — trang chủ và trang project lấy dữ liệu từ đây
  • Tài liệu Swagger mở công khai, dùng được ngay để thử endpoint
03

Architecture flow.

2 layers · swappable
01
Layer

API / orchestration layer

json-server dựng REST API từ một file JSON
ExpressJS cho các route tự viết thêm
JWT (jsonwebtoken) cho đăng nhập
faker sinh dữ liệu mẫu
swagger-jsdoc + swagger-ui-express cho tài liệu
GitHub Actions build image và deploy lên VPS
Docker + docker compose
02
Layer

Data layer

db.json làm kho dữ liệu
04

Technical stack.

5 tags
NodeJS
ExpressJS
ReactJS
Faker
Docker