This is a web application allowing users to request a weather forecast either for their current location (locates city by their IP address) or by indicating any city. The motivation in this project is to learn builing multimodular application that can interact with each other using Retrofit.
- Learning new technologies, their benefits and implementations
- Dividing responsibilities to each module and their implementations
- Making an application asynchronous and event driven
- Making database to automatically self - update/insert data to keep weather data fresh
- Doing appropriate tests (integration test) on application components
- Reading official documentations, analysing other developers' solutions and implemenations
- Getting familiar with some design patterns for 'Clean Code' and understanding logic behind them
- Analysing other developers' solution and implementing
CompletableFuture
API - Using
SchedulingConfigurer
interface to dynamically schedule database operations in which it invokes internalHTTP
clients to get weather data from external source after which database updates or/and insertes those data. - Could do integration tests by understanding the concept of this test
- Web Module
- DataLogic Module
This module is responsible for UI and it is for user interactions only. Through this module, users can view weather forecasts and make a request for a particular city's weather forecast. Although the UI is not implemented yet, it is possible to make request through Postman.
Link to module : See Web Module
This module is responsible for all the operations with data :
- Data requesting from external source
- JSON processing (deleting, inserting, time zone converting, etc.)
- Database persistency (updating, inserting, deleting)
Through this module, users get weather forecasts. This module uses Web
module to accept user requests and returns data in JSON format back to Web module where users can see weather forecasts.