diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f4fbe81..56fe262 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,8 +2,11 @@ name: CI - Test Docker Compose on: push: - branches: [master] + branches: + - master + - Stogare-jwt-and-google-sigin-signout pull_request: + branches: [master] jobs: test-docker-compose: @@ -31,7 +34,3 @@ jobs: run: | sleep 10 docker logs node-app - - - name: Check app is running - run: | - curl --fail http://localhost:3000 || exit 1 diff --git a/README.md b/README.md index e69de29..95b44e4 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,62 @@ +# Backend API với TypeScript, Prisma, Docker, JWT và Google OAuth2 + +## Mô tả dự án + +Dự án backend xây dựng bằng **TypeScript**, sử dụng **Prisma ORM** để kết nối và thao tác với cơ sở dữ liệu PostgreSQL. Dự án hỗ trợ xác thực người dùng bằng **JWT** và đăng nhập qua **Google OAuth2**. + +Dự án được đóng gói trong Docker container để dễ dàng triển khai và phát triển. + +--- + +## Công nghệ sử dụng + +- Node.js & TypeScript +- Prisma ORM (với PostgreSQL) +- Docker & Docker Compose +- JWT Authentication +- Google OAuth2 +- Postgres Database + +--- + +## Cách chạy dự án + +### Yêu cầu + +- Docker & Docker Compose đã được cài đặt +- Node.js (chỉ cần khi bạn muốn chạy local không dùng Docker) + +### 1. Cấu hình biến môi trường + +Tạo file `.env` trong root dự án với các biến sau: + +```env +POSTGRES_URL=postgresql://myuser:mypassword@postgres-db:5432/mydatabase +PORT=3000 +GOOGLE_CLIENT_ID=your-google-client-id +JWT_SECRET=your-jwt-secret +``` + +### 2. Chạy bằng Docker Compose + +```bash +docker-compose up -d +``` + +### 3. Chạy local (không dùng Docker) + +```bash +npm install +npx prisma generate +npx tsc +node dist/server.js +``` + +### API Endpoints chính + +| Phương thức | URL | Mô tả | +| ----------- | -------------- | ---------------------------- | --- | +| POST | `/auth/login` | Đăng nhập bằng JWT | +| POST | `/auth/google` | Đăng nhập bằng Google OAuth2 | +| POST | `/auth/logout` | Đăng xuất | +| GET | `/auth/signup` | Đăng kí | | diff --git a/src/routes/index.routes.ts b/src/routes/index.routes.ts index 0a662d6..eb3bd41 100644 --- a/src/routes/index.routes.ts +++ b/src/routes/index.routes.ts @@ -14,19 +14,10 @@ router.get("/favicon.ico", (req: Request, res: Response) => { res.status(204).end(); }); -router.post("/api/signup", registerUser); -router.post( - "/auth/google-login", - verifyGoogleToken, - authController.googleLogin -); -router.post("/api/login", authController.login); +router.post("/auth/signup", registerUser); +router.post("/auth/google", verifyGoogleToken, authController.googleLogin); +router.post("/auth/login", authController.login); -router.post("/api/logout", verifyJwtToken, authController.logout); -// router.put( -// "/api/matchmaking/start", -// verifyJwtToken, -// matchmaking.startMatchmaking -// ); +router.post("/auth/logout", verifyJwtToken, authController.logout); export default router;