π§³ Travel & Code! A modern travel guide app built to inspire wanderlust and showcase clean Android development
Discover amazing destinations β’ Learn modern Android development β’ Explore the world
Travelo is more than just a travel appβit's a learning playground for modern Android development! Built with the latest technologies and best practices, this app demonstrates how to create beautiful, performant, and maintainable Android applications while helping users discover incredible travel destinations worldwide.
Whether you're a developer looking to learn clean architecture patterns or a traveler seeking your next adventure, this app has something for you!
The UI is inspired by the gorgeous "Aspen Travel App Exploration- Mobile App Design" by Nickelfox Design that showcases modern travel app design patterns with:
- Clean, minimalist interface
- Beautiful imagery and typography
- Intuitive navigation patterns
- Mobile-first responsive design
Built following Clean Architecture principles with MVVM pattern:
π± Presentation Layer
βββ π¨ UI Components (Jetpack Compose)
βββ π Screens & Navigation
βββ π§ ViewModels & State Management
πΌ Domain Layer
βββ π Use Cases
βββ π Repository Interfaces
βββ π·οΈ Domain Models
πΎ Data Layer
βββ π Remote Data Sources (TripAdvisor API + OpenWeatherMap API)
βββ πΏ Local Data Source (Room Database)
βββ ποΈ Repository Implementation
- Browse destinations by categories
- Location-based recommendations with GPS integration
- Popular and trending spots
- Advanced search functionality with category filtering
- GPS Location Detection - Automatically find your current location
- City Search & Selection - Search for any city worldwide
- Geocoding & Reverse Geocoding - Convert between addresses and coordinates
- Weather Integration - Get current weather for any location
- Detailed destination information
- High-quality photos and galleries
- Reviews and ratings
- Geographic coordinates and maps
- Material 3 Design System
- Smooth animations and transitions
- Dark/Light theme support
- Responsive layouts for all screen sizes
- Native Splash Screen with proper branding
- Offline-First Architecture - Works seamlessly without internet
- Efficient image loading and caching
- Error handling with retry mechanisms
- Optimized for battery and data usage
- Comprehensive Unit Testing - ViewModels, Repositories, and business logic
- UI Testing - Composable component testing with test automation
- Integration Testing - End-to-end user flow validation
- MockK Integration - Advanced mocking for isolated component testing
- Coroutine Testing - Proper async code testing with TestDispatcher
- Hilt Testing - Dependency injection testing with test doubles
- Kotlin - Modern, concise, and safe programming language
- Jetpack Compose - Declarative UI toolkit for native Android
- Material 3 - Latest Material Design components
- MVVM Pattern - Separation of concerns and testability
- Clean Architecture - Maintainable and scalable code structure
- Offline-First Architecture - Seamless user experience without connectivity
- Dagger Hilt - Dependency injection for cleaner code
- Navigation Compose - Type-safe navigation between screens
- Retrofit - Type-safe HTTP client for API communication
- Room Database - Local data persistence and caching
- DataStore Preferences - Modern data storage solution for user preferences
- Gson - JSON serialization and deserialization
- OkHttp Logging Interceptor - Network request/response logging
- Google Play Location Services - Accurate GPS positioning
- Core SplashScreen - Native Android 12+ splash screen implementation
- Coil Compose - Fast and lightweight image loading library
- Material Icons Extended - Comprehensive icon library
- Custom Animations - Smooth and delightful user interactions
- JUnit 4 - Unit testing framework
- MockK - Mocking library for Kotlin
- Truth - Fluent assertion library by Google
- Compose UI Testing - Automated UI component testing
- Coroutines Test - Testing support for coroutines and flows
- Hilt Testing - Dependency injection testing utilities
- Espresso - UI testing framework for integration tests
- KSP (Kotlin Symbol Processing) - Faster annotation processing
- Gradle Version Catalogs - Centralized dependency management
Provides comprehensive travel data including:
- π¨ Hotels and accommodations
- π½οΈ Restaurants and dining
- π― Attractions and activities
- π Location details and reviews
- π Real-time ratings and feedback
A fantastic completely free weather service (unlike TripAdvisor's paid tiers!) providing:
- π€οΈ Current weather conditions
- π City and country search with geocoding
- πΊοΈ Reverse geocoding for coordinates
- π Location-based weather data
- π 100% Free - No hidden costs or usage limits for basic features!
Special thanks to OpenWeatherMap for providing an excellent free service that makes location-based features accessible to all developers!
See Travelo in action: location discovery, search, and detailed views
Middle row: Smart location selection with GPS & advanced search with filtering
Bottom row: Empty state handling & clean initial search interface
- Android Studio Hedgehog | 2023.1.1 or newer
- JDK 21 or higher
- Android SDK with API level 24+
- TripAdvisor API Key (see setup instructions below)
- OpenWeatherMap API Key (see setup instructions below)
-
Clone the repository
git clone https://github.com/Farajialireza82/VacationApp.git cd VacationApp
-
Get your TripAdvisor API key
- Visit TripAdvisor Developer Portal
- Create an account and generate an API key
-
Get your OpenWeatherMap API key
- Visit OpenWeatherMap API
- Create a free account and generate an API key
- Enjoy their completely free tier! π
-
Configure API keys
- Add your API keys to
gradle.properties
:
TRIP_ADVISOR_API_KEY=your_trip_advisor_key_here OPEN_WEATHER_MAP_API_KEY=your_open_weather_map_key_here
- Add your API keys to
-
Open in Android Studio
- Open Android Studio
- Select "Open an existing project"
- Navigate to the cloned directory and open it
-
Build and Run
- Sync the project with Gradle files
- Run the app on an emulator or physical device
Testing infrastructure is currently being developed:
# Unit tests
./gradlew test
# Instrumented tests
./gradlew connectedAndroidTest
app/
βββ src/main/kotlin/com/cromulent/vacationapp/
β βββ data/ # Data layer implementation
β β βββ local/ # Room database, DAOs
β β βββ remote/ # API services, DTOs
β β βββ repository/ # Repository implementations
β βββ domain/ # Business logic layer
β β βββ repository/ # Repository interfaces
β βββ model/ # Data models and entities
β βββ presentation/ # UI layer
β β βββ components/ # Reusable UI components
β β βββ home/ # Home screen and components
β β βββ location/ # Location selector screen
β β βββ search/ # Search screen with filtering
β β βββ navigation/ # Navigation setup
β β βββ theme/ # App theming and styling
β βββ util/ # Utility classes and constants
We love contributions! Whether you're fixing bugs, adding features, or improving documentation, your help makes this project better.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow Kotlin coding conventions
- Write unit tests for new features
- Update documentation as needed
- Use meaningful commit messages
This project is open source and available under the MIT License.
- Nickelfox Design - For the beautiful "Aspen Travel App Exploration" design inspiration
- TripAdvisor - For providing comprehensive travel data
- OpenWeatherMap - For their amazing completely free weather and geocoding services! π
- Android Developer Community - For excellent documentation and resources
- Jetpack Compose Community - For pushing the boundaries of Android UI development
- Issues: GitHub Issues
- Email: farajialireza82@gmail.com
Made with β€οΈ for travelers and developers worldwide
Happy coding and safe travels! π