pm.eapp.vn · Web App · Project Management
eApp PM — Project Management
Nền tảng quản lý dự án & đội nhóm tập trung. Phân quyền vai trò chi tiết, workspace riêng biệt cho từng nhóm, theo dõi tiến độ task và deadline real-time.
Web AppTeam CollaborationDjangoTailwind CSS
Features
- Quản lý nhiều dự án đồng thời trong một workspace thống nhất
- Phân quyền 3 cấp: Admin, Manager, Member
- Task tracking với trạng thái, deadline, assignee, comment
- Dashboard tổng quan: tiến độ dự án, task cần làm, thống kê nhóm
- Invite thành viên theo link hoặc email
Stack & Tools
- Backend: Python · Django · REST API
- Frontend: JavaScript · Tailwind CSS · Responsive Design
- Database: SQLite / PostgreSQL
- Hosting: Cloudflare · VPS
Kiến trúc & Quy trình hoạt động
Ứng dụng quản lý dự án được thiết kế theo kiến trúc hướng sự kiện (Event-driven) trên nền tảng Django. Sử dụng Server-Sent Events (SSE) để truyền tải các hoạt động mới, bình luận trên task thời gian thực trực tiếp tới giao diện người dùng mà không cần thiết lập WebSocket phức tạp.
User Actions (Task Update, Comment)
↳ Django REST Endpoint
↳ Database Transaction
↳ Event Stream Generator (SSE Service)
↳ Client UI Update (Reactive React/JS rendering)
Thiết kế Cơ sở dữ liệu
Thiết kế cơ sở dữ liệu quan hệ tối ưu hóa cho các thao tác truy vấn lồng nhau và quản lý quyền truy cập không gian làm việc (Workspace isolation):
- Workspace (id, name, owner_id, status)
- WorkspaceMember (workspace_id, user_id, role [Admin|Manager|Member])
- Project (id, workspace_id, title, description, status)
- Task (id, project_id, title, status, priority, assignee_id, due_date)
- TaskComment (id, task_id, author_id, content, created_at)
Thách thức & Giải pháp kỹ thuật
- Thách thức: Lỗi truy vấn N+1 khi hiển thị màn hình Dashboard chứa toàn bộ danh sách Workspace, dự án và chi tiết tất cả các Task được giao cho người dùng hiện tại cùng thông tin người tạo bình luận gần nhất.
- Giải pháp: Sử dụng tối ưu select_related cho các thuộc tính khóa ngoại (Foreign Key) và prefetch_related cho các quan hệ nhiều-nhiều (M2M) để gộp các câu lệnh SQL thành 1 truy vấn duy nhất.
Thành quả đạt được
- Hỗ trợ vận hành cùng lúc lên đến 50 active workspaces, thời gian phản hồi API trung bình cho các tác vụ cập nhật task chỉ còn dưới 120ms.
- Giảm tải 70% số lượng truy vấn cơ sở dữ liệu nhờ kỹ thuật tối ưu hóa ORM.