A cross-platform .NET MAUI mobile application that allows users to:
- Track travel destinations
- Record and view expenses (including hotel-specific and generic)
- View detailed weather forecasts for selected cities
- Add, edit, or delete travel destinations
- Set status:
Planned,Ongoing,Completed, orCancelled - Start and end dates
- Duration, rating, and travel purpose
- Cities dynamically fetched based on selected country
- Fetch 7-day forecasts via WeatherAPI.com
- View:
- Current weather
- Hourly forecast with icons and temperature
- 3-day forecast with min/max temperatures
- Wind speed, humidity, and rain chance
- Add generic expenses by type and value
- Add hotel expenses from Amadeus hotel API:
- Hotel name, price per night, duration, total
- Edit hotel booking duration only via hotel details
- View total expenses per destination
- .NET MAUI (Multi-platform App UI)
- SQLite local database
- Amadeus API for hotel listings
- WeatherAPI for weather data
- XAML & C# for UI and business logic
All API keys are stored securely in appsettings.json, which is excluded from version control using .gitignore.
{
"Amadeus": {
"ClientId": "YOUR_AMADEUS_CLIENT_ID",
"ClientSecret": "YOUR_AMADEUS_CLIENT_SECRET"
},
"WeatherApiKey": "YOUR_WEATHER_API_KEY"
}Don't forget to update your
ConfigurationService.csto read from this file at runtime.
- Basic Navigation is used for all routing between pages instead of Shell
NavigationContext.csstores temporary navigation data like destinations, country lists, etc.- MVVM was initially considered but MVU was used due to project requirements.
- Authentication (Firebase or Azure AD B2C)
- Cloud sync for destinations and expenses
- More advanced filtering and reporting
- Hotel booking integration
- Models/ // Domain models like Destination, Expense, Hotel
- Services/ // API & database services (Weather, Amadeus, SQLite)
- Pages/ // XAML pages for Destinations, Hotels, Weather, Expenses
- Utils/ // Shared utilities and navigation context
- appsettings.json // API Keys (excluded from git)
- Clone this repo
- Create your own
appsettings.jsonin the project root - Add your Amadeus and Weather API credentials
- Run the app via Visual Studio
Built with determination, iterations, and late nights ☕️
This project is licensed under the MIT License.