This repository is dedicated to tracking and organizing the system architecture and database design journey of the Memory App, a productivity tool that helps users save, categorize, and revisit personal or creative memories.
🎯 Objective: Design the entire backend architecture from scratch using Spring Boot with a strong emphasis on planning — including requirement gathering, data modeling, and API design.
- 📱 View the Figma Prototype
- ✨ Designed using Stitch by Google
- User registration and login (Authentication & Authorization)
- Create, view, edit, draft, delete memories (with text, images, or video)
- Group memories into boards
- Drag & drop UI to rearrange memories across boards
- Calendar view for timeline-based visualization (optional)
- Daily memory reminder notifications (“On this day…”) (optional)
- Secure media and user data handling
- Modular, scalable, and maintainable backend
- Media file upload support (Cloudinary / AWS S3)
A layered architecture for separation of concerns:
- Frontend (Mobile & Web)
- Backend API (Spring Boot)
- Database (Relational)
- Media Storage (Cloudinary)
- Scheduler/Notification Service (optional)
- Authentication Service (JWT-based)
- Memory & Media Service
- Board & Drag-n-Drop Service
- Notification Scheduler (optional)
- Calendar Module (optional)
- High-Level Design (HLD): System architecture, modules, technology decisions
- Low-Level Design (LLD): Class diagrams, service flow, database interaction patterns
- Modeled to ensure data integrity, relationship consistency, and efficient querying.
- Covers all core entities (Users, Memories, Boards, Media, Notifications, Tags)
- Focus on normalization and performance.
Diagram Type | Description | Status |
---|---|---|
System Architecture | High-level overview of system components | ✅ Added |
Flowchart Diagram | Flow of user actions within the system | ✅ Added |
Use Case Diagram | Functionalities from user's perspective | ✅ Added |
Entity Relationship (ER) | Database schema, tables and their relationships | ✅ Added |
Class Diagram | Class-level interaction and structure (LLD) | ✅ Added |
API Flow Diagram | Request/response and endpoint interactions | ✅ Added |
🛠 Tools Used: draw.io, Lucidchart
Symbol | Name | Function |
---|---|---|
🟠 Oval | Start/End | An oval represents a start or end point |
➡️ Arrow | Arrows | A line is a connector that shows relationships between shapes |
🔷 Parallelogram | Input/Output | A parallelogram represents input or output |
▭ Rectangle | Process | A rectangle represents a process |
🔶 Diamond | Decision | A diamond indicates a decision |
Symbol / Shape | Meaning |
---|---|
🧍 Actor | A user or system that interacts with the system |
🟦 System Boundary | The entire application or a subsystem container |
🔹 Use Case | A specific action or functionality in the system |
🔁 <<include>> |
Mandatory relationship: common behavior reused by multiple use cases |
🧩 <<extend>> |
Optional behavior that extends a base use case |
-> Association | Line connecting an actor to a use case (interaction) |
✅ Two approaches are used:
- The first diagram is a Conceptual ERD — focuses on entities and high-level relationships.
- The second is a Logical ERD — includes attributes, primary/foreign keys, and relationship details.
Click to view each API flow diagram:
- Auth Service Flow
- Board Service Flow
- Memory Service Flow
- Explore Service Flow
- Calender Service Flow
- Notification Service Flow
- Profile Service Flow
This project is licensed under the MIT License.
Built and maintained by Sana Gul — as part of a learning journey in full-stack system design and development.