- Đăng ký tài khoản mới, đăng nhập, cập nhật thông tin tài khoản. Thông tin tối thiểu cho mỗi tài khoản gồm có các trường: username (chính là địa chỉ email), password (hash), họ tên, giới tính, ngày sinh. Ngoài ra, địa chỉ email lúc đăng ký phải được xác thực bằng OTP (timeout 10 phút) trước khi tài khoản đó được kích hoạt
- Tạo nhóm chat mới hoặc gia nhập/rời khỏi các nhóm chat có sẵn
- Gửi tin nhắn 1-1 hoặc 1-nhóm
- Gửi file đính kèm (dung lượng dưới 1MB), gửi sticker
- Chặn nhận tin nhắn từ 1 người dùng hoặc 1 nhóm
- Xác nhận tin nhắn đã gửi/nhận, đã xem
- Friend list: lưu giữ danh sách và cho biết trạng thái (online hoặc offline) của những người mà user đã từng chat, có thông báo khi bất cứ user nào trong friend list thay đổi trạng thái
- Chức năng quản lý và lưu giữ tin nhắn: toàn bộ tin nhắn của người dùng được lưu trữ trên server, khi client đăng nhập, những tin nhắn gần đây nhất sẽ được đẩy về giao diện phía client
- Thống kê được tổng số user, các user đang online
- Ghi log khi user login/logout hoặc thực hiện các chức năng: đăng ký tài khoản; tạo nhóm
- Block user bằng lệnh (hoặc giao diện đồ họa)
- Broadcast tin nhắn từ hệ thống đến toàn bộ user
- Mã hóa nội dung tin nhắn giữa client – server. Phải sử dụng key khác nhau cho các client => Sử dụng RSA và AES
- Jdk 1.8
- Mysql
- Clone source code về và giải nén thư mục `Library.zip` sau đó import các thư viện trong thư mục
- Tạo CSDL với tên `chatdb` và import file chatdb.sql
- Khởi chạy server src/Network/ServerGUI.java
- Chạy các client src/GUI/Login.java để bắt đầu