This repository contains only the Android client for Nimons360. The backend services are maintained in a Labpro's repository, while the livestreaming infrastructure (LiveKit) is self hosted this repository
Releases [Download APK] · OpenAPI Specs · Project Specification (Bahasa Indonesia)
PT Cianjur Tech Fund Tbk (CTF)
| NIM | Name | GitHub |
| 13523002 | Refki Alfarizi | |
| 13523004 | Razi Rachman Widyadhana | |
| 13523061 | Darrel Adinarya Sunanda |
This repository is the first capstone project for the IF3210 Mobile App Development (2026) at Institut Teknologi Bandung.
Nimons360 (inspired by Life360) is a real-time, mobile-first family tracking application. Users can create or join family groups using secure codes and share their live geographic coordinates on an interactive map. As family members move, their locations update instantly on the screen, providing continuous, real-time visibility of everyone's whereabouts. The application also tracks and displays device metrics such as battery life, smartphone orientation, and active network connection status.
Additionally, a real-time video livestreaming feature allows users to broadcast their immediate surroundings directly to their connected family members.
This project is a native Android application built with Kotlin and structured around the MVVM pattern. The interface uses a hybrid approach, combining Jetpack Compose with traditional XML layouts. Real-time location tracking is handled via bi-directional WebSockets rather than standard HTTP polling. For offline resilience and security, the app caches essential data locally using Room and stores sensitive payloads like JWTs in encrypted preferences.
| Library | Description |
|---|---|
| Jetpack Compose & Material 3 | Modern, declarative UI toolkit used for building responsive and beautiful native Android interfaces. |
| AndroidX Navigation | Handles in-app routing, transitions, and passing safe arguments between screens/fragments. |
| Hilt (Dagger) | Dependency injection framework to simplify architecture and manage application-wide dependencies. |
| Room | SQLite abstraction layer for robust local database storage, used to save offline data like pinned families and favorite locations. |
| Retrofit & OkHttp | Type-safe HTTP client and network interceptors for executing REST API requests and handling WebSockets. |
| Moshi | Modern JSON serialization/deserialization library for Kotlin to easily parse API payloads. |
| Kotlin Coroutines | Asynchronous programming design pattern for smoothly handling background tasks, network calls, and data streams. |
| Osmdroid | Open-source mapping library to render the interactive live-tracking map without relying on paid map services. |
| Play Services Location | Google's API to accurately fetch the user's real-time GPS coordinates for map positioning. |
| LiveKit | Real-time WebRTC SDK utilized to power the bonus real-time video livestreaming feature. |
| Coil & Glide | Fast, lightweight image loading libraries optimized for fetching and caching images like user avatars and family icons. |
| DataStore & Security Crypto | Modern preference storage paired with EncryptedSharedPreferences to securely store sensitive data, such as JWT authentication tokens. |
| SwipeRefreshLayout | Native Android UI component providing the standard pull-to-refresh functionality for lists and feeds. |
Secure your account using JWT token-based login and logout functionalities. The app gracefully handles expired sessions by redirecting users appropriately. Once inside, you can manage your personal profile, view your assigned avatar, and update your display name seamlessly.
Easily manage your connections by discovering random families or viewing the ones you have already joined directly from the Home screen. You can create brand new families complete with custom icons and shareable 6-character invite codes, or join existing groups. For quick access, pin your most important families to save them locally using Room Database. We also included a dynamic search bar to filter through extensive family lists instantly without endless scrolling.
Keep tabs on everyone's whereabouts on an interactive map powered by osmdroid. As family members move, their locations update in real-time via WebSockets without needing a manual refresh. The map displays your precise compass orientation, detects offline users (hiding members who stop broadcasting for 5 seconds), and even broadcasts the active internet connection type (WiFi or Mobile Data) of each user directly on their detail card.
Important spots shouldn't be hard to find. Tap and save critical locations like Home, School, or the local grocery store directly onto the map. These favorite spots are persisted locally and marked with special UI pins for quick identification.
Sometimes a map isn't enough. Powered by the LiveKit Android SDK, family members can start a live video broadcast to share their immediate surroundings with the rest of their group instantly, providing crucial visual context in unfamiliar environments or emergencies.
Stay informed about your connection stability. The application features a real-time global pop-up detection system that alerts you the moment your device loses internet connectivity, ensuring you are never caught off guard.
| Login | Profile View | Profile Edit |
|---|---|---|
![]() |
![]() |
![]() |
| Home Dashboard | Discover Families | My Families |
|---|---|---|
![]() |
![]() |
![]() |
| Search Families | Create Family | Join Family |
![]() |
![]() |
![]() |
| Family Details (Open) | Family Details (Close) | |
![]() |
![]() |
| Map View | Map User Info | Map Own Info |
|---|---|---|
![]() |
![]() |
![]() |
| Map Fav Info | Map Fav Location | Map Filter |
![]() |
![]() |
![]() |
| Map Search | Map GPS Off | Map GPS Pause |
![]() |
![]() |
![]() |
| Network Sensing |
|---|
![]() |
| Broadcasting Stream | Viewer Stream |
|---|---|
![]() |
![]() |
- Android Studio (Koala or newer recommended)
- Minimum SDK: Android 11 (API Level 30)
- Target SDK: Android 15 (API Level 35)
Warning
This application was primarily developed and tested on Android 15 (API Level 35). While core functionalities are fully supported down to Android 11 (API Level 30), you may experience minor UI inconsistencies or layout variations on older operating systems.
- Clone this repository.
- If utilizing the LiveKit Livestreaming feature, ensure your
livekit.tokens.baseUrlproperty is set in yourlocal.propertiesor gradle configuration. - Sync Gradle and run the app on a physical device (Emulators may struggle with WebSockets, Location Services, and Camera hardware).
If the provided Labpro server is down, you can host the backend locally using this repository. Adjust the base URL in your Retrofit/WebSocket configuration to point to your local machine.
| NIM | Name | Tasks |
|---|---|---|
| 13523002 | Refki Alfarizi | Authentication, Profile Management, Home Dashboard, Create Family, Family Details, Real-Time Livestreaming, LiveKit Infrastructure, Design |
| 13523004 | Razi Rachman Widyadhana | Live Interactive Map & Tracking, Orientation Sensor, User Pin Info, Favorite Locations, Search & Filter in Map, GPS Status Banner |
| 13523061 | Darrel Adinarya Sunanda | Discover & Search Families, Families Menu, Local Pinning, Network Sensing Dialog, OpenAPI Specifications |
| NIM | Name | Preparation (Hours) | Work (Hours) |
|---|---|---|---|
| 13523002 | Refki Alfarizi | 14 | 54 |
| 13523004 | Razi Rachman Widyadhana | 8 | 30 |
| 13523061 | Darrel Adinarya Sunanda | 6 | 26 |
© 2026 PT Cianjur Tech Fund Tbk (CTF).























