Skip to content

l0stplains/Nimons360

Repository files navigation

Nimons360

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

Nimons360 Banner

Releases [Download APK] · OpenAPI Specs · Project Specification (Bahasa Indonesia)


Table of Contents


The Team

PT Cianjur Tech Fund Tbk (CTF)

NIM Name GitHub
13523002 Refki Alfarizi
13523004 Razi Rachman Widyadhana
13523061 Darrel Adinarya Sunanda

About

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.


Tech Stack

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.

Libraries Used

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.

Application Features

Authentication & Profile Management

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.

Family Discovery & Management

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.

Live Interactive Map & Tracking

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.

Favorite Locations

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.

Real-Time Livestreaming

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.

Global Network Sensing

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.


Screenshots

Authentication & Profile

Login Profile View Profile Edit

Dashboard & Family Organization

Home Dashboard Discover Families My Families
Search Families Create Family Join Family
Family Details (Open) Family Details (Close)

Live Tracking & Maps

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

Network Sensing

Real-Time Livestreaming

Broadcasting Stream Viewer Stream

How to Run

Prerequisites

  • 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.

Setup & Build

  1. Clone this repository.
  2. If utilizing the LiveKit Livestreaming feature, ensure your livekit.tokens.baseUrl property is set in your local.properties or gradle configuration.
  3. Sync Gradle and run the app on a physical device (Emulators may struggle with WebSockets, Location Services, and Camera hardware).

Local Backend (Optional)

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.


Task Distribution

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

Work Hours

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).

About

A real-time, mobile-first family tracking Android app featuring live map updates and livestreaming.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages