Inspiration
The constantly changing weather in Athens inspired us to build a weather forecast showcasing key backend skills—integrating external APIs for real-time weather data and implementing secure user authentication with JWT.
What it does
Weather-forecast is a web app where users can register and log in to receive a JWT token. After authentication, users can securely fetch weather by city through a Spring Boot REST API. The frontend calls the API using fetch(), attaches the token to protected requests, and displays the results in a simple browser UI. The entire system runs reliably using Docker Compose.
How we built it
We built a Spring Boot REST API and documented/tested endpoints with Swagger UI. We implemented JWT authentication so login returns a token and protected routes require Authorization: Bearer . We created a lightweight HTML/CSS/JavaScript frontend served directly by Spring Boot, and connected it to the API via HTTP requests. Finally, we containerized the API and database and ran everything with Docker Compose for a consistent, one-command local setup.
Challenges we ran into
The biggest challenge was making the full stack work end-to-end reliably and compose using Docker Desktop. When Docker was paused or the database container wasn’t ready, the backend failed to start due to connection issues.
Accomplishments that we're proud of
We’re proud of delivering a complete working flow: register/login → JWT token → secure API calls → weather results shown on a usable web page. We also built clear API documentation with Swagger and made the project easy to run with Docker Compose.
What we learned
We learned how to integrate external APIs into a backend service, implement JWT authentication across frontend and backend, debug database/service dependency problems, and use Docker Compose to make development environments consistent and repeatable.
What's next for weather-forcast
Next, we want to enhance the experience by adding multi-day/hourly forecasts with charts and icons, improving performance and loading states, and making the app more production-ready with environment-based configuration and a smoother deployment pipeline.
Log in or sign up for Devpost to join the conversation.