Journal App is a web application that allows users to manage their journal entries. It includes features such as user authentication, role-based access control (RBAC), scheduled tasks, weather information retrieval, email notifications, integration with Redis for caching, and code quality analysis using SonarQube.
- Java
- Spring Boot
- Spring Security (RBAC)
- Spring Scheduler
- Spring Mail
- SonarQube
- Maven
- Redis
- MongoDB
- Java 11 or higher
- Maven
- MongoDB
- Redis
- SonarQube
- Clone the repository:
git clone https://github.com/codebyAbhishekBharti/journal-app.git cd journal-app - Build the project using Maven:
mvn clean install
- Run the application:
mvn spring-boot:run
- The application will be accessible at http://localhost:8080/journal.
GET /user- Retrieve all users.PUT /user- Update the authenticated user's information.DELETE /user- Delete the authenticated user's account.GET /user/greetings- Get a greeting message along with the current weather in Phagwara.
GET /journal- Retrieve all journal entries of the authenticated user.POST /journal- Create a new journal entry.GET /journal/id/{journalId}- Retrieve a specific journal entry.DELETE /journal/id/{journalId}- Delete a specific journal entry.PUT /journal/id/{journalId}- Update a specific journal entry.
GET /admin/all-users- Retrieve all users (Admin only).POST /admin/create-admin-user- Create an admin user.GET /admin/clear-app-cache- Clear the application cache.
- Admin: Full access to manage users and journal entries.
- User: Can create, update, and delete their own journal entries.
- Guest: Limited access to public journal entries (if any).
Retrieves weather information for a specified city and caches the result in Redis.
Handles interactions with Redis for caching purposes.
Sends email notifications to users.
The application includes scheduled tasks that run at predefined intervals to perform maintenance tasks such as clearing expired cache entries and updating journal statistics.
The application integrates with SonarQube to analyze code quality and ensure best practices in coding standards, security, and maintainability.
- Fork the repository.
- Create a new feature branch.
- Commit your changes.
- Push to your fork and submit a pull request.
This project is licensed under the MIT License.
For queries, reach out to Abhishek Kumar Bharti.