Class: 23KTPM2 | Course: Software Development for Mobile Devices | Group: 02 | Date: 27/01/2026
Hubble is a mobile application inspired by Discord — the widely-used communication platform that supports real-time messaging, voice calls, and community management.
The goal of this project is to build a feature-complete clone of Discord's core functionalities on Android, while integrating AI Smart Reply technology to provide intelligent response suggestions and enhance the overall user experience.
| Layer | Technology |
|---|---|
| Mobile | Java 21 (Android), XML Layouts |
| Backend | Java 21, Spring Boot 3.2 |
| Database | PostgreSQL |
| Cache / OTP | Redis |
| Realtime | WebSocket (STOMP) |
| Authentication | JWT (Access Token + Refresh Token) |
| File Storage | AWS S3 |
| Push Notification | Firebase Cloud Messaging (FCM) |
| SMTP Gmail | |
| AI Smart Reply | OpenAI API |
| Build Tool | Maven (Backend), Gradle (Android) |
| ORM | Spring Data JPA / Hibernate |
| Mapper | MapStruct |
hubble/
├── backend/ # Spring Boot API Server
│ ├── src/main/java/com/hubble/
│ │ ├── HubbleApplication.java
│ │ ├── configuration/ # SecurityConfig, WebSocketConfig, JwtConfig
│ │ ├── controller/ # REST Controllers
│ │ ├── dto/
│ │ │ ├── request/ # Request bodies
│ │ │ └── response/ # Response bodies
│ │ ├── entity/ # JPA Entities
│ │ ├── enums/ # PresenceStatus, MessageType, ServerRole...
│ │ ├── exception/ # ErrorCode, AppException, GlobalExceptionHandler, ApiResponse
│ │ ├── mapper/ # MapStruct interfaces
│ │ ├── repository/ # Spring Data JPA Repositories
│ │ ├── service/ # Business Logic
│ │ └── validator/ # Custom validation annotations
│ └── src/main/resources/
│ └── application.yml # Application configuration
│
├── mobile/ # Android App (Java + XML)
│ ├── app/src/main/
│ │ ├── java/com/hubble/ # Activities, Fragments, ViewModels, Adapters...
│ │ └── res/
│ │ ├── layout/ # XML layout files
│ │ ├── drawable/ # Icons, images
│ │ └── values/ # strings.xml, colors.xml, themes.xml
│ └── build.gradle
├── .gitignore
└── readme.md
- Java 21+
- Maven 3.9+
- PostgreSQL 15+
- Redis 7+
Create the PostgreSQL database:
CREATE DATABASE hubble_db;Edit the connection details in backend/src/main/resources/application.yml:
spring:
datasource:
url: jdbc:postgresql://localhost:5432/hubble_db
username: <your_username>
password: <your_password>
jwt:
secret: <your_secret_key_minimum_32_chars>cd backend
mvn spring-boot:runAPI server starts at: http://localhost:8080
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/auth/register |
Register a new account |
POST |
/api/auth/login |
Login |
POST |
/api/auth/refresh |
Refresh access token |
GET |
/api/users/me |
Get current user info |
PUT |
/api/users/{id} |
Update user profile |
GET |
/api/users/{id} |
Get user profile by ID |
- Register / Login with Email or Phone (similar to Discord ID)
- OTP verification (One-Time Password)
- Forgot password & account recovery
- App lock with PIN code (Passcode Lock)
- Multitasking screen protection (App Switcher Protection)
- Unknown device login alert (Device Alert)
- Update Avatar (Crop / Rotate image)
- Edit Bio, Status, Nickname
- Personal QR Code (User Tag) for quick friend adding
- View list of active logged-in devices
- Remote logout
- Automatic token renewal (Refresh Token)
- Find friends by Username / Tag
- Manage friend requests (Send / Receive / Block)
- Display status: Online / Idle / DND / Offline
- Show "Last seen" timestamp
- Custom status message
- List of recent conversations
- Unread message count badge
- Pin important conversations
- Real-time send & receive (WebSocket)
- Standard Emoji / Icon support
- Sticker & Giphy integration (animated images)
- Display: Sending / Sent / Delivered
- "Typing..." indicator
- Read receipts
- Reply & Quote messages
- Forward & Copy content
- Unsend (retract) messages
- Edit sent messages
- Emoji Reactions
- Send photos / videos from gallery (Multi-select)
- Capture photos / record videos directly (Camera)
- Media player & inline preview
- Text Channels
- Voice Channels
- Channel Categories
- Private Channel permissions
- Quick recording (Hold to record)
- Audio waveform visualization
- Proximity sensor (auto-switch earpiece / speaker)
- Send documents (PDF, Doc, Zip)
- Upload / Download progress bar
- Open files with third-party apps
- Browse all Media / Links shared in a conversation
- Filter by content type (Images / Videos / Files)
- Download to device
- Create group, set name and avatar
- Manage members (Add / Invite / Kick)
- Role system: Owner, Admin, Member
- @Mention members / groups
- Invite via Link or QR Code
- Search messages locally (on device) & globally (on server)
- Jump to original message location
- Highlight search keywords
- AI-powered search
- Theme: Dark Mode / Light Mode
- Push Notification settings
- App language (Vietnamese / English)
- Push Notifications (FCM)
- In-app alerts
- Email notifications (for important events)
- Context analysis of incoming messages
- 3 quick reply suggestions (Suggestion Chips)
- High practicality: Engage with the architecture of a real-world complex application (Discord), tackling real-time communication and multimedia processing challenges.
- Intelligent experience: AI Smart Reply integration helps users respond quickly, making the app more convenient and modern.
- Deep technical skills: Hands-on experience with WebSocket, REST API, Cloud Storage, application security, and hardware interaction (Camera, Microphone, Proximity Sensor).
- Data Consistency: Ensuring message consistency between Client–Server and across multiple devices under unstable network conditions.
- Performance: Handling latency when calling the AI service to analyze messages, and optimizing the loading of large message lists and media.
- Complex Business Logic: Domain-specific features such as role-based permissions (Roles), presence tracking, and conflict resolution when multiple users chat simultaneously.
| No. | Full Name | Student ID |
|---|---|---|
| 1 | Hồ Văn Khải | 23127015 |
| 2 | Nguyễn Hoàng Đăng | 23127166 |
| 3 | Ngô Trần Quang Đạt | 23127341 |
| 4 | Nguyễn Gia Huy | 23127378 |
| 5 | Vũ Văn Vũ | 23127543 |
University of Science, VNU-HCM
Instructors: MSc. Trương Toán Thịnh, MSc. Hồ Tuấn Thanh
Semester 3 — Academic Year 2025–2026