"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"