Breeze is a sleek and intuitive weather app designed to provide real-time, hyper-local forecasts with ease. Whether you're planning your day or vacation, tracking multiple locations, or staying ahead of severe weather alerts, Breeze delivers accurate and up-to-date information in a clean, user-friendly interface. With personalized recommendations and seamless updates, staying informed about the weather has never been this effortless.
FOR individuals who spend a lot of time outdoors
WHO want accurate, real-time whather updates for any part of Romania to plan their daily activities easily. (nume) is a smart weather platform
THAT provides hyper-local forecasts, severe weather alerts, and tailored recommendations for outdoor plans, ensuring users stay informed and prepared.
UNLIKE generic weather apps that focus only on basic forecasts, we offer a personalized, context-aware experience that adapts to users' locations, interests, and routines.
OUR PRODUCT delivers real-time weather insights, activity-based recommendations, and a sleek, intuitive interface—helping users make the most of every day, no matter the weather.
• Allow users to sign up for access to the site.
• Display a confirmation pop-up after successful registration.
• Allow users to log in and access the platform.
• Get live temperature, humidity, wind speed, and precipitation levels.
• Hourly and daily forecasts based on precise location in Romania.
• Neighborhood-level accuracy using ANM’s APIs.
• Save and track multiple locations for quick access to different city forecasts.
• Useful for travelers, remote workers, and frequent commuters.
• Get accurate daily forecasts for the next five days, including temperature trends, precipitation chances, and wind conditions
• Open the app and get real-time weather updates for your current location without manual input
• As a new user, I want to sign up for an account so that I can access personalized weather updates and save my locations
• As a user, I want to see a pop-up that confirms the registration so I know that it was a success.
• As a user, I want to log in so I can access the platform.
• As a user, I want to see live weather conditions so that I can plan my activities accordingly.
• As a user, I want the data to refresh automatically at regular intervals.
• As a user, I want to receive accurate weather forecasts for my exact location so that I can prepare for the day ahead
• As a user, I want to be able to view daily forecasts.
• As a user, I want to save and track weather for multiple locations so that I can stay informed about the weather in different places.
• As a user, I want to quickly switch between saved locations to view forecasts.
• As a user, I want to be able to check the forecast for multiple days so that I can plan for the comming week.
• As a user, I want to quickly check the weather in my current location without having to look the city up.
Alex wakes up early, groggy but knowing he needs to check the weather before heading out. He grabs his phone and opens Breeze, which immediately shows the current temperature, humidity, and wind speed based on his location. Scrolling down, he notices rain is expected in the afternoon. He sighs, grabs an umbrella, and checks the hourly forecast to see exactly when the rain will start. Since it’s Wednesday, he also takes a quick peek at the weekend forecast—perfect weather for a hiking trip he’s been planning. Smiling, he adds a reminder to his calendar and saves his office location in the app to keep track of the weather during his commute. With everything set, he heads out, feeling prepared for the day ahead.
Maria zips up her suitcase and sits down to do one final check before heading to the airport. Opening Breeze, she navigates to "Saved Locations" and quickly adds Paris, her destination. Within seconds, a detailed five-day forecast appears, showing temperatures much colder than back home. She frowns, realizing she needs to pack a heavier jacket and an umbrella. As her flight takes off, Maria keeps an eye on both her hometown and Paris, switching between the two locations with ease. Later that evening, while sipping coffee at her hotel, she notices that severe weather is expected in Paris tomorrow. She enters the app, sees a storm warning, and decides to adjust her plans. Thanks to Breeze, she’s one step ahead of the unpredictable weather.
Daniel straps on his cycling helmet, ready to hit the road for a long ride through the countryside. The sky is clear, but he knows the weather can change quickly. He pulls up Breeze and checks the forecast for his route. Everything looks good, though there’s a slight risk of thunderstorms in the evening. A few hours into his ride, while on a break, he checks his phone —a storm warning for his exact location. Heart racing, he quickly opens the radar map and sees dark clouds approaching fast. Without hesitation, he reroutes to the nearest shelter just as heavy rain starts to fall. As he watches the storm from a café window, he feels relieved. Without Breeze’s real-time updates, he would’ve been caught miles from safety.
Sprint | Goal | Tasks |
---|---|---|
🟢 Sprint 1 (User Authentication & Basic Setup) |
Implement user authentication so users can register and log in. | - Set up a user database . - Implement user registration and login (email & password authentication). - Create basic UI for sign-up/login pages. - Display a confirmation pop-up after successful registration. |
🟠 Sprint 2 (Real-Time Weather Updates) |
Enable live weather data retrieval and automatic updates. | - Integrate with a weather API (ANM API). - Display real-time weather data (temperature, humidity, wind speed, precipitation). - Implement automatic data refresh (e.g., every 30 minutes). - Design the weather dashboard UI. |
🟡 Sprint 3 (Hyper-Local Forecasts) |
Provide accurate weather forecasts based on user location. | - Fetch hourly and daily forecasts. - Display a 7-day forecast section in the UI. - Improve API efficiency by caching requests for faster loading. |
🔵 Sprint 4 (Multi-Location Support & UI Enhancements) |
Allow users to save and switch between multiple locations. | - Add functionality to save user’s preferred locations. - Implement a dropdown or quick-access UI for switching locations. - Enable real-time weather updates for multiple saved locations. - Polish the UI and responsiveness for a better user experience. |
Overall, the app ended up similar to what we envisioned at the halfway point in this project, but unfortunately the result is less complex than what we wanted when we started. Breeze successfully delivers accurate and real-time weather updates with a robust and scalable architecture. Built with Angular for the frontend and .NET for the backend, the application ensures smooth performance and a modern user experience. Through rigorous testing, security measures, and a well-defined CI/CD pipeline, the application meets both functional and non-functional requirements.
- The system is designed with the user in mind, providing an intuitive and user-friendly interface that makes it easy for users to navigate and interact with the application.
-
The API response time is consistently under 2 seconds to ensure an optimal user experience for all interactions.
-
The system is capable of supporting up to 1000 concurrent users without experiencing any significant latency, ensuring smooth performance even under heavy load.
-
The system’s codebase is modular and follow clean coding practices, ensuring that it is easy to maintain, debug, and extend over time.
-
Comprehensive documentation is provided for both the frontend and backend systems, enabling new developers to quickly understand the system’s architecture and contribute to its development.
-
The system includes logging and monitoring capabilities to facilitate the identification of issues and ensure quick troubleshooting of problems in production.
Obiectivul Testării: Verificarea corectitudinii și actualizării datelor meteo furnizate de API.
Momentul Testării: Testare și Mentenanță.
Metoda Testării: Compararea datelor API cu surse de referință (Black Box Testing), verificarea erorilor de preluare a datelor.
Rezultate: Datele meteo sunt corecte, dar pot exista discrepanțe minore între surse.
Obiectivul Testării: Validarea corectitudinii și securizării preferințelor utilizatorilor (ex. locația salvată, unități de măsură).
Momentul Testării: Dezvoltare, Testare și Analiză.
Metoda Testării: Verificarea fluxului de date între frontend și backend (Integration Testing), verificarea manuală a setărilor utilizatorilor.
Rezultate: Datele utilizatorilor sunt stocate și recuperate corect.
Obiectivul Testării: Evaluarea timpului de răspuns pentru afișarea datelor meteo și a timpului de încărcare al aplicației.
Momentul Testării: Testare și Mentenanță.
Metoda Testării: Măsurarea timpilor de răspuns ai API-ului și performanța UI în diferite condiții de rețea.
Rezultate: Aplicația funcționează bine.
Obiectivul Testării: Testarea tuturor fluxurilor de utilizare, inclusiv căutarea unui oraș și afișarea prognozei.
Momentul Testării: Testare și Implementare.
Metoda Testării: Unit Tests pentru verificarea funcțiilor critice, testarea manuală a UI/UX.
Rezultate: Funcționalitatea aplicației este stabilă și fără erori majore.
Obiectivul Testării: Verificarea experienței utilizatorului pentru o navigare intuitivă și ușor de utilizat.
Momentul Testării: Design, Testare și Implementare.
Metoda Testării: Evaluarea interacțiunii utilizatorilor, feedback de la testeri reali.
Rezultate: Aplicația este ușor de folosit, dar unele elemente UI pot necesita optimizare.
-
One of the key security risks identified is API key exposure, which could allow unauthorized access to the weather API and lead to data breaches or misuse.
-
Another risk is that of a SQL injection, a critical security risk where attackers can manipulate database queries by injecting malicious SQL code, potentially leading to unauthorized data access or manipulation.
-
Another risk is potential data leakage, where sensitive user preferences could be exposed due to improper handling or storage of user data.
-
To mitigate the risk of API key exposure, all API keys are securely stored in environment variables, ensuring they are never exposed in frontend code or accessible to unauthorized parties.
-
All sensitive data, including user information, are encrypted, ensuring that data cannot be easily intercepted or accessed by unauthorized individuals.
-
We used Entity Framework, an Object-Relational Mapping (ORM) framework for .NET that simplifies database interactions by allowing developers to work with data as objects, rather than writing raw SQL queries. It enhances security by preventing SQL injection through parameterized queries, automatically sanitizing user inputs. The framework also ensures data validation before it is persisted, preventing invalid or malicious data from being stored
We utilized GitHub for version control, enabling seamless collaboration and code management. All source code is stored in a centralized GitHub repository, allowing us to push changes, create branches, and submit pull requests for review. Once a pull request is approved, the code is merged into the main branch, which triggers deployment to the appropriate environment.
Also, we used GitHub Actions to set up a CI/CD pipeline that automates the build and testing process for our project. The pipeline is triggered on every push and pull request to the main branch, ensuring that new code is always validated before being merged.
- Here you have a demo of the project.