{"id":48688569,"url":"https://github.com/lgdlong/chat-app-project","last_synced_at":"2026-04-11T04:38:58.767Z","repository":{"id":289068222,"uuid":"970009448","full_name":"lgdlong/chat-app-project","owner":"lgdlong","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-12T17:51:11.000Z","size":2865,"stargazers_count":3,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-12T19:41:02.123Z","etag":null,"topics":["postgresql","reactjs","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lgdlong.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-21T10:02:13.000Z","updated_at":"2025-06-27T01:27:32.000Z","dependencies_parsed_at":"2025-05-06T21:25:03.067Z","dependency_job_id":"1465cc97-d7b0-4e59-a262-5aeac3550bf7","html_url":"https://github.com/lgdlong/chat-app-project","commit_stats":null,"previous_names":["lgdlong/chat-app-project"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lgdlong/chat-app-project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lgdlong%2Fchat-app-project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lgdlong%2Fchat-app-project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lgdlong%2Fchat-app-project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lgdlong%2Fchat-app-project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lgdlong","download_url":"https://codeload.github.com/lgdlong/chat-app-project/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lgdlong%2Fchat-app-project/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31669117,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T17:19:37.612Z","status":"online","status_checked_at":"2026-04-11T02:00:05.776Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["postgresql","reactjs","spring-boot"],"created_at":"2026-04-11T04:38:57.964Z","updated_at":"2026-04-11T04:38:58.737Z","avatar_url":"https://github.com/lgdlong.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎯 Chat App Project\r\n\r\nỨng dụng chat thời gian thực dành cho sinh viên, bao gồm chức năng nhắn tin, đăng nhập, và nhóm chat.\r\n\r\n---\r\n\r\n## 📚 Mục lục\r\n\r\n- [🧠 Tính năng chính](#-tính-năng-chính)\r\n- [🔧 Công nghệ sử dụng](#-công-nghệ-sử-dụng)\r\n- [🗂️ Cấu trúc thư mục](#️-cấu-trúc-thư-mục)\r\n- [🚀 Workflow](#-workflow)\r\n- [📜 Makefile Commands](#-makefile-commands)\r\n- [👉 Branch naming convention prefixes](#-branch-naming-convention-prefixes)\r\n- [📝 Commit Message Convention](#-commit-message-convention)\r\n- [👨‍💻 Nhóm phát triển](#-nhóm-phát-triển)\r\n\r\n---\r\n\r\n## 🧠 Tính năng chính\r\n\r\n- Đăng nhập / đăng ký người dùng\r\n- Chat real-time (WebSocket)\r\n- Chat nhóm\r\n- Giao diện thân thiện với sinh viên\r\n\r\n---\r\n\r\n## 🔧 Công nghệ sử dụng\r\n\r\n### Frontend\r\n- ReactJS + Vite\r\n- Bootstrap / TailwindCSS\r\n\r\n### Backend\r\n- Java Spring Boot\r\n- Spring Security, WebSocket\r\n- PostgreSQL\r\n- REST API\r\n\r\n---\r\n\r\n## 🗂️ Cấu trúc thư mục\r\n\r\n\r\n```\r\n\r\nchat-app-project/ \r\n├── backend/ # Spring Boot service (REST API, DB) \r\n├── frontend/ # React + Vite client (UI) \r\n├── database/ # init.sql file (schema + seed data) \r\n├── docs/\r\n├── docker-compose.yml \r\n├── Makefile \r\n└── README.md\r\n\r\n```\r\n\r\n----------\r\n\r\n## 🚀 Workflow\r\n\r\n### 🧩 1. Khi bắt đầu làm việc (sau khi clone / pull)\r\n\r\n```bash\r\nmake project-restart\r\n\r\n```\r\n\r\n\u003e Xoá volume cũ, rebuild và khởi chạy lại toàn bộ project (DB sẽ được khởi tạo từ `init.sql`)\r\n\r\n----------\r\n\r\n### 💻 2. Code feature, fix bug, thêm data vào DB\r\n\r\n\u003e Làm việc bình thường trên frontend/backend, test API, thêm dữ liệu...\r\n\r\n----------\r\n\r\n### 💾 3. Sau khi đã cập nhật database (schema hoặc data)\r\n\r\n```bash\r\nmake db-backup\r\n\r\n```\r\n\r\n\u003e Backup lại toàn bộ database vào `./database/init.sql` để người khác dùng lại\r\n\r\n----------\r\n\r\n### ✅ 4. (Tuỳ chọn) Kiểm tra lại DB init mới có dùng được không\r\n\r\n```bash\r\nmake project-restart\r\n\r\n```\r\n\r\n\u003e Xác nhận rằng `init.sql` có thể reset lại đúng database từ đầu\r\n\r\n----------\r\n\r\n\r\n### 🚀 5. Commit \u0026 Push\r\n\r\n```bash\r\ngit add .\r\ngit commit -m \"✨ Update init.sql + tính năng mới\"\r\ngit push origin main\r\n\r\n```\r\n\r\n\u003e 📝 **Lưu ý:** Trước khi commit, hãy đảm bảo bạn đang làm việc trên **branch có tên đúng chuẩn**.  \r\n\u003e Xem quy tắc đặt tên tại [👉 Branch naming convention prefixes](#-branch-naming-convention-prefixes)\r\n\r\n----------\r\n\r\n📌 **Lưu ý:** Không cần phải dùng toàn bộ lệnh trong Makefile mỗi lần làm việc.  \r\nChỉ sử dụng theo đúng mục đích của từng bước trong quy trình phía trên là đủ.\r\n\r\n----------\r\n\r\n## 📜 Makefile Commands\r\n\r\n\r\n| Lệnh | Tác dụng |\r\n|------|----------|\r\n| `make db-dump`           | Dump database vào file `database/init.sql` |\r\n| `make db-backup`         | Alias của `db-dump`, dễ nhớ hơn |\r\n| `make project-restart`   | Xoá volume, rebuild và run toàn bộ project |\r\n| `make backend-only`      | Chạy project mỗi backend và db không cần frontend | \r\n| `make start`             | Khởi động các container foreground (hiện log) |\r\n| `make start-detached`    | Khởi động container ở chế độ nền |\r\n| `make stop`              | Dừng container nhưng giữ dữ liệu |\r\n| `make rebuild`           | Build lại image, giữ volume hiện tại |\r\n\r\n----------\r\n\r\n## 👉 Branch naming convention prefixes\r\n\r\n| Tiền tố     | Mục đích                                                                                  | Ví dụ                                 |\r\n|-------------|---------------------------------------------------------------------------------------------|---------------------------------------|\r\n| `feature/`  | Phát triển tính năng mới                                                                    | `feature/add-login-page`              |\r\n| `bugfix/`   | Sửa lỗi trong quá trình phát triển                                                          | `bugfix/fix-header-css`               |\r\n| `hotfix/`   | Sửa lỗi nghiêm trọng trên môi trường production                                             | `hotfix/cors-error`                   |\r\n| `release/`  | Chuẩn bị cho phiên bản phát hành                                                            | `release/v1.0.0`                      |\r\n| `docs/`     | Cập nhật hoặc bổ sung tài liệu                                                              | `docs/update-readme`                  |\r\n| `chore/`    | Thực hiện các công việc lặt vặt như cập nhật thư viện, cấu hình, dọn dẹp mã nguồn, v.v.     | `chore/update-dependencies`           |\r\n| `test/`     | Thử nghiệm hoặc kiểm tra các ý tưởng mới                                                    | `test/try-new-ui-layout`              |\r\n\r\nBên dưới là cách viết commit message chuẩn theo [Conventional Commits](https://www.conventionalcommits.org/).\r\n\r\n----------\r\n\r\n## 📝 Commit Message Convention\r\n\r\n\u003e ✅ **Mục tiêu**: Ghi lại lịch sử thay đổi dễ đọc, dễ sinh changelog, hỗ trợ CI/CD.\r\n\r\n### Cấu trúc chuẩn:\r\n\r\n```\r\n\u003ctype\u003e(\u003cscope\u003e): \u003cshort message\u003e\r\n\r\n```\r\n\r\n| Type        | Ý nghĩa |\r\n|-------------|----------------------------------|\r\n| `feat`      | Thêm tính năng mới |\r\n| `fix`       | Sửa lỗi |\r\n| `docs`      | Cập nhật tài liệu |\r\n| `style`     | Format/style code, không ảnh hưởng logic |\r\n| `refactor`  | Refactor code (không thêm tính năng hoặc fix bug) |\r\n| `test`      | Thêm hoặc sửa test |\r\n| `chore`     | Việc phụ trợ: CI, config, dọn dẹp, cập nhật lib |\r\n\r\n----------\r\n\r\n### 🧪 Ví dụ:\r\n\r\n```bash\r\ngit commit -m \"feat(user): add user service\"\r\ngit commit -m \"fix(login): prevent null password\"\r\ngit commit -m \"docs(readme): update workflow section\"\r\ngit commit -m \"refactor(chat): extract socket logic\"\r\n\r\n```\r\n\r\n----------\r\n\r\n📌 **Gợi ý:** Cài plugin [Conventional Commit](https://marketplace.visualstudio.com/items?itemName=vivaxy.vscode-conventional-commits) cho VS Code để auto suggest commit message cho chuẩn.\r\n\r\n----------\r\n\r\n## 👨‍💻 Nhóm phát triển\r\n\r\n-   SE190377 Phùng Lưu Hoàng Long\r\n\r\n-   SE192024 Dương Quốc Thái\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flgdlong%2Fchat-app-project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flgdlong%2Fchat-app-project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flgdlong%2Fchat-app-project/lists"}