Tổng quan
Giới thiệu đề tài
Ngày nay, ngày càng nhiều bạn trẻ chú trọng đến việc quản lý chi tiêu cá nhân và đầu tư tài chính Nhiều người trong số họ đã bắt đầu tìm hiểu về đầu tư từ khi còn học ở trường Thị trường tài chính đang dần trẻ hóa với sự xuất hiện của nhiều công cụ đầu tư mới, như tiền kỹ thuật số và các gói đầu tư sinh lời từ ví điện tử, nhằm phục vụ nhu cầu của thế hệ trẻ.
Nhiều người không chỉ chú trọng vào đầu tư tài chính mà còn quan tâm đến việc quản lý chi tiêu cá nhân và kiểm soát dòng tiền Điều này giúp họ tích trữ và tiết kiệm cho tương lai một cách hiệu quả.
Trong bối cảnh trẻ hóa, các ứng dụng đầu tư và quản lý chi tiêu đang phát triển nhanh chóng với nhiều tính năng mới, giúp nhà đầu tư dễ dàng tham gia thị trường Điều này đặc biệt đúng tại Việt Nam, nơi có dân số trẻ, công nghệ phát triển nhanh và Internet phổ biến Hiện tại, Việt Nam có hơn 20 ứng dụng Fintech lớn, đóng góp đáng kể vào nền kinh tế Đặc biệt, cả bốn kỳ lân công nghệ của Việt Nam là VnPay, MoMo, VNG và Sky Mavis đều phát triển các ứng dụng Fintech.
Theo dữ liệu từ Trung tâm Lưu ký Chứng khoán (VSD), tháng 3 vừa qua, số lượng tài khoản chứng khoán mới mở của nhà đầu tư trong nước đã đạt kỷ lục, nâng tổng số tài khoản lên hơn 4,9 triệu, tương đương khoảng 5% dân số Số lượng này đã vượt mục tiêu mà Chính phủ đề ra trước đó 3 năm Để tham gia giao dịch, nhà đầu tư sử dụng các ứng dụng của các công ty chứng khoán như SSI, VNDirect, VPS, với lượt tải cao trên các cửa hàng ứng dụng, cho thấy sự quan tâm ngày càng tăng của người dân đối với thị trường chứng khoán.
Thị trường vàng và tiền điện tử đang trở nên sôi động cùng với thị trường chứng khoán Nhà đầu tư không còn phải xếp hàng mua vàng như trước, mà giờ đây có thể dễ dàng tham gia giao dịch các sản phẩm vàng, bạc điện tử Hình thức giao dịch mới này, do các ngân hàng giới thiệu, mang lại sự thuận tiện và khả năng giao dịch mọi lúc, mọi nơi Một số sản phẩm tiêu biểu như eGold của Doji, Finhay, và PNJ.
Vietcombank và thị trường tiền điện tử đang trở nên sôi động, mặc dù pháp luật Việt Nam vẫn chưa hoàn thiện Việt Nam hiện đang nằm trong top đầu thế giới về giao dịch Crypto, cho thấy người Việt ngày càng coi tiền điện tử là một kênh đầu tư tiềm năng.
Lý do chọn đề tài
Trên thị trường hiện có nhiều ứng dụng đầu tư nhưng hầu hết chỉ tập trung vào một kênh tài sản duy nhất hoặc chỉ thống kê các sản phẩm đầu tư trong phạm vi doanh nghiệp Ngoài ra, các ứng dụng quản lý chi tiêu thường thiếu công cụ ghi lại lịch sử đầu tư và giao dịch của các loại tài sản khác Nhận thấy nhu cầu về một ứng dụng tích hợp giữa đầu tư và quản lý chi tiêu, tôi đã quyết định nghiên cứu và phát triển đề tài: “Xây dựng ứng dụng quản lý tài chính tích hợp nhiều lớp tài sản”.
Thông qua việc phát triển ứng dụng, tôi mong muốn tạo ra một công cụ quản lý đầu tư hiệu quả và dễ sử dụng, nhằm lan tỏa kiến thức về đầu tư tài chính và quản lý chi tiêu đến mọi người, đặc biệt là giới trẻ.
Mục tiêu
Nghiên cứu các chức năng thiết yếu và đối tượng người dùng là bước quan trọng để phát triển một ứng dụng quản lý chi tiêu hiệu quả Ứng dụng này sẽ tích hợp tính năng theo dõi đầu tư, giúp người dùng quản lý nhiều lớp tài sản khác nhau một cách dễ dàng và tiện lợi.
Đối tượng
- Người trẻ độ tuổi từ 18 – 30 đang tham gia đầu tư vào các kênh tài chính khác nhau như Vàng, Chứng khoán, Tiền điện tử,…
Một ứng dụng quản lý chi tiêu là công cụ cần thiết giúp theo dõi chi tiêu cá nhân và gia đình, từ đó đưa ra các phương pháp hiệu quả để cân đối tài chính.
- Người dùng cần sử dụng các công cụ tài chính để theo dõi, quyết định tham gia vào các thị trường tài chính.
Phạm vi
Phạm vi của đề tài phụ thuộc vào độ rộng của cơ sở dữ liệu về các kênh đầu tư, tập trung phát triển vào thị trường Việt Nam.
Phương pháp phát triển
Các bước thực hiện đề tài:
Cơ sở lý thuyết & công nghệ
Phân tích các ứng dụng đã có
Trên thị trường hiện nay, có nhiều ứng dụng đầu tư và quản lý chi tiêu, nhưng phần lớn chỉ tập trung vào một số loại tài sản nhất định và thiếu các tính năng thiết thực mà người dùng thực sự cần.
2.1.1 Ứng dụng đầu tư FinHay
FinHay, ứng dụng đầu tư tích lũy ra đời năm 2017, kết nối với ngân hàng và quỹ đầu tư, mang đến nhiều gói đầu tư hấp dẫn cho người dùng Đây là lựa chọn lý tưởng cho nhà đầu tư mới vào thị trường tài chính, cho phép họ tham gia đầu tư vào Cổ phiếu quỹ hoặc Vàng Ngoài ra, người dùng còn có cơ hội nhận lãi suất không định kỳ khi gửi tiền trong FinHay.
FinHay hiện chưa cung cấp tính năng theo dõi lịch sử thu – chi cá nhân cho người dùng, mặc dù họ có thể tham gia đầu tư qua ứng dụng Hơn nữa, ứng dụng này cũng không hiển thị lịch sử đầu tư cụ thể mà chủ yếu tập trung vào các gói đầu tư.
Sổ chi tiêu Misa, sản phẩm của công ty Misa.vn, thu hút đông đảo người dùng, chủ yếu là cá nhân muốn quản lý chi tiêu hiệu quả Với giao diện đẹp mắt và trực quan, người dùng có thể dễ dàng thêm các giao dịch phát sinh tăng hoặc giảm Bên cạnh đó, Misa còn cung cấp nhiều công cụ tài chính hữu ích như phân tích tài chính và theo dõi vay nợ, giúp người dùng quản lý tài chính cá nhân một cách toàn diện.
Hình 2 Ứng dụng Sổ Thu Chi Misa
Misa hiện chỉ đang tập trung vào quản lý chi tiêu cho tiền mặt, chưa phát triển tính năng theo dõi các khoản đầu tư tài chính
Ví điện tử MoMo, một trong bốn kỳ lân công nghệ triệu đô tại Việt Nam, đã hoạt động hơn 8 năm và cung cấp nhiều sản phẩm dịch vụ tiện ích cho người dùng Gần đây, MoMo đã hợp tác với một số ngân hàng để ra mắt các dịch vụ đầu tư tài chính trên ứng dụng, cho phép người dùng tham gia đầu tư tích lũy với lãi suất 6% mỗi năm qua Ví Thần Tài và đầu tư vào cổ phiếu quỹ MoMo mang đến hình thức đầu tư linh hoạt, dễ dàng tiếp cận cho đại đa số người dùng Chỉ với vài thao tác đơn giản, người dùng có thể mở Ví Thần Tài và bắt đầu tích lũy, đồng thời sử dụng nó như một nguồn thanh toán cho các dịch vụ trên ví.
MoMo hiện chỉ tập trung vào hình thức đầu tư tích lũy và chưa cung cấp các lựa chọn đầu tư khác như vàng hay crypto Lịch sử đầu tư của MoMo vẫn chưa được làm rõ, và mặc dù có tích hợp lịch sử chi tiêu, nhưng chỉ ghi nhận các giao dịch phát sinh trên ứng dụng, điều này gây hạn chế cho người dùng.
Hình 3 Ứng dụng MoMo túi thần tài
Hình 4 Ứng dụng quản lý chi tiêu MoMo
Khảo sát người dùng
Trong quá trình nghiên cứu các tính năng và phân tích ứng dụng trên thị trường, tôi đã thực hiện một khảo sát nhỏ để thu thập ý kiến người dùng Kết quả cho thấy độ tuổi chủ yếu của người tham gia khảo sát là từ 18 đến 25.
Hình 5 Biểu đồ độ tuổi khảo sát
Trong đó 56.3% người tham gia khảo sát có tham gia một kênh đầu từ tài chính:
Hình 6 Biểu độ tỉ lệ tham gia đầu tư
Và 75% quan tâm tới việc quản lý chi tiêu cá nhân
Hình 7 Biểu đồ mức độ quan tâm tới thu chi
Nhiều người tham gia cho biết họ chưa hài lòng với các ứng dụng đầu tư và quản lý chi tiêu hiện tại, chủ yếu vì mong muốn có khả năng quản lý tập trung các loại đầu tư khác nhau.
Hình 8 Biểu đồ trải nghiệm người dùng Đặc biệt phần lớn người dùng mong muốn thêm chức năng quản lý chi tiêu vào các ứng dụng đầu tư
Hình 9 Biểu đồ tính năng đề xuất
Kết quả khảo sát cho thấy, phần lớn người dùng trẻ dưới 30 tuổi đang quan tâm đến đầu tư tài chính và tìm kiếm các ứng dụng đầu tư hiệu quả Mặc dù hầu hết người dùng hài lòng với ứng dụng hiện tại, họ vẫn mong muốn bổ sung các tính năng như quản lý chi tiêu và tích hợp nhiều lớp tài sản trong một ứng dụng.
Công nghệ sử dụng
2.3.1 Serverless Ứng dụng được xây dựng theo kiến trúc Serverless – không có Backend Đây là một kiến trúc mới được ra đời gần đây, được sử dụng để xây dựng các ứng dụng đơn giản, không quá phức tạp và không cần tới một Backend server Để áp dụng được Serverless, nhà phát triển cần một ứng dụng phía giao diện người dùng kết nối tới một dịch vụ Backend as Service do bên thứ 3 cung cấp Dịch vụ Backend as Service cần có những thành phần cơ bản như: hệ thống tài khoản, cơ sở dữ liệu, cloud function,… và khả năng duy trì dịch vụ 24/7 Hiện nay, kiến trúc này đang được rất ưa chuộng do các lợi ích về thời gian phát triển ứng dụng khả năng đáp ứng và độ ổn định của các dịch vụ Cloud Backend Một số nhà cung cấp dịch vụ Cloud Backend nổi tiếng có thể kể tới như GCP (Google Cloud Platform), AWS (Amazon), Azure (Microsoft),…
Hình 10 Một số nhà cung cấp Backend as Service
2.3.1 Giao diện người dùng: React Native
React Native là một framework Javascript do Meta (Facebook) phát triển, cho phép xây dựng ứng dụng di động cho cả Android và iOS Framework này thực hiện việc ánh xạ các giao diện từ JSX sang các component native của từng hệ điều hành, giúp ứng dụng hoạt động mượt mà và hiệu quả trên nền tảng đa dạng, đồng thời đảm bảo hiệu suất cao và khả năng tương thích tốt với thiết bị.
React Native sử dụng cú pháp JSX để định nghĩa các thành phần giao diện, cho phép viết mã giống như HTML JSX, kết hợp giữa Javascript và XML, được biên dịch thành mã Native bởi React Native Một số ưu điểm của JSX bao gồm khả năng dễ đọc và dễ viết mã cho giao diện người dùng.
- Tốc độ nhanh hơn vì code dễ nhìn, dễ đọc hiểu
- Gỡ lỗi nhanh vì trình biên dịch có thể phát hiện lỗi của JSX
- Dễ làm quen, tiếp cận nếu nhà phát triển đã từng làm việc với HTML hoặc XML
Both React Native and ReactJS utilize the Virtual DOM to optimize the rendering time of interface components Each Native Component is mapped to a Virtual DOM in temporary memory, and when changes occur and the interface needs to be rerendered, React calculates and decides which Components to rerender As a result, only the Components associated with the changed Virtual DOMs are rerendered, enabling accurate and swift interface updates.
React Native Bridge là cơ chế giao tiếp giữa Javascript thread và Native thread, nơi các thay đổi từ React được đưa vào hàng đợi bất đồng bộ để xử lý trên Native Tuy nhiên, điều này có thể dẫn đến việc các thay đổi không theo thứ tự, gây ra hiện tượng giật lag hoặc mất khung hình Hơn nữa, các tính toán phức tạp có thể làm tắc nghẽn UI thread, khiến ứng dụng bị đơ Để khắc phục những vấn đề này, đội ngũ phát triển React Native đã giới thiệu cơ chế rerender mới mang tên Fabric.
Fabric là một hệ thống rendering tiên tiến, thay thế cơ chế hiện tại bằng cách loại bỏ bridge và cho phép tham chiếu trực tiếp tới Native Component Điều này giúp thay đổi giao diện nhanh chóng nhờ tương tác trực tiếp Các hành động như cuộn và kéo thả được thực hiện đồng bộ, trong khi những hành động khác vẫn có thể chạy bất đồng bộ UI Thread và JS Thread có khả năng tương tác hai chiều, dễ dàng gọi các Native API Sự kết hợp của Fabric với các thành phần mới mang đến một cơ chế render hoàn toàn hiệu quả hơn.
2.3.2 Cơ sở dữ liệu: Firebase
Firebase là một sản phẩm của Google Cloud Platform (GCP) cung cấp nhiều công cụ mạnh mẽ như hệ thống xác thực, cơ sở dữ liệu Firestore, cơ sở dữ liệu thời gian thực và Cloud Function Với mục tiêu hỗ trợ các nhà phát triển xây dựng ứng dụng nhanh chóng mà không cần hệ thống Backend (serverless), Firebase dễ dàng tích hợp trên cả nền tảng Web và Mobile (Android, iOS) chỉ với vài thao tác đơn giản Ngoài ra, Firebase còn cung cấp bộ module đa dạng và hữu ích cùng bảng giao diện thống kê truy cập và sử dụng của người dùng trên các ứng dụng.
Firebase Authentication là một công cụ giúp nhà phát triển khởi tạo nhanh một hệ thống tài khoản dành cho ứng dụng bao gồm các tính năng:
- Xác thực đăng ký bằng email và số điện thoại
- Đăng nhập thông qua các nên tảng mạng xã hội bên thứ 3: Facebook, Github, Google,…
- Quản lý và cập nhật thông tin người dùng
Sự ra đời của Firebase Authentication đã giúp các nhà phát triển tiết kiệm thời gian bằng cách loại bỏ các thao tác lặp đi lặp lại trong việc khởi tạo cơ sở dữ liệu và quản lý thông tin người dùng, cho phép họ tập trung vào phát triển các chức năng chính của sản phẩm Module này dễ dàng tích hợp vào các ứng dụng di động và website, mang lại nhiều lợi ích cho quá trình phát triển Một trong những tính năng nổi bật của Firebase Authentication là khả năng quản lý danh sách tài khoản hiệu quả.
Hình 15 Danh sách tài khoản Firebase Authentication
Thiết lập phương thức đăng ký/ đăng nhập, quy định tên miền, ứng dụng có thể sử dụng hệ thống tài khoản:
Hình 16 Cách thức đăng nhập Firebase Authentication
Hình 17 Tên miền sử dụng Firebase Authentication
Tuỳ chỉnh nội dung email/sms xác minh tài khoản:
Hình 18 Email template Firebase Authentication
Firestore là cơ sở dữ liệu trực tuyến NoSQL do Google phát triển, nổi bật với tốc độ đọc và ghi nhanh chóng cùng quy trình cấu hình đơn giản, giúp nó trở thành lựa chọn phổ biến cho nhiều ứng dụng.
Firestore cung cấp cơ chế Subscriber, cho phép client theo dõi sự thay đổi của cơ sở dữ liệu và hỗ trợ lưu trữ dữ liệu offline, tự động đồng bộ khi có kết nối Để đảm bảo an toàn dữ liệu khi client trực tiếp kết nối tới cơ sở dữ liệu, Firestore cũng cung cấp chức năng Firestore Rule nhằm giới hạn quyền hạn của người dùng.
Websocket là một giao thức kết nối 2 chiều – bidirectional giữa client và server Kết nối của
Websocket sẽ duy trì kết nối cho đến khi một trong hai bên chủ động ngắt Giao thức này sử dụng TCP để truyền tải gói tin, khác với kết nối HTTP Các kết nối Websocket thường bắt đầu bằng ws:// hoặc wss://, và gói tin có thể được truyền dưới dạng văn bản hoặc nhị phân.
Websocket là công nghệ lý tưởng cho các ứng dụng yêu cầu thời gian thực như chat và bảng giá chứng khoán, nhờ vào độ trễ thấp và khả năng duy trì kết nối liên tục Được phát triển dựa trên nguyên tắc hướng sự kiện, Websocket cho phép thông báo ngay lập tức các thay đổi và cập nhật thông tin tới ứng dụng khi có sự kiện xảy ra.
Socket.IO là một thư viện mạnh mẽ cho phép thiết lập kết nối thời gian thực, hai chiều và dựa trên sự kiện giữa client và server Thư viện này bao gồm một server NodeJS và một thư viện Javascript dành cho phía client, giúp phát triển các ứng dụng web tương tác một cách dễ dàng và hiệu quả.
Hình 20 Giao tiếp giữa client và server Websocket
Ngoài ra, Socket.IO cũng có thể triển khai ở nhiều ngôn ngữ khác như Java, C#, Python…
Socket.IO client thiết lập một kết nối Websocket với server, và tự động chuyển sang kết nối HTTP nếu trình duyệt không hỗ trợ Websocket Để khởi tạo kết nối Websocket bằng Socket.IO, bạn cần sử dụng một đoạn mã cụ thể.
Hình 21 Cách kết nối bằng Socket.IO Đặc biệt, Socket.IO không phải là một thư viện dùng để kết nối Websocket thông thường,
Để kết nối Socket bằng Socket.IO, cần có một server được viết bằng Socket.IO server, vì Socket.IO sẽ gửi kèm một số thông tin khác ngoài dữ liệu cần truyền tải.
Lý thuyết về đầu từ và quản lý chi tiêu
2.4.1 Các công thức dùng trong đầu tư:
- Công thức tính trung bình giá
Công thức cập nhật giá mua vào cho tài sản như vàng, chứng khoán và tiền ảo được thực hiện mỗi khi có giao dịch liên quan Khi thực hiện giao dịch mua, giá của tài sản sẽ được điều chỉnh dựa vào số lượng và giá mua vào Để tính toán % tăng trưởng của tài sản, mỗi loại tài sản cần lưu trữ một giá mua vào Công thức này được trích từ bài viết “Công thức trung bình giá vốn tại VNDIRECT” của công ty chứng khoán VNDIRECT.
Hình 22 Công thức trung bình giá tài sản
Trong thực tế, giá mua vào thường bao gồm thêm phí giao dịch, mà mức phí này phụ thuộc vào loại tài sản, sàn giao dịch và quy định cụ thể Tuy nhiên, trong đề tài này, chúng tôi sẽ không xem xét phí giao dịch mà sẽ gộp chúng vào giá mua mới.
- Công thức tính lãi – lỗ thực tế:
Công thức tính % tăng trưởng của tài sản so với giá gốc giúp người dùng hình dung rõ ràng về lợi nhuận hoặc thua lỗ của khoản đầu tư, từ đó đưa ra quyết định đầu tư hiệu quả hơn Công thức này được phát triển từ tỷ suất sinh lời kỳ vọng của cổ phiếu, như đã trình bày trong bài viết “Công Thức và Cách Tính Phần Trăm Lãi Lỗ trong Chứng Khoán” của tác giả Dao Kha Tuyet.
Hình 23 Công thức tính lợi nhuận của tài sản
2.4.1 Lý thuyết về danh mục đầu tư:
Danh mục đầu tư là tập hợp các khoản đầu tư tài chính như cổ phiếu, trái phiếu, hàng hóa và tiền mặt, cùng với các đối tác quỹ Cổ phiếu và trái phiếu thường là nền tảng cốt lõi, nhưng danh mục đầu tư có thể mở rộng với nhiều loại tài sản khác như bất động sản và đồ sưu tầm nghệ thuật Danh mục đầu tư đóng vai trò quan trọng giúp nhà đầu tư theo dõi sự biến động của tài sản và phát triển các phương pháp đầu tư hiệu quả Để quản lý danh mục đầu tư, nhà đầu tư có thể sử dụng sổ tay, bảng biểu hoặc ứng dụng, nhưng nhiều phương pháp hiện tại vẫn mang tính thủ công và thiếu tính trực quan Khi tạo danh mục đầu tư, cần chú ý đến một số vấn đề quan trọng.
Lợi nhuận kỳ vọng là chỉ số quan trọng giúp nhà đầu tư xác định mức lợi nhuận mong muốn, từ đó đưa ra quyết định đầu tư chính xác Trong số nhiều phương pháp xác định lợi nhuận kỳ vọng, công thức CAPM là phổ biến và hiệu quả nhất trong giới đầu tư Công thức này mô tả mối quan hệ giữa rủi ro và lợi tức kỳ vọng của tài sản, cho phép tính toán lợi nhuận kỳ vọng cho các loại tài sản rủi ro.
CAPM là công thức đơn giản dùng để xác định tỷ suất lợi nhuận kỳ vọng cho các tài sản rủi ro hoặc danh mục đầu tư đa dạng Công thức này xem xét rủi ro thị trường thông qua chỉ số Beta, cho thấy rằng các tài sản có Beta cao sẽ có mức lợi nhuận kỳ vọng cao hơn để bù đắp cho rủi ro mà nhà đầu tư chấp nhận Mô hình CAPM, mặc dù đơn giản, được ứng dụng rộng rãi trong lĩnh vực đầu tư, giúp nhà đầu tư xác định mức lợi nhuận kỳ vọng và giá chốt lời cho cổ phiếu hoặc danh mục đầu tư của họ.
Khi lựa chọn tài sản đầu tư, nhà đầu tư cần xem xét nhiều tiêu chí quan trọng, bởi thị trường hiện nay có đa dạng loại tài sản như vàng, dầu, cổ phiếu và trái phiếu Việc chọn lựa loại tài sản phù hợp tại một thời điểm cụ thể không chỉ ảnh hưởng đến dòng tiền mà còn quyết định sự thành công trong đầu tư.
2.4.2 Phương pháp quản lý tài chính cá nhân JARS:
Phương pháp 6 hũ do T.Harv Eker phát minh, được trình bày trong cuốn sách "Secret of Millionaire", nhằm đạt được tự do tài chính Mỗi hũ có mục đích và tỷ lệ phân chia tiền khác nhau, giúp người dùng quản lý tài chính hiệu quả hơn.
• NEC (Neccessities) – Tài khoản chi tiêu cần thiết – 55%
• LTSS (Long Term Saving for Spending) – Tài khoản tiết kiệm tiêu dùng cho tương lai –10%
• EDU (Education) – Tài khoản giáo dục – 10%
• FFA (Financial Freedom) – Tài khoản tự do tài chính – 10%
• PLAY – Tài khoản hưởng thụ – 10%
• GIVE – Tài khoản từ thiện – 5%
Tài khoản NEC là giải pháp tài chính lý tưởng cho những chi phí cần thiết hàng ngày, bao gồm ăn uống, di chuyển và mua sắm các vật dụng thiết yếu cho bản thân.
LTSS là một tài khoản cần được duy trì trong thời gian dài để tích lũy cho các chi tiêu lớn trong tương lai Nó có thể được xem như một hình thức tiết kiệm hoặc dành dụm hiệu quả.
Tài khoản EDU là một công cụ quan trọng giúp bạn đầu tư vào bản thân thông qua việc nâng cao kiến thức và kỹ năng Bạn có thể sử dụng tài khoản này để tham gia các khóa học, mua sách hoặc tài liệu học tập, từ đó phát triển bản thân một cách hiệu quả.
FFA là khoản tiền được dành riêng cho việc đầu tư dài hạn, có thể bao gồm cổ phiếu, trái phiếu và các kênh đầu tư khác Mặc dù số tiền này có thể nhỏ, nhưng nếu được tích lũy qua thời gian và kết hợp với lãi suất từ các khoản đầu tư, nó có khả năng mang lại lợi nhuận đáng kể trong tương lai.
Tài khoản PLAY là công cụ lý tưởng để bạn thỏa mãn những nhu cầu xa xỉ của bản thân, từ việc mua sắm những món đồ yêu thích như áo mới đến việc sở hữu đĩa game hay đĩa nhạc mới mà bạn đam mê.
- GIVE: Đây là tài khoản để bạn đem cho người khác, có thể là đi quyên góp từ thiện, giúp các trẻ em nghèo
Chương 3 Phân tích bài toán
Người dùng cũ (đã đăng ký tài khoản)
- Thêm/sửa lịch sử các giao dịch thu, chi
- Quản lý thêm/sửa nguồn tiền
- Quản lý thêm/sửa thể loại thu – chi
Phân tích bài toán
Phân tích yêu cầu
3.2.1 Yêu cầu về chức năng (Functional requirement)
Người dùng mới là những người chưa từng đăng ký tài khoản và thường là những người tải ứng dụng lần đầu Trong khi đó, người dùng cũ là những người đã có tài khoản và có khả năng đăng nhập vào hệ thống để sử dụng các dịch vụ.
Sign Up New User Người dùng mới có thể đăng ký tài khoản
Login User Người dùng có thể đăng nhập vào hệ thống
Người dùng mới có thể tìm hiểu về hệ thống thông qua các hình ảnh và slider giới thiệu Đồng thời, người dùng cũng có khả năng quản lý chi tiêu hiệu quả để theo dõi và kiểm soát tài chính cá nhân.
User Người dùng có thể thêm lịch sử chi tiêu mới
User Người dùng có thể sửa lịch sử chi tiêu
User Người dùng có thể xem dữ liệu thống kê về chi tiêu
Người dùng có thể thêm và quản lý các giao dịch đầu tư vào tài sản Vàng một cách dễ dàng thông qua tính năng Invest Gold Chức năng Add Gold Transaction cho phép người dùng thực hiện các giao dịch đầu tư Vàng nhanh chóng và hiệu quả.
View Gold Balance User Người dùng có thể xem danh mục đầu tư vàng hiện tại
Invest Crypto User Người dùng có thể thêm và quản lý đầu tư với lớp tài sản Tiền điện tử
User Người dùng có thể thêm giao dịch tiền điện tử mới
View Crypto Balance User Người dùng có thể xem danh mục đầu tư tiền điện tử hiện tại
Người dùng có thể thêm và quản lý đầu tư với lớp tài sản chứng khoán, cũng như thực hiện các giao dịch chứng khoán mới một cách dễ dàng.
View Stock Balance User Người dùng có thể xem danh mục đầu tư chứng khoán hiện tại
Update Limit Setting User Người dùng có thể cập nhật giới hạn chi cho một loại danh mục Đặc tả Use-case
Description Người dùng mới có thể đăng ký tài khoản vào hệ thống
Step - Người dùng truy cập trang đăng ký
- Người dùng nhập thông tin tài khoản
- Người dùng bấm Sign up
- Hệ thống kiểm tra và tạo tài khoản
Pre-condition Người dùng chưa đăng ký tài khoản
Post-condition - Hệ thống thông báo đăng ký thành công
- Người dùng được tự động đăng nhập vào hệ thống
Description Người dùng có thể đăng nhập vào hệ thống bằng tài khoản đã đăng ký
Step - Người dùng truy cập trang đăng nhập
- Người dùng nhập thông tin tài khoản
- Người dùng bấm Sign in
- Hệ thống kiểm tra và tạo phiên đăng nhập
Pre-condition Người dùng chưa đăng nhập vào hệ thống
Post-condition - Hệ thống thông báo đăng nhập thành công
Step - Người dùng truy cập vào app lần đầu tiền
- Hệ thống show màn hình welcome
- Người dùng tương tác với các slide
Pre-condition Người dùng chưa mở app lần nào
Post-condition Người dùng có thể lướt lại slide đầu
Description Người dùng có thể xem giới thiệu về ứng dụng bằng slide hình ảnh
Step - Người dùng truy cập vào app lần đầu tiền
- Hệ thống show màn hình welcome
- Người dùng tương tác với các slide
Pre-condition Người dùng chưa mở app lần nào
Post-condition Người dùng có thể lướt lại slide đầu
Use-case Invest Gold management
Description Người dùng có thể xem và quản lý danh mục đầu tư Vàng
Step - Người dùng truy cập vào Invest Gold tab từ thanh tab bar hoặc quick shortcut ở trang chủ
- Hệ thống hiển thị màn hình danh mục đầu tư của người dùng
Pre-condition Người dùng đã đăng nhập vào hệ thống
Post-condition Người dùng có thể thêm giao dịch mới và xem thống kê chi tiêu
Use-case Add invest gold transaction
Description Người dùng có thể thêm giao dịch mới trong danh mục đầu tư Vàng
Step - Người dùng bấm vào biểu tượng thêm giao dịch
- Hệ thống chuyển tới màn hình thêm giao dịch
- Người dùng nhập thông tin giao dịch và submit
- Hệ thống kiểm tra dữ liệu và thông báo thêm thành công
Pre-condition Người dùng đã đăng nhập vào hệ thống
Post-condition - Dữ liệu transaction mới tạo được cập
- Người dùng có thể thêm giao dịch mới và xem thống kê giao dịch
Use-case Edit invest Gold transaction
Description Người dùng có thể chỉnh sửa giao dịch đầu tư nếu phát hiện sai sót
Step - Người dùng click vào giao dịch cần sửa
- Hệ thống chuyển tới màn cập nhật giao dịch
- Người dùng cập nhật thông tin giao dịch và submit
- Hệ thống kiểm tra dữ liệu và cập nhật giao dịch
Pre-condition Người dùng đã đăng nhập vào hệ thống
Post-condition - Người dùng được chuyển ra trang danh mục
- Dữ liệu giao dịch được cập nhật
Use-case View invest Gold overview
Description Người dùng có thể xem danh sách các giao dịch đã được thêm vào
Step - Người dùng bấm vào biểu tượng overview trên màn hình
- Ứng dụng chuyển tới màn hình thống kê
Pre-condition Người dùng đã đăng nhập vào hệ thống
Post-condition - Người dùng được chuyển ra trang thống kê
Description Người dùng có thể xem và quản lý chi tiêu cá nhân
Step - Người dùng truy cập vào Speding tab từ thanh tab bar hoặc quick shortcut ở trang chủ
- Hệ thống hiển thị màn hình spending của người dùng
Pre-condition Người dùng đã đăng nhập vào hệ thống
Post-condition Người dùng có thể thêm giao dịch mới và xem thống kê chi tiêu
Use-case Add spending transaction
Description Người dùng có thể thêm giao dịch mới trong quản lý chi tiêu
Step - Người dùng press vào biểu tượng thêm giao dịch
- Hệ thống chuyển tới màn hình thêm giao dịch
- Người dùng nhập thông tin giao dịch và submit
- Hệ thống kiểm tra dữ liệu và thông báo thêm thành công
Pre-condition Người dùng đã đăng nhập vào hệ thống
Post-condition - Dữ liệu transaction mới tạo được cập nhật ngoài màn thống kê chi tiêu
- Người dùng có thể thêm giao dịch mới và xem thống kê chi tiêu
Use-case Edit spending transaction
Description Người dùng có thể chỉnh sửa giao dịch chi tiêu nếu phát hiện sai sót
Step - Người dùng click vào giao dịch cần sửa
- Hệ thống chuyển tới màn cập nhật giao dịch
- Người dùng cập nhật thông tin giao dịch và submit
- Hệ thống kiểm tra dữ liệu và cập nhật giao dịch
Pre-condition Người dùng đã đăng nhập vào hệ thống
Post-condition - Người dùng được chuyển ra trang thống kê
- Dữ liệu giao dịch được cập nhật
Use-case View spending overview
Description Người dùng có thể xem thống kê các khoản chi-tiêu theo dạng Income và Outcome
Step - Người dùng bấm vào biểu tượng overview trên màn hình
- Ứng dụng chuyển tới màn hình thống kê
Pre-condition Người dùng đã đăng nhập vào hệ thống
Post-condition - Người dùng được chuyển ra trang thống kê
- Người dùng có thể lựa chọn view theo tháng
Description Người dùng có thể xem và quản lý danh mục đầu tư Tiền điện tử
Step - Người dùng truy cập vào Invest
Crypto tab từ thanh tab bar hoặc quick shortcut ở trang chủ
- Hệ thống hiển thị màn hình danh mục đầu tư của người dùng
Pre-condition Người dùng đã đăng nhập vào hệ thống
Post-condition Người dùng có thể thêm giao dịch mới và xem thống kê giao dịch
Use-case Add invest crypto transaction
Description Người dùng có thể thêm giao dịch mới trong danh mục đầu tư Crypto
Step - Người dùng bấm vào biểu tượng thêm giao dịch
- Hệ thống chuyển tới màn hình thêm giao dịch
- Người dùng nhập thông tin giao dịch và submit
- Hệ thống kiểm tra dữ liệu và thông báo thêm thành công
Pre-condition Người dùng đã đăng nhập vào hệ thống
Post-condition - Dữ liệu transaction mới tạo được cập nhật ngoài màn hình danh mục đầu tư
- Người dùng có thể thêm giao dịch mới và xem thống kê giao dịch
Use-case Edit invest Crypto transaction
Description Người dùng có thể chỉnh sửa giao dịch đầu tư nếu phát hiện sai sót
Step - Người dùng click vào giao dịch cần sửa
- Hệ thống chuyển tới màn cập nhật giao dịch
- Người dùng cập nhật thông tin giao dịch và submit
- Hệ thống kiểm tra dữ liệu và cập nhật giao dịch
Pre-condition Người dùng đã đăng nhập vào hệ thống
Post-condition - Người dùng được chuyển ra trang danh mục
- Dữ liệu giao dịch được cập nhật
Description Người dùng có thể xem danh sách các giao dịch đã được thêm vào
Step - Người dùng bấm vào biểu tượng overview trên màn hình
- Ứng dụng chuyển tới màn hình thống kê
Pre-condition Người dùng đã đăng nhập vào hệ thống
Post-condition - Người dùng được chuyển ra trang thống kê
Use-case Update Limit Spending
Description Người dùng có thể cập nhật giới hạn chi tiêu cho mỗi loại danh mục
Step - Người dùng vào tab spending từ tabbar
- Người dùng chọn biểu tượng cài đặt limit
- Người dùng nhập giới hạn và lưu
- Hệ thống kiểm tra và cập nhật giới hạn
Pre-condition Người dùng đã đăng nhập vào hệ thống
Post-condition - Người dùng được quay lại màn hình spending
Hình 26 View coin price sequence diagram
Hình 28 Add invest transaction sequence diagram
3.2.2 Yêu cầu phi chức năng (Non-functional Requirement)
● Hệ thống đáp ứng đầy đủ yêu cầu của người dùng
● Up time 98%, có cơ chế update in-app
● Độ phản hồi trễ nhất của API là 5s
● Các tình huống có lỗi phát sinh cần thông báo cho người dùng hệ thống đang bảo trì
● Kế nối tới các socket server cần ngắt sau khi thoát chương trình
● Hệ thống không được chấp nhận các hành động khi chưa thực hiện đăng nhập
● Chuẩn kết nối HTTPS và WSS
● Mật khẩu người dùng cần được mã hoá
Thiết kế
Cơ sở dữ liệu
Danh sách các đối tượng trong hệ thống:
User Thông tin người dung
MoneySource Nguồn tiền cho các giao dịch
Transaction Lịch sử chi tiêu
Coin Giao dịch Tiền điện tử
Stock Giao dịch Cổ phiếu
Lược đồ cơ sở dữ liệu:
Mô tả các đối tương:
Tên Kiểu dữ liệu Ghi Chú
Tên Kiểu dữ liệu Ghi Chú
Tên Kiểu dữ liệu Ghi Chú
Tên Kiểu dữ liệu Ghi Chú
Type -1 | 1 | 0 -1: Chi, 1: Thu, 0: Chuyển tiền
Tên Kiểu dữ liệu Ghi Chú
CoinID String Coin ID trên sàn Binance
Symbol String Symbol của coin trên sàn Binance
Tên Kiểu dữ liệu Ghi Chú
Giao diện
Hình 29 Biểu tượng ứng dụng và tên
Hình 30 Màn hình giới thiệu 1
Hình 31 Màn hình giới thiệu 2
Hình 32 màn hình giới thiệu 3
Hình 38 Quản lý chi tiêu theo tuần
Hình 39 Quản lý chi tiêu theo tháng
Hình 40 Thêm lịch sử chi tiêu
Hình 42 Thống kê thu theo tháng
Hình 43 Danh mục đầu tư vàng
Hình 44 Lịch sử đầu tư vàng
Hình 46 Danh mục đầu tư một loại coin
Hình 47 Lịch sử đầu tư crypto
Hình 48 Màn hình tài khoản
Kiến trúc hệ thống
Hình 49 Các thành phần hệ thống
Hệ thống bao gồm 3 thành phần chính:
- Client: là ứng dụng người dùng đầu cuối
- Firebase: dịch vụ Cloud Backend
- Webserver Provider: webserver của các nhà cung cấp thông tin về giá coin, vàng và chứng khoán
Hệ thống giao tiếp chủ yếu sử dụng giao thức HTTP và Websocket, với hai luồng kết nối chính: một là qua HTTP do gói Firebase đảm nhận, và hai là qua Websocket do Socket.IO đảm nhiệm.