-
Notifications
You must be signed in to change notification settings - Fork 0
Home
A location-aware Android travel companion β discover, review, and share places with fellow travelers
Tip
Recommended IDE: Android Studio (Ladybug or newer) for running, testing, and debugging. VS Code with Java extensions works for editing.
- Android Studio Ladybug+ (or VS Code with Java Extension Pack)
- JDK 17 (bundled with Android Studio)
- Android SDK 34 with Build Tools 36.0.0
# Clone with submodules
git clone --recurse-submodules https://github.com/HlexNC/iTravel.git
cd iTravel
# Open in Android Studio β Run on emulator or device./gradlew assembleDebug# VS Code: Reopen in Container (requires Docker)
# Or manually:
docker build -t itravel-dev .devcontainer/
docker run --rm -v "$(pwd)":/workspaces/iTravel itravel-dev ./gradlew assembleDebugImportant
API Keys Required β Before running, add your keys in app/.../utils/Constants.java:
-
UNSPLASH_ACCESS_KEYβ Unsplash Developers -
WEATHER_API_KEYβ OpenWeatherMap - Google Maps API key in
AndroidManifest.xml
graph TB
subgraph "Presentation Layer"
A[Activities]
B[Fragments]
C[Adapters]
end
subgraph "Navigation"
D[Jetpack Navigation<br/>Auth Graph Β· Main Graph]
end
subgraph "Data Layer"
E[Retrofit API Clients]
F[Room Database]
G[SharedPreferences<br/>Encrypted]
end
subgraph "External Services"
H[REST Countries API]
I[Unsplash Photos API]
J[OpenWeatherMap API]
K[Google Maps SDK]
end
A --> D
D --> B
B --> C
B --> E
B --> F
B --> G
E --> H
E --> I
E --> J
B --> K
| Layer | Components | Purpose |
|---|---|---|
| Activities |
SplashActivity, AuthActivity, MainActivity, LocationDetailActivity
|
Screen hosts and lifecycle owners |
| Fragments |
WelcomeFragment, LoginFragment, RegisterFragment, DiscoverFragment, FeedFragment, SearchFragment, ProfileFragment, AddReviewFragment
|
UI screens within navigation graphs |
| API |
RetrofitClient, CountriesApi, UnsplashApi, WeatherApi
|
REST networking via Retrofit + Gson |
| Storage | Room (local DB), EncryptedSharedPreferences | Offline data and secure credentials |
| Maps | Google Maps SDK + Fused Location Provider | Map display and GPS validation |
- Discover Map: Interactive Google Maps view with location markers and categories
- Travel Feed: Instagram-style card feed with photos, weather overlays, and likes
- Location Reviews: GPS-verified reviews with photo attachments and star ratings
- User Authentication: Login / Register flow with encrypted credential storage
- Country Explorer: Browse countries via REST Countries API with flag imagery
-
GPS Validation: Reviews require physical proximity to the location (
GPSValidator) -
Encrypted Storage:
androidx.security:security-cryptofor sensitive data - Image Loading: Glide for efficient image caching and display
- Navigation Component: Two nav graphs (auth + main) with bottom navigation
-
Material Design 3: Themed with
Theme.Material3.DayNight.NoActionBar
- Splash Screen: Branded launch with auto-transition to auth
- Bottom Navigation: Discover Β· Feed Β· Search Β· Profile
-
Card-Based Feed:
CardView+RecyclerViewwith gradient overlays -
Responsive Layouts:
ConstraintLayoutthroughout
iTravel/
βββ π build.gradle # Root build config (AGP 8.13.2)
βββ π settings.gradle # Module includes + repositories
βββ π gradle.properties # JVM and AndroidX settings
βββ π .devcontainer/ # VS Code DevContainer (Docker)
β βββ Dockerfile # Ubuntu 22.04 + JDK 17 + Android SDK
β βββ devcontainer.json # Container configuration
βββ π app/ # Application module
β βββ build.gradle # App dependencies and SDK config
β βββ π src/main/
β βββ AndroidManifest.xml # Permissions and activity declarations
β βββ π java/.../activities/ # Activity classes
β βββ π java/.../fragments/ # Fragment classes
β βββ π java/.../adapters/ # RecyclerView adapters
β βββ π java/.../api/ # Retrofit interfaces + client
β βββ π java/.../models/ # Data models and DTOs
β βββ π java/.../utils/ # Constants, validation, GPS
β βββ π res/ # Layouts, navigation, drawables, values
βββ π docs/ # Project documentation (wiki submodule)
βββ π legacy/ # Previous version (iTravel-v0 submodule)
| Category | Technology | Version |
|---|---|---|
| Language | Java | 17 |
| Build System | Gradle (Groovy DSL) | 8.13 |
| Android Gradle Plugin | AGP | 8.13.2 |
| Min SDK | Android 8.0 | API 26 |
| Target SDK | Android 14 | API 34 |
| UI Toolkit | Material Design 3 | 1.11.0 |
| Navigation | Jetpack Navigation | 2.7.7 |
| Networking | Retrofit 2 + OkHttp | 2.9.0 / 4.12.0 |
| Image Loading | Glide | 4.16.0 |
| Database | Room | 2.6.1 |
| Maps | Google Maps SDK | 18.2.0 |
| Location | Fused Location Provider | 21.1.0 |
| Security | EncryptedSharedPreferences | 1.1.0-alpha06 |
| Testing | JUnit 4 + Espresso | 4.13.2 / 3.5.1 |
# Unit tests
./gradlew test
# Instrumented tests (requires emulator or device)
./gradlew connectedAndroidTestCurrent test coverage includes:
-
GPSValidatorTestβ proximity validation for review submission - Additional unit and integration tests (planned)
-
Open β Select the
iTravel/root directory - Sync Gradle β Android Studio will download dependencies automatically
- Run β Select an emulator (API 26+) or connected device
- Debug β Set breakpoints and use the built-in debugger
- Install extensions:
vscjava.vscode-java-pack,redhat.java - Open the project folder
- Optional: Reopen in Container for a fully configured build environment
| Key | File | Field |
|---|---|---|
| Unsplash | Constants.java |
UNSPLASH_ACCESS_KEY |
| OpenWeatherMap | Constants.java |
WEATHER_API_KEY |
| Google Maps | AndroidManifest.xml |
com.google.android.geo.API_KEY |
Warning
Security: Do not commit API keys to version control. Use local.properties or environment variables for production builds.
| Token | Color | Hex | Usage |
|---|---|---|---|
teal_primary |
π© | #1E7B7E |
Primary brand, app bars |
teal_secondary |
π© | #2A9D8F |
Secondary accents |
orange_accent |
π§ | #F4A261 |
CTAs, highlights |
coral_action |
π₯ | #E76F51 |
Destructive actions |
dark_slate |
β¬ | #264653 |
Dark backgrounds, text |
off_white |
β¬ | #F1FAEE |
Light backgrounds |
| Page | Description |
|---|---|
| Home | This page β project overview |
| Architecture | Detailed architecture and data flow |
| API-Integration | External API setup and usage |
| Development-Guide | Setup, conventions, and workflow |
Note
University Project: Developed as part of Media Technology at Deggendorf Institute of Technology (DIT).
Licensed under the GNU General Public License v3.0 β see the LICENSE file for details.
Built with β€οΈ for travelers, by travelers
Von Travelern fΓΌr Traveler
iTravel β Von Travelern fΓΌr Traveler Β· GitHub Β· Deggendorf Institute of Technology