An Android mobile application for smart parking management — find parks, check available slots, make reservations and manage payments, with offline support.
NeuParking connects to a smart parking API to give users real-time information about parking lots. Users can register, log in, browse parks, reserve slots, and track payments — all from their mobile device.
- Authentication — Register and login with JWT token-based auth
- Parks — Browse available parking lots with slot availability
- Slots — View and select individual parking slots per park
- Reservations — Create and manage parking reservations
- Payments — View payment history and process payments
- Statistics — Parking usage stats and overview
- Offline support — SQLite local database caches data when no connection is available
- Auto-login — Credentials stored securely via SharedPreferences
- Kotlin — Android development language
- Retrofit — HTTP client for REST API communication
- OkHttp — Underlying HTTP layer
- Gson — JSON serialization/deserialization
- SQLite — Local offline database
- JWT (Auth0) — Token decoding for authenticated sessions
- MVC architecture — Models, Controllers, Activities (Views)
app/src/main/java/pt/ipca/pa/
├── Adapters/ # RecyclerView adapters (Parks, Slots, Payments)
├── controller/ # Business logic (Reservation, Slot, Stats)
├── model/ # Data models (ReservationModel, SlotModel, StatsModel)
├── Park/ # Park listing, stats activities
├── Payment/ # Payment listing and processing
├── Revervation/ # Reservation flow
├── Slot/ # Slot selection
├── SQLite/ # Local database handlers (Park, Payments, Reservation)
├── services/ # Retrofit API client
├── data/ # Data classes (User)
└── utils/ # Constants and utilities
The app communicates with a REST API hosted at https://smart-api.onrender.com for:
- User authentication (
/login/,/register/) - Park data
- Slot availability
- Reservation management
- Clone the repository
- Open in Android Studio
- Let Gradle sync the dependencies
- Run on an emulator or physical Android device (API 24+)
Note: The app requires an active internet connection to fetch live parking data. Offline mode uses locally cached data via SQLite.