Project Description
WeatherXWardrobe is a web application designed to provide users with real-time weather updates for multiple bookmarked locations and recommend outfits from their virtual wardrobes based on current weather conditions. Users can subscribe to multiple cities, add items to their wardrobes, and visualize weather data through charts and maps.
Achievements
We successfully implemented the core functionalities, including user login, managing favorite cities, subscribing to new cities, generating weather-based outfit recommendations, and CRUD operations for wardrobe items. Data visualization features like temperature line charts and a city map with tooltips were also included.
Changes and Decisions
Schema and Data Source Changes
- Data Source: We opted for a historical weather dataset instead of a real-time API to simplify testing and ensure data availability for more cities.
- ER Diagram Adjustments:
- Made weather uniquely identifiable by location and date.
- Modified user-list to a many-to-many relationship between user and weather.
- Enhanced the Location entity with more detailed information.
- Combined the
outfit_has_apparel
relationship into theoutfit
table to simplify queries.
Advanced Database Features
- Stored Procedures: Used for complex operations like generating outfits based on weather.
- Triggers: Automatically updated stats on popular cities and preemptively generated outfits when users subscribed to new cities.
- Transactions: Ensured data integrity during multi-step operations like user registration.
Technical Challenges and Solutions
Session Management
- Challenge: Passing the user's ID from the login page to subsequent pages.
- Solution: Used session storage to save and retrieve the user ID across different pages.
User-Specific Graphs
- Challenge: Displaying user-specific graphs for subscribed cities.
- Solution: Implemented middleware to save the user ID after login, allowing access across various pages.
Managing Subscribed Cities
- Challenge: Correctly updating the user's subscribed city list.
- Solution: Addressed server-client communication issues to ensure consistent passing of
userID
.
Database Connection
- Challenge: Connecting to a MySQL instance in GCP from local environments.
- Solution: Set up a GCP proxy and configured local environments for seamless connection.
Future Work
- Allow users to delete cities from their favorite lists.
- Utilize real-time weather data APIs for up-to-date information.
- Add image functionality for wardrobe items.
- Integrate more weather metrics for detailed recommendations.
- Implement ML algorithms for improving outfit recommendations based on historical data.
Teamwork and Collaboration
Collaboration Approach
- Used Discord for communication and progress tracking.
- Regular meetings and TA consultations helped resolve conflicts.
- Employed Agile methodology, with task assignments and periodic reviews.
- Managed the GitHub repository for code integration and version control.
Conclusion
The WeatherXWardrobe project successfully met its goals, providing a functional and user-friendly platform for weather-based outfit recommendations. Despite some challenges, effective teamwork and strategic decisions enabled us to deliver a robust application with potential for future enhancements.