Skip to content

This repository is dedicated to tracking and organizing my journey of designing database for my Memory App. It includes key concepts, structured notes, and practical work such as: ERDs, Use Case Diagrams, Database Schemas (Relational Models), Normalization Steps, Sample Use Cases and Examples

License

Notifications You must be signed in to change notification settings

SanaShahSyeda/System-Database-Design--Memory-App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🧠 Memory App — System & Database Design

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.

🎨 UI Design


📚 Table of Contents


🛠 Requirement Analysis

✅ Core Features

  • 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)

🧰 Non-Functional Requirements

  • Secure media and user data handling
  • Modular, scalable, and maintainable backend
  • Media file upload support (Cloudinary / AWS S3)

📐 System Design

🔹 Overview

A layered architecture for separation of concerns:

  • Frontend (Mobile & Web)
  • Backend API (Spring Boot)
  • Database (Relational)
  • Media Storage (Cloudinary)
  • Scheduler/Notification Service (optional)

🧩 Components

  • Authentication Service (JWT-based)
  • Memory & Media Service
  • Board & Drag-n-Drop Service
  • Notification Scheduler (optional)
  • Calendar Module (optional)

📂 Design Process

  • High-Level Design (HLD): System architecture, modules, technology decisions
  • Low-Level Design (LLD): Class diagrams, service flow, database interaction patterns

🗃️ Database Design

  • 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.

📈 Diagrams

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

Architecture Diagram

Architecture Diagram

Flowchart Diagram

Symbols Reference

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

Diagram

Flowchart

Use Case Diagram

Symbols Reference

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)

🖼 Use Case Diagram

Entity Relationship Diagram (ERD)

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.

Class Diagram

Api Flow Diagrams

Click to view each API flow diagram:

📃 License

This project is licensed under the MIT License.


✍️ Author

Built and maintained by Sana Gul — as part of a learning journey in full-stack system design and development.

About

This repository is dedicated to tracking and organizing my journey of designing database for my Memory App. It includes key concepts, structured notes, and practical work such as: ERDs, Use Case Diagrams, Database Schemas (Relational Models), Normalization Steps, Sample Use Cases and Examples

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published