192 lines
7.5 KiB
Markdown
192 lines
7.5 KiB
Markdown
<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) |
|
||
|
||
[](https://flutter.dev/)
|
||
[](https://spring.io/projects/spring-boot)
|
||
[](https://www.postgresql.org/)
|
||
[](LICENSE)
|
||
|
||

|
||

|
||
|
||
[**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*
|