Nội dung text KNBS - fresher assignment fullstack developer
💰 Tổng quan dự án: Web Quản lý Chi tiêu Hãy tưởng tượng dự án này là một cuốn sổ tay thu chi điện tử cá nhân. Mục tiêu chính là xây dựng một trang web cho phép người dùng theo dõi chính xác tiền của họ đang đi đâu. Thay vì ghi chép bằng tay, người dùng sẽ đăng nhập vào web này để ghi lại các khoản thu nhập (như lương, tiền thưởng) và các khoản chi tiêu (như ăn uống, đi lại, mua sắm). Từ đó, trang web sẽ tự động tính toán và cho người dùng biết tổng số tiền họ đang có, tháng này họ đã tiêu bao nhiêu, và tiền đã tiêu vào những việc gì. 🙋 Yêu cầu về Người dùng (Ai sẽ dùng?) Hệ thống chỉ có một loại người dùng chính: ● Người dùng cá nhân: Bất kỳ ai muốn quản lý tài chính cá nhân của mình, theo dõi thu nhập và chi tiêu. ✨ Yêu cầu về Chức năng (Web này phải làm được gì?) Đây là những chức năng cụ thể mà người dùng có thể thực hiện trên trang web: 1. Đăng nhập và Tài khoản ● Đăng nhập bằng Google: Người dùng không cần phải tạo tài khoản hay nhớ mật khẩu mới. Họ chỉ cần sử dụng tài khoản Google có sẵn của mình để đăng nhập. ● Tự động tạo tài khoản: Nếu là lần đầu tiên đăng nhập bằng Google, hệ thống sẽ tự động tạo một tài khoản mới cho họ. ● Bảo mật: Người dùng chỉ có thể xem và quản lý dữ liệu tài chính của chính mình. Họ không thể thấy dữ liệu của bất kỳ ai khác. 2. Quản lý "Ví" (Tài khoản ngân hàng) ● Khởi tạo "Ví" đầu tiên: Ngay sau khi đăng nhập lần đầu, hệ thống phải yêu cầu người dùng tạo ít nhất một "ví" (tài khoản ngân hàng) để bắt đầu sử dụng. ● Thêm nhiều "Ví": Người dùng có thể tạo nhiều ví khác nhau để quản lý. ● Ví dụ: "Ví Tiền mặt", "Tài khoản Vietcombank", "Tài khoản Techcombank". ● Nhập thông tin cho Ví: Khi tạo một ví mới, người dùng phải cung cấp: ● Tên ngân hàng (hoặc tên ví, ví dụ: "Tiền mặt"). ● Số tài khoản (nếu có). ● Số dư ban đầu: Số tiền hiện có trong tài khoản đó tại thời điểm Ngày bắt đầu tính toán cho ví này ● Ngày tạo: Ngày bắt đầu tính toán cho ví này. ● Xem tổng số dư: Trang chủ phải hiển thị tổng số tiền mà người dùng có, bằng cách cộng tất cả số dư từ các ví lại tại thời điểm hiện tại 3. Ghi chép Giao dịch (Thu/Chi) ● Thêm khoản "Thu" (Tiền vào): ● Người dùng có thể ghi lại một khoản thu nhập mới (ví dụ: nhận lương). ● Khi thêm, họ phải chọn: 1. Số tiền đã nhận. 2. Thu vào "ví" nào (ví dụ: "Tài khoản Vietcombank").
2. Server (Bộ não): Phần máy chủ ở đằng sau để xử lý tính toán và lưu trữ dữ liệu. ● Dễ triển khai (Về phía lập trình): Toàn bộ dự án phải được "đóng gói" bằng Docker. Điều này có nghĩa là lập trình viên chỉ cần chạy một lệnh là cả "Giao diện", "Bộ não" và "Cơ sở dữ liệu" đều tự động chạy cùng nhau một cách chính xác. ️ Công nghệ (Giải thích đơn giản) Để làm được những điều trên, dự án sử dụng các công nghệ sau: ● Phần Giao diện (Client): Dùng React (với TypeScript). Giúp giao diện web chạy rất nhanh và mượt mà, giống như dùng một ứng dụng. Dùng AntD để có các nút bấm, bảng biểu, thanh menu đẹp mắt. ● Phần Bộ não (Server): Dùng Node.js (với Express.js) code typescript. Đây là "bộ não" nhận yêu cầu từ người dùng (ví dụ: "thêm 1 khoản chi 50.000"), xử lý logic (trừ 50.000 khỏi ví), và lưu kết quả. ● Nơi lưu trữ (Database): Dùng MongoDB. Đây là "tủ hồ sơ" để lưu trữ mọi thứ: thông tin người dùng, danh sách các ví, và chi tiết từng giao dịch thu/chi. ● Việc đóng gói (Containerization): Dùng Docker và Docker Compose để "đóng gói" cả 3 phần trên vào các "thùng chứa" tiêu chuẩn, giúp chúng luôn chạy nhất quán ở mọi môi trường. 💪 NÂNG CAO: ● Xử lý được vơi 1 user có 100 tài khoản NH, mỗi tài khoản có hàng triệu giao dịch ● Xuất báo cáo ra file pdf và excel, báo cáo đáp ứng được hàng triệu dòng data ● Thiết kế được kiến trúc multi tenant cho web app này để có thể đáp ứng được hàng triệu request trong 1 phút NOTE: Ứng viên sau khi hoàn thành bài assignment hãy commit lên tk GitHub cá nhân của mình và gửi repo cho mr Phú