Skip to content

ddechew/Travel-Destination-Weather-Tracker

Repository files navigation

Travel Destination & Weather Tracker

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

✨ Features

📍 Destinations Management

  • Add, edit, or delete travel destinations
  • Set status: Planned, Ongoing, Completed, or Cancelled
  • Start and end dates
  • Duration, rating, and travel purpose
  • Cities dynamically fetched based on selected country

🌎 Weather Forecasts

  • 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

💰 Expense Tracking

  • 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

💡 Technologies Used


🚫 Sensitive Data Handling

All API keys are stored securely in appsettings.json, which is excluded from version control using .gitignore.

Sample appsettings.json

{
  "Amadeus": {
    "ClientId": "YOUR_AMADEUS_CLIENT_ID",
    "ClientSecret": "YOUR_AMADEUS_CLIENT_SECRET"
  },
  "WeatherApiKey": "YOUR_WEATHER_API_KEY"
}

Don't forget to update your ConfigurationService.cs to read from this file at runtime.


💪 Key Architectural Decisions

  • Basic Navigation is used for all routing between pages instead of Shell
  • NavigationContext.cs stores temporary navigation data like destinations, country lists, etc.
  • MVVM was initially considered but MVU was used due to project requirements.

📓 Future Improvements

  • Authentication (Firebase or Azure AD B2C)
  • Cloud sync for destinations and expenses
  • More advanced filtering and reporting
  • Hotel booking integration

📁 Folder Structure

- 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)

🚀 Getting Started

  1. Clone this repo
  2. Create your own appsettings.json in the project root
  3. Add your Amadeus and Weather API credentials
  4. Run the app via Visual Studio

✍️ Author - Decho Dechev

Built with determination, iterations, and late nights ☕️


📝 License

This project is licensed under the MIT License.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages