Estimate the scale of the system. Consider daily active users, read/write ratio, storage requirements, bandwidth, and any relevant QPS calculations...
The application would be a simple CRUD, with a frontend, a backend, and a database.
Given the simplicity of the application the frontend could be a static website delivered by Nginx, but it should be considered a React app if login, signup and payment will be implemented in the future.
The backend could be Express.js as it is a simple framework and fast to develop and it uses the same language as the frontend.
The database would be PostgreSQL and Redis for caching.
We should consider several options for deploying. As it is right now, this could be deployed in a Cloud VM with Docker Compose, but if we need availability and escalability, Kubernetes is a must. But k8s clusters are very expensive, so I wouldn't recommend it until we have paid subscriptions implemented. I also recommend databases to be cloud hosted.
Define the data model. Identify the main entities, their attributes, and relationships. Consider the choice of database type (SQL vs NoSQL) and justify your decision based on access patterns...
Deep dive into 2-3 key components. Explain how they work, how they scale, discuss tradeoffs, capacity, and any relevant algorithms or data structures.