A secure RESTful Journal Management API built using Spring Boot and MongoDB Atlas. The application implements JWT Authentication, Spring Security, and Role-Based Access Control (RBAC) to provide secure access to journal management features. It also integrates Redis Caching, Weather API, Email Notifications, and Scheduled Tasks, showcasing modern backend development practices.
- User Registration
- Secure Login using JWT Authentication
- Create Journal Entries
- View Personal Journal Entries
- Update Existing Journal Entries
- Delete Journal Entries
- Users can access only their own journal entries
- View All Users
- Delete Users
- View All Journal Entries
- Role-Based Access Control (
ROLE_USER,ROLE_ADMIN)
- JWT Authentication
- Spring Security
- Authentication & Authorization
- Role-Based Access Control (RBAC)
- Custom JWT Filter
- Protected REST APIs
- Secure Password Encryption
- MongoDB Atlas Cloud Database
- Spring Data MongoDB Integration
- Redis Caching
- Weather API Integration
- Email Notifications
- Scheduled Tasks
- Unit Testing with JUnit
| Technology | Purpose |
|---|---|
| Java 17 | Programming Language |
| Spring Boot 2.7.18 | Backend Framework |
| Spring Security | Security Framework |
| JWT | Authentication |
| MongoDB Atlas | Cloud Database |
| Spring Data MongoDB | Database Access |
| Redis | Caching |
| Maven | Build Automation |
| Lombok | Boilerplate Code Reduction |
| JUnit 5 | Unit Testing |
Client
β
βΌ
JWT Authentication
β
βΌ
Spring Security Filter
β
βΌ
REST Controllers
β
βΌ
Services
β
βΌ
Repositories
β
βΌ
MongoDB Atlas
journal-application
β
βββ src
β βββ main
β β βββ java
β β β βββ controller
β β β βββ service
β β β βββ repository
β β β βββ entity
β β β βββ config
β β β βββ filter
β β β βββ scheduler
β β β βββ cache
β β β βββ constants
β β β βββ enums
β β β βββ apiResponse
β β β βββ utils
β β β
β β βββ resources
β β
β βββ test
β
βββ pom.xml
βββ README.md
βββ .gitignore
| Method | Functionality | Access |
|---|---|---|
| POST | Register User | Public |
| POST | Login User | Public |
| GET | View Personal Journals | User |
| POST | Create Journal | User |
| PUT | Update Journal | User |
| DELETE | Delete Journal | User |
| GET | View All Users | Admin |
| DELETE | Delete User | Admin |
| GET | View All Journals | Admin |
| GET | Weather Information | Authenticated |
Note: Endpoint URLs may differ depending on your controller mappings.
git clone https://github.com/MOKSHITH096/journal-application.gitcd journal-applicationConfigure the following environment variables before running the project:
MONGODB_URI
REDIS_URL
MAIL_USERNAME
MAIL_PASSWORD
WEATHER_API_KEY
JWT_SECRET
mvn clean installmvn spring-boot:runThe application will start at:
http://localhost:8081
Run all unit tests using:
mvn test| User Registration | User Login |
|---|---|
![]() |
![]() |
| Create Journal | View Journals |
|---|---|
![]() |
![]() |
| Update Journal | Delete Journal |
|---|---|
![]() |
![]() |
| Weather API |
|---|
![]() |
- Swagger / OpenAPI Documentation
- Docker Containerization
- Global Exception Handling
- Request Validation
- Pagination & Sorting
- CI/CD Pipeline
- Refresh Token Support
- API Rate Limiting
Mokshith
Backend Developer | Java | Spring Boot | Spring Security | MongoDB | REST APIs
β If you found this project useful, consider giving it a star on GitHub!






