"App to live through the memories again" - A modern, secure journal application built with cutting-edge technology
Reflection is a sophisticated personal journaling application that leverages the power of MongoDB's document-based architecture to provide a seamless and scalable experience for managing personal memories and thoughts. Built with modern Spring Boot technology, this application demonstrates enterprise-grade development practices while maintaining simplicity and elegance.
This project showcases the incredible capabilities of MongoDB as a NoSQL database solution:
- ๐ฅ Document-Oriented Storage: Perfect for journal entries with flexible schema requirements
- โก High Performance: Lightning-fast read/write operations for seamless user experience
- ๐ ACID Transactions: Full transactional support ensuring data consistency across operations
- ๐ Horizontal Scalability: Built to handle growing amounts of personal data effortlessly
- ๐จ Rich Data Models: Native support for complex data structures and relationships
- ๐ Powerful Querying: Advanced querying capabilities for searching through memories
- Secure user registration and login system
- Role-based access control (USER/ADMIN roles)
- Spring Security integration with custom authentication
- Protected endpoints with JWT-like security context
- Create, read, update, and delete personal journal entries
- Automatic timestamp management for entries
- User-specific journal isolation and security
- Rich content support for detailed memories
- Complete user profile management
- Secure password handling
- User data integrity with MongoDB transactions
- Admin panel for user oversight
- Spring Security configuration
- Protected API endpoints
- User context awareness
- Secure data validation
@Document(collection = "journals")
@Data
public class Journal {
@Id
private ObjectId id;
private String title;
private String content;
private LocalDate date;
}- Document Collections: Optimized collections for
usersandjournals - Database References: Smart
@DBRefrelationships between users and their journals - Transaction Management: Full ACID compliance with
@Transactionaloperations - Indexing Strategy: Unique indexing on usernames for optimal performance
- Spring Boot 3.5.0: Latest enterprise framework
- Spring Data MongoDB: Seamless database integration
- Spring Security: Comprehensive security framework
- Lombok: Clean, boilerplate-free code
- Maven: Robust dependency management
| Technology | Version | Purpose |
|---|---|---|
| Java | 21 | Core programming language |
| Spring Boot | 3.5.0 | Application framework |
| MongoDB | Latest | NoSQL database |
| Spring Security | Latest | Security framework |
| Spring Data MongoDB | Latest | Database abstraction |
| Lombok | Latest | Code generation |
| Maven | Latest | Build automation |
src/main/java/com/geto/suguru/reflection/
โโโ ๐ฑ controller/ # REST API endpoints
โ โโโ JournalsController # Journal CRUD operations
โ โโโ UsersController # User management
โ โโโ AdminController # Admin functionality
โ โโโ PublicController # Public endpoints
โโโ ๐๏ธ model/ # MongoDB document models
โ โโโ User # User entity with roles
โ โโโ Journal # Journal document
โ โโโ UserProfile # Security user details
โ โโโ ERole # Role enumeration
โโโ ๐ง service/ # Business logic layer
โ โโโ JournalService # Journal operations
โ โโโ UserService # User operations
โโโ ๐ฆ repo/ # MongoDB repositories
โโโ ๐ก๏ธ config/ # Security configuration
โโโ ๐ payload/ # DTOs and request/response objects
โโโ โ ๏ธ exception/ # Custom exception handling
- Java 21 or higher
- MongoDB instance (local or cloud)
- Maven 3.6+
-
Clone the repository
git clone <repository-url> cd Reflection
-
Configure MongoDB
# application.properties spring.data.mongodb.uri=mongodb://localhost:27017/reflection
-
Build the application
./mvnw clean install
-
Run the application
./mvnw spring-boot:run
GET /api/public/health- Health checkPOST /api/public/create- User registration
GET /api/journals/all- Get all user journalsPOST /api/journals/create- Create new journalPUT /api/journals/update/{id}- Update journalDELETE /api/journals/delete/{id}- Delete journal
GET /api/admin/all-users- Get all users (Admin only)
This project represents a work in progress with a solid foundation already in place. The core functionality is implemented and demonstrates:
- โ Complete MongoDB integration with transactions
- โ Robust authentication system
- โ Full CRUD operations for journals
- โ Role-based access control
- โ Enterprise-grade architecture
- Frontend user interface
- Advanced search and filtering
- File attachments for journal entries
- Social features and sharing
- Mobile application
- Advanced analytics and insights
This project showcases modern development practices and MongoDB's powerful capabilities. While currently in development, the foundation demonstrates enterprise-ready code quality and architecture.
This project is part of a portfolio demonstrating advanced Spring Boot and MongoDB integration skills.
Built with โค๏ธ using MongoDB's incredible NoSQL capabilities and Spring Boot's enterprise framework
"Every memory deserves to be preserved with the best technology available"