2026-04-22 21:01:00 +07:00

192 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div align="center">
> ⚠️ **WORK IN PROGRESS (WIP)** ⚠️
> *This repository is currently under active development. All code, data, and structures are subject to continuous changes.*
<br>
<img src="assets/gambar.png" alt="WalkGuide Banner" width="720"/>
# WalkGuide: AI-Powered Navigation
**Integrated Mobile Application Project**
*Flutter Mobile Frontend × Spring Boot Backend × OOAD*
### Group Members
| Name | NIM | Responsibility |
|------|-----|---------------|
| Bambang Herlambang | 5803024019 | - |
| Jap Robertus | 5803024004 | - |
| Evan William | 5803024001 | Backend Engineer (Spring Boot API & Flutter) |
[![Flutter](https://img.shields.io/badge/Flutter-Clean_Architecture-02569B?style=flat-square&logo=flutter&logoColor=white)](https://flutter.dev/)
[![Spring Boot](https://img.shields.io/badge/Spring_Boot-REST_API-6DB33F?style=flat-square&logo=spring&logoColor=white)](https://spring.io/projects/spring-boot)
[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-Database-4169E1?style=flat-square&logo=postgresql&logoColor=white)](https://www.postgresql.org/)
[![License](https://img.shields.io/badge/License-MIT-22c55e?style=flat-square)](LICENSE)
![Last Updated](https://img.shields.io/badge/Last_Updated-WIP-blue?style=for-the-badge)
![Author](https://img.shields.io/badge/By-evan--william-brightgreen?style=for-the-badge)
[**System Architecture**](#system-architecture) · [**Implementations**](#implementations) · [**Results**](#results) · [**Weekly Progress**](#weekly-progress)
</div>
---
## Overview — WalkGuide System
**Core Objective:** How can we build an ultra-low latency, accessible navigation system for visually impaired users while providing real-time oversight for their guardians?
This project implements a dual-interface mobile application. The system relies on **On-Device AI (TFLite)** to eliminate network latency during obstacle detection, paired with a robust **Spring Boot backend** for secure authentication and guardian-user pairing.
---
## System Architecture
The study follows a strict three-pillar enterprise structure:
**Pillar 1 — OOAD (Object-Oriented Analysis & Design):** Comprehensive modeling using Use Case, Class, Sequence, and ERD diagrams. The codebase strictly implements ≥ 4 GoF Design Patterns (e.g., Builder, Singleton, Repository, Strategy).
**Pillar 2 — Flutter (Mobile Frontend):** Implements Clean Architecture (Domain, Data, Presentation layers) with BLoC/Riverpod for state management. Uses `Dio` for secure HTTP communication.
**Pillar 3 — Spring Boot (Backend API):** A layered architecture (Controller → Service → Repository) powered by Java 17+. Features JWT-based Role-Based Access Control (RBAC) and standardized `ApiResponse` envelopes.
---
## Implementations
### Design A — User Mode (Visually Impaired)
An accessibility-first interface that opens directly to an active camera view.
- **On-Device AI:** Obstacle detection using TFLite runs locally to ensure zero network latency.
- **Hardware Mapping:** Physical volume buttons mapped to critical actions (e.g., auto-accept guardian calls).
- **Voice Commands:** Integrated TTS and speech recognition for hands-free navigation.
### Design B — Guardian Mode (Admin)
A command center dashboard for oversight and configuration.
- **Real-time Monitoring:** Tracks user status and device battery.
- **Remote Configuration:** Adjusts AI sensitivity and sets hardware shortcuts for the paired User device.
- **Quick Actions:** One-tap voice conferencing and emergency overrides.
---
## Metrics
| Metric | Instrument | Target Threshold |
|--------|-----------|------|
| API Throughput | Apache JMeter / k6 | ≥ 100 req/s under load |
| API p95 Latency | Apache JMeter / k6 | < 500ms |
| UI Frame Rate | Flutter DevTools | 90% frames < 16ms |
| Code Coverage | JaCoCo | 70% (Service & Controller) |
---
## Technical Parameters
**Backend Phase (Spring Boot):**
- Environment: Java 17+, PostgreSQL / H2 Database, Flyway Migrations.
- Security: Spring Security, JWT (Access + Refresh Tokens).
- Documentation: OpenAPI 3.0 (Swagger UI).
**Mobile Phase (Flutter):**
- Environment: Flutter 3.x, physical Android device testing (Profile Mode).
- Storage: `flutter_secure_storage` for JWT.
- Routing: GoRouter with role-based authenticated routes.
---
## Repository Structure
> 🚨 **DISCLAIMER:** This repository is in active development. The directory tree below is a **conceptual reference snapshot** of the intended architecture. It **does not** represent the exact, current state of the files.
```text
/
├── walkguide-backend/ # [Spring Boot Engine]
│ ├── src/main/java/com/walkguide/
│ │ ├── config/ # Security & Swagger configs
│ │ ├── controller/ # REST Endpoints
│ │ ├── dto/ # AuthRequest & ApiResponse
│ │ ├── entity/ # JPA Entities
│ │ └── exception/ # GlobalExceptionHandler
│ └── pom.xml
├── walkguide-mobile/ # [Flutter Frontend]
│ ├── lib/
│ │ ├── core/ # API Service, Storage, Failures
│ │ ├── features/
│ │ │ ├── auth/ # Clean Arch: domain, data, presentation
│ │ │ └── home/ # User & Guardian Dashboards
│ │ └── main.dart
│ └── pubspec.yaml
├── ooad-docs/ # [Design Artifacts]
│ ├── diagrams/ # PlantUML / draw.io exports
│ └── Traceability_Matrix.md
└── README.md
````
-----
## Quick Start (WIP)
```bash
# 1. Clone the repository
git clone [https://github.com/YourGroup/walkguide-final-exam.git](https://github.com/YourGroup/walkguide-final-exam.git)
# 2. Run Backend (Spring Boot)
cd walkguide-backend
./mvnw spring-boot:run
# 3. Run Mobile (Flutter) - Connect to local backend
cd ../walkguide-mobile
flutter pub get
flutter run
```
-----
## Results
> ⏳ **Work In Progress:** Results are populated as benchmarking phases are completed.
| Metric | Baseline | Final Optimized | Status |
|--------|-----------------|----------------------|---------|
| Cold Start Time | *Pending* | *Pending* | |
| Memory Leak (10 Navs)| *Pending* | *Pending* | |
| API Error Rate | *Pending* | *Pending* | |
-----
## Weekly Progress
| Week | Target | Status |
|------|--------|--------|
| 1 | Topic proposal, Use Case definitions, Repo setup | Done |
| 2-3 | OOAD diagrams, OpenAPI YAML drafted | 🔄 In Progress |
| 4 | Clean Architecture & Spring Boot layers implemented | Pending |
| 5 | Mid-sprint benchmarking (Flutter + Backend) | Pending |
| 6-7 | Feature freeze, AI integration, Integration testing | Pending |
| 8 | Final benchmarks, Report writing, Demo Video | Pending |
-----
## Core Objectives
**O₁ (Performance):** The dual-platform architecture must maintain a 60fps UI frame rate while handling concurrent backend requests without exceeding 500ms latency.
**O₂ (Accessibility):** The User mode must require zero visual interaction post-login, relying entirely on haptics, voice, and physical button mapping.
**O₃ (Traceability):** Every major feature implementation must be directly traceable back to the pre-development OOAD artifacts and GoF design patterns.
-----
## License
Distributed under the [MIT License](https://www.google.com/search?q=LICENSE).
-----
*Final Exam: Integrated Mobile Application Project* <br>
*Flutter × Spring Boot × Object-Oriented Analysis and Design*