Mơ tả Xem và thêm album, chỉnh sửa, xem và thêm ảnh mới vào album.
Người thực hiện Host, Member
Tiền điều kiện Người dùng đã đăng nhập vào ứng dụng.
Dịng sự kiện chính Tại màn hình danh sách album, chọn chức năng “Thêm”, click nút “Hiện chức
32
năng với album” để chọn “Sửa” hoặc “Xoá” album.
Tại màn hiển thị chi tiết album, người dùng có thể chọn chức năng “Thêm ảnh vào album” hoặc “Chọn ảnh cần xoá”. Hậu điều kiện Cập nhật dữ liệu danh sách album và ảnh
của mỗi album.
33
3.3.2.7. Quản lý các công việc nhà
Hình 3.8: Use case quản lý cơng việc nhà Tên use case Quản lý công việc nhà
Mô tả Xem, thêm, tìm kiếm bằng từ khố, sắp xếp, chỉnh sửa, xố cơng việc.
Người thực hiện Host, Member
Tiền điều kiện Người dùng đã đăng nhập vào ứng dụng.
Dịng sự kiện chính Tại màn hình danh sách cơng việc, người dùng có thể chọn các chức năng “Thêm”, “Tìm kiếm bằng từ khố”, “Sửa”, “Xố”,
34
“Xem chi tiết”, “Sắp xếp”, “Lọc” cơng việc.
Hậu điều kiện Cập nhật dữ liệu danh sách công việc. Bảng 3.9: Đặc tả use case quản lý công việc nhà
3.3.2.8. Quản lý sự kiện trong gia đình
35
Tên use case Quản lý sự kiện trong gia đình
Mơ tả Xem, thêm, tìm kiếm bằng từ khố, sắp xếp, chỉnh sửa, xố sự kiện.
Người thực hiện Host, Member
Tiền điều kiện Người dùng đã đăng nhập vào ứng dụng.
Dịng sự kiện chính Tại màn hình thống kê các ngày có tổ diễn ra sự kiện, người dùng có thể chọn chức năng “Thêm” sự kiện.
Tại màn hình danh sách cơng việc, người dùng có thể chọn các chức năng “Tìm kiếm bằng từ khố”, “Sửa”, “Xố”, “Xem chi tiết”, “Sắp xếp”, “Lọc” sự kiện.
Hậu điều kiện Cập nhật dữ liệu danh sách sự kiện. Bảng 3.10: Đặc tả use case quản lý sự kiện trong gia đình
36
3.3.2.9. Quản lý thu chi hằng tháng
Hình 3.10: Use case quản lý thu chi hằng tháng Tên use case Quản lý thu chi hằng tháng Tên use case Quản lý thu chi hằng tháng
Mô tả Xem tổng thu và chi hằng tháng, thêm, xố, sửa, xem thơng tin chi tiết mục thu hoặc chi.
37
Người thực hiện Host, Member
Tiền điều kiện Người dùng đã đăng nhập vào ứng dụng.
Dịng sự kiện chính Tại màn hình thống kê các mục thu chi theo từng tháng người dùng có thể “Thêm”, “Xố”, “Sửa”, “Xem chi tiết” mục thu chi. Và người dùng cũng có thể chọn chức năng “Thống kê thu chi theo từng danh mục”.
Hậu điều kiện Cập nhật dữ liệu danh sách các mục thu và chi.
38
3.3.2.10. Định vị các thành viên
Hình 3.11: Use case định vị các thành viên
Tên use case Định vị các thành viên trong gia đình
Tóm tắt Người dùng định vị được nhau một cách trực quan trên bản đồ điện tử
Actor Member, Host
Dịng sự kiện chính 1. Tại màn hình hiển thị thơng tin gia đình, người dùng chọn chức năng định vị các thành viên trong gia đình
39
2. Màn hình hiển thị bản đồ điện tử và đánh dấu vị trí của các thành viên trong gia đình.
Dịng sự kiện phụ 1. Thao tác thất bại(lỗi hệ thống), ứng dụng thông báo lỗi hệ thống. Tiền điều kiện Người dùng đã đăng nhập vào ứng dụng.
Người dùng phải cấp quyền cho phép ứng dụng truy cập vị trí.
Hậu điều kiện Khơng.
40
3.3.2.11. Hỗ trợ tương tác
Hình 3.12: Use case hỗ trợ tương tác Tên use case Hỗ trợ tương tác Tên use case Hỗ trợ tương tác
Tóm tắt Người dùng có thể tương tác qua hình thức nhắn tin hoặc gọi video call
41
Dịng sự kiện chính Tại màn hình tương tác, người dùng có thể “Gửi tin nhắn” hoặc “Thực hiện cuộc gọi video”.
Dòng sự kiện phụ Không.
Tiền điều kiện Người dùng đã đăng nhập vào ứng dụng. Người dùng phải cấp quyền truy cập camera và microphone cho ứng dụng.
Hậu điều kiện Không.
42
3.3.2.12. Quản lý các bài viết ẩm thực
Hình 3.13: Use case quản lý các bài viết ẩm thực
Tên use case Quản lý các bài viết về ẩm thực
Mô tả Xem, thêm, tìm kiếm bằng từ khố, chỉnh sửa, xố, bình luận, đánh giá, lưu các bài viết ẩm thực
Người thực hiện Host, Member
43
Dịng sự kiện chính Tại màn hình hiển thị danh sách các bài viết, người dùng có thể chọn chức năng “Thêm” bài viết.
Tại màn hình danh sách cơng việc, người dùng có thể chọn các chức năng “Thêm”, “Tìm kiếm bằng từ khố”, “Sửa”, “Xố”, “Xem chi tiết”, “Bình luận”, “Đánh giá bài viết” sự kiện.
Hậu điều kiện Cập nhật dữ liệu danh sách sự kiện. Bảng 3.14: Đặc tả use case quản lý các bài viết ẩm thực
44
3.4. Thiết kế cơ sở dữ liệu
45
3.4.1. Bảng Users
Users
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
id Long Primary key Mã người dùng email Varchar(100) Null Địa chỉ email birthday Date Null Ngày sinh người
dùng isDeleted Boolean Not null Dữ liệu khả dụng
name Nvarchar(100) Not null Họ tên người dùng password Varchar Not null Mật khẩu username Varchar(100) Not null Tên tài khoản lastSentVerification DateTime Null Lần gửi mã xác
nhận gần nhất oneTimePassword Varchar(4) Null Mã otp
resetPwOtp Varchar(4) Null Mã otp reset mật khẩu resetPwOtpIssuedAt DateTime Null Thời điểm khởi
tạo mã otp gần nhất socialAccountType Integer Foreign key Loại tài khoản
avatar Varchar(250) Null Đường dẫn ảnh avatar Bảng 3.15: Users
46
3.4.2. Bảng Families
Families
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
id Long Not null Mã gia đình
thumbnail Varchar(250) Null Đường dẫn ảnh thumbnail gia đình name Nvarchar(100) Not null Tên gia đình defaultAlbum Long Foreign key Album mặc định
của gia đình isDeleted Boolean Not null Gia đình khả dụng
Bảng 3.16: Families
3.4.3. Bảng Albums
Albums
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
id Long Not null Mã album
familyId Long Foreign key Mã gia đình title Nvarchar(100) Not null Tên album createdAt DateTime Not null Thời điểm khởi
tạo
updatedAt DateTime Not null Thời điểm chỉnh sửa
description Nvarchar(100) Null Mô tả album isDeleted Boolean Not null Album khả dụng
47
3.4.4. Bảng Photos
Photos
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
id Long Primary key Mã ảnh
url Varchar(250) Not null Đường dẫn ảnh name Nvarchar(100) Not null Tên ảnh createdAt DateTime Not null Thời điểm khởi
tạo
updatedAt DateTime Not null Thời điểm chỉnh sửa
description Nvarchar(100) Null Mô tả album isDeleted Boolean Not null Album khả dụng
Bảng 3.18: Photos
3.4.5. Bảng PhotosInAlbums
PhotosInAlbums
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
albumId Long Primary key Mã album photoId Long Primary key,
Foreign key
Mã ảnh
isDeleted Boolean Not null Album khả dụng Bảng 3.19: PhotosInAlbums
48
3.4.6. Bảng UserFirebaseToken
UserFirebaseToken
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
userId Long Primary key, Foreign key
Mã người dùng
token Varchar(250) Not null Firebase token isDeleted Boolean Not null Album khả dụng longitude BigDecimal Null Kinh độ
latitude BigDecimal Null Vĩ độ Bảng 3.20: UserFirebaseToken
3.4.7. Bảng Chores
Chores
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
id Long Primary key Mã công việc familyId Long Foreign key Mã gia đình
title Nvarchar(100) Not null Tiêu đề công việc
descripition Text Null Mô tả
deadline DateTime Not null Thời hạn công việc repeatType Integer Foreign key Kiểu lặp lại
49
3.4.8. Bảng ChoreAlbums
ChoreAlbums
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
id Long Primary key Mã chore album choreId Long Foreign key Mã công việc nhà isDeleted Boolean Not null Album khả dụng
Bảng 3.22: ChoreAlbums
3.4.9. Bảng PhotosInChoreAlbums
PhotosInChoreAlbums
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
photoId Long Primary key, Foreign key
Mã ảnh
choreAlbumId Long Primary key, Foreign key
Mã album việc nhà isDeleted Boolean Not null Ảnh khả dụng
Bảng 3.23: PhotosInChoreAlbums
3.4.10. Bảng Events
Events
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
id Long Primary key Mã sự kiện familyId Long Foreign key Mã gia đình
title Nvarchar(100) Not null Tiêu đề công việc
50
from DateTime Not null Thời gian bắt đầu to DateTime Not null Thời gian kết thúc notified Boolean Not null Đã được thông
báo hay chưa repeatType Integer Foreign key Kiểu lặp lại repeatType Integer Foreign key Kiểu lặp lại repeatOccurences Integer Integer Số lần lặp
isDeleted Boolean Not null Sự kiện khả dụng Bảng 3.24: Events
3.4.11. Bảng GroupEvents
GroupEvents
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
headEventId Long Foreign key, Primary key
Mã sự kiện đầu
subEventId Long Foreign key, Primary key
Mã sự kiện con
isDeleted Boolean Not null Sự kiện khả dụng Bảng 3.25: GroupEvents
51
3.4.12. Bảng EventAlbums
EventAlbums
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
id Long Primary key Mã album sự kiện eventId Long Foreign key Mã sự kiện isDeleted Boolean Not null Album sự kiện
khả dụng Bảng 3.26: EventAlbums
3.4.13. Bảng PhotosInEvents
PhotosInEvents
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
photoId Long Primary key, Foreign key
Mã ảnh
eventAlbumId Long Foreign key, Primary key
Mã album ảnh
isDeleted Boolean Not null Album sự kiện khả dụng Bảng 3.27: PhotosInEvents
52
3.4.14. Bảng UsersInCallRooms
UsersInCallRooms
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
userId Long Primary key, Foreign key
Mã người dùng
roomName Varchar(50) Not null Tên phòng gọi isDeleted Boolean Not null Người dùng đang
trong cuộc gọi Bảng 3.28: UsersInCallRooms
3.4.15. Bảng Notifications
Notifications
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
id Long Primary key Mã thông báo familyId Long Foreign key Mã gia đình
userId Long Foreign key Mã người dùng type Varchar(50) Not null Loại thông báo title Nvarchar(100) Not null Tiêu đề thông báo description Nvarchar(250) Null Chi tiết thông báo isClicked Boolean Not null Thông báo đã xem createdAt DateTime Not null Thời điểm khởi
tạo thông báo navigate Varchar(30) Not null Chuyển màn hình
53
3.4.16. Bảng Transactions
Transactions
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
id Long Primary key Mã giao dịch categoryId Long Foreign key Mã gia đình
familyId Long Foreign key Mã gia đình type Varchar(50) Not null Loại giao dịch
title Nvarchar(100) Not null Tiêu đề giao dịch note Nvarchar(250) Null Ghi chú repeatType Varchar(30) Not null Chu kì lặp
date DateTime Not null Ngày giao dịch cost BigDecimal Not null Số tiền occurrences Integer Null Số lần lặp
createdAt DateTime Not null Thời điểm khởi tạo updatedAt DateTime Not null Thời điểm cập
nhật Bảng 3.30: Transactions
3.4.17. Bảng TransactionPhotos
TransactionPhotos
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
id Long Primary key Mã ảnh transactionId Long Foreign key Mã giao dịch
54
familyId Long Foreign key Mã gia đình url Varchar(250) Not null Đường dẫn ảnh isDeleted Boolean Not null Ảnh khả dụng
Bảng 3.31: TransactionPhotos
3.4.18. Bảng PhotosInTransactions
PhotosInTransactions
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
transactionId Long Foreign key, Primary key
Mã giao dịch
photoId Long Foreign key, Primary key
Mã ảnh
isDeleted Boolean Not null Ảnh khả dụng Bảng 3.32: PhotosInTransactions
3.4.19. Bảng TransactionCategories
TransactionCategories
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
id Long Primary key Mã danh mục giao dịch
familyId Long Foreign key Mã gia đình type Varchar(50) Not null Loại danh mục title Nvarchar(100) Not null Tiêu đề danh mục icon Varchar(250) Null Đường dẫn ảnh
55
Bảng 3.33: TransactionCategories
3.4.20. Bảng TransactionGroup
TransactionGroup
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
headId Long Primary key, Foreign key
Mã giao dịch đầu
subId Long Foreign key, Primary key
Mã giao dịch con
isDeleted Boolean Not null Bản ghi khả dụng Bảng 3.34: TransactionGroup
3.4.21. Bảng CuisinePosts
CuisinePosts
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
id Long Primary key Mã bài viết thumbnail Varchar(250) Not null Đường dẫn ảnh
thumbnail content Varchar(250) Not null Đường dẫn nội
dung bài viết author Long Foreign key Mã người dùng
title Nvarchar(100) Not null Tiêu đề bài viết angryVote Integer Not null Số vote angry
likeVote Integer Not null Số vote like yummyVote Integer Not null Số vote yummy
56
isDeleted Boolean Not null Bài viết khả dụng ratings Decimal Not null Số điểm bài viết createdAt DateTime Not null Thời điểm khởi
tạo updatedAt DateTime Not null Thời điểm cập
nhật Bảng 3.35: CuisinePosts
3.4.22. Bảng CuisinePostPool
CuisinePostPool
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
userId Long Primary key, Foreign key
Mã người dùng
cuisinePostId Long Primary key, Foreign key
Mã bài viết
showed Boolean Not null Bài viết đã được xem Bảng 3.36: CuisinePostPool
3.4.23. Bảng UserReactCuisinePost
UserReactCuisinePost
Tên trường Kiểu dữ liệu Ràng buộc Mô tả
userId Long Primary key, Foreign key
Mã người dùng
57
Foreign key
reaction Integer Not null Loại reaction Bảng 3.37: UserReactCuisinePost
3.5. Thiết kế kiến trúc hệ thống
58
Back – end server: Được viết bằng Java(Spring Boot) và Python(Flask) sử
dụng cơ sở dữ liệu PostgreSQL để lưu trữ thông tin người dùng, lớp học,… Hosting sử dụng Google Cloud.
React Native: Dùng để xây dựng ứng dụng client trên hai nền tảng iOS và
Android.
Firebase: Dùng FiresAuth để xác thực tài khoản mạng xã hội và dùng
Firestore để lưu trữ tin nhắn gia đình.
59
3.6. Thiết kế giao diện
• Đăng nhập
60 STT Tên thành phần Mô tả
1 Nút chọn đăng nhập với email
Chuyển hướng người dùng đến màn hình nhập email và password để đăng nhập
2 Nút chọn đăng nhập với Apple
Tự động đăng nhập với tài khoản Apple trên thiết bị
3 Nút chọn đăng nhập với Facebook
Chuyển sang màn hình chọn tài khoản Facebook để đăng nhập
4 Nút chọn đăng nhập với Google
Chuyển sang màn hình chọn tài khoản Google để đăng nhập
5 Nút đăng nhập Đăng nhập với email và password
6 Nút gợi ý đăng ký Gợi ý người dùng đăng ký tài khoản nếu chưa có 7 Nút quên mật khẩu Chuyển sang màn hình đặt lại mật khẩu
61
• Đăng ký tài khoản
Hình 3.17: Giao diện đăng ký tài khoản STT Tên thành phần Mô tả STT Tên thành phần Mơ tả
1 Ơ nhập email Người dùng nhập email 2 Ô nhập tên Người dùng nhập tên 3 Ô nhập mật khẩu Người dùng nhập mật khẩu 4 Ô nhập xác nhận
mật khẩu
Người dùng nhập lại mật khẩu lần nữa
5 Nút đăng ký Đăng ký tài khoản với các thông tin đã nhập 6 Nút đăng ký bằng
Apple
Ứng dụng lấy thông tin tài khoản Apple để thực hiện đăng ký
7 Nút đăng ký bằng Facebook
Chuyển sang màn hình chọn tài khoản Facebook để đăng ký
62
• Xác thực tài khoản
Hình 3.18: Giao diện xác thực tài khoản STT Tên thành phần Mô tả STT Tên thành phần Mơ tả
1 Ơ nhập mã xác thực
Người dùng nhập mã xác thực nhận được gửi về email đã dùng để đăng ký
2 Nút xác thực Xác thực với mã xác thực người dùng nhập 3 Nút gửi lại mã xác
thực
Hệ thống gửi lại mã xác thực vào email đã dùng để đăng ký
63
• Đặt lại mật khẩu mới
Hình 3.19: Giao diện đặt lại mật khẩu mới STT Tên thành phần Mô tả STT Tên thành phần Mô tả
1 Ô nhập email mà người dùng muốn đặt lại mật khẩu
Người dùng nhập email để nhận mã xác thực trước khi đặt lại mật khẩu mới trong tình huống quên mật khẩu
2 Nút nhận mã xác thực
Hệ thống gửi lại mã xác thực vào email đã dùng để đăng ký
3 Ô nhập mật khẩu Người dùng nhập mật khẩu 4 Ô nhập xác nhận
mật khẩu
Người dùng nhập lại mật khẩu lần nữa
5 Nút đặt lại mật khẩu mới
Hệ thống cập nhật lại mật khẩu mới cho người dùng
64
• Quản lý tài khoản cá nhân(Xem, cập nhật thơng tin cá nhân)
Hình 3.20: Giao diện quản lý thơng tin tài khoản các nhân STT Tên thành phần Mô tả
1 Nút cập nhật ảnh đại
Điều hướng người dùng đến màn hình chọn ảnh từ album hoặc chụp người camera để đổi ảnh đại diện mới
2 Nút thông tin cá nhân
Điều hướng người dùng đến màn hình cập nhật thơng tin cá nhân
3 Ơ nhập cập nhật số điện thoại
Hiển thị và cho phép chỉnh sửa trực tiếp số điện thoại
4 Ô nhập cập nhật tên
Hiển thị và cho phép chỉnh sửa trực tiếp tên
5 Ô nhập cập nhật ngày sinh
Hiển thị và cho phép chỉnh sửa trực tiếp ngày sinh