Design a web-based photo album application.
The product has three main screens:
-
Album list page
: shows a list of albums. Each album displays a cover photo and album name.
-
Album detail page
: shows photos inside a selected album. Users can add photos and rename the album.
-
Photo info page
: shows details for a selected photo.
Functional requirements:
-
Users can view all albums.
-
Users can open an album and view its photos.
-
Users can rename an album.
-
Users can upload photos to an album.
-
Changes should sync across devices in near real time.
-
The system should support sorting photos or albums by city.
-
The system should support descending sort order.
Discuss:
-
Client and server architecture.
-
API design.
-
State management and data normalization.
-
Real-time cross-device synchronization.
-
Photo upload flow.
-
Trade-offs between different approaches.