0% found this document useful (0 votes)
3 views2 pages

Color Picker App System Design Guide

The document outlines the design of a Favorite Color Picker App that allows users to select, save, delete, and share their favorite colors while managing access permissions. It includes functional requirements for user actions and access control, as well as non-functional requirements focusing on scalability, availability, low latency, and security. Additionally, it details API design for user authentication and color list management, along with a database schema and use case queries for data retrieval.

Uploaded by

Krish
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views2 pages

Color Picker App System Design Guide

The document outlines the design of a Favorite Color Picker App that allows users to select, save, delete, and share their favorite colors while managing access permissions. It includes functional requirements for user actions and access control, as well as non-functional requirements focusing on scalability, availability, low latency, and security. Additionally, it details API design for user authentication and color list management, along with a database schema and use case queries for data retrieval.

Uploaded by

Krish
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

Here’s a similar system design question using emojis:

🎨 System Design Question: Favorite Color Picker App 🌈

🧠 Problem Statement:
You need to design a web app where users can pick their favorite colors 🎨, save
them in lists 📋,
and manage those lists with additional functionalities. The system will allow users
to save, delete,
and share their color lists ✉️ with others. Users will also be able to control who
can access 👀and view
their favorite color lists. The focus should be on building the functionality and
considering the scale of the system.

💡 Requirements:

🔍 Functional Requirements:
1. User Actions:
- Save a color: Users can select their favorite colors 🎨from a color palette and
save them to a personalized list 📋.
- Delete a color: Users can remove colors from their saved list .
- Share list: Users can send their color list to others via email ✉️ for
collaboration or viewing.
2. Access Control:
- Users can define access permissions ✏️
, deciding who can view or edit ✏️ their
color lists.
3. Viewing Permissions:
- Users can set lists as public (anyone can see ) or private (only invited users
can view 🔐).

⚙️ Non-Functional Requirements:
1. Scalability:
- The system should handle a large number of users simultaneously picking colors
and managing lists 🌍.
2. Availability:
- Ensure 99.9% uptime , so users can access their color lists from anywhere 🌐.
3. Low Latency:
- Color saving and sharing operations should be quick ⚡, with near-instant
updates to the list.

4. Security:
- Ensure color lists are protected , and only authorized users can access or
modify lists.

🌐 API Design:

Design the RESTful APIs for managing user color lists. Your APIs should support the
following:

- User Authentication: APIs for login 🔑, registration 📝, and access control


management.
- Color List Management: APIs to save , delete ✉️
, and share color lists.
- Permissions: APIs to set and manage access controls 🔐 on user lists.

Database Design:

Create a schema to handle the following entities:

1. Users: Store user information (name, email), access rights, and color lists.
2. Color Lists: Store the list of colors 🌈 saved by each user.
3. Shared Access: Track which users can view or modify specific color lists 👀.
4. Audit Logs: Log actions 📝 such as color additions, deletions, and sharing for
auditing purposes.

🔍 Use Case Queries:

Write SQL queries to solve the following:

1. Retrieve all colors saved by a specific user 👥.


2. Fetch all users who have access to a specific color list 📝.
3. Generate a report 📊 of the most commonly saved colors across all users.

You might also like