Design a simple greeting-card web app
AtlassianSoftware Engineer · Technical ScreenLast updated
This question assesses the ability to design a scalable, functional MVP for a greeting-card service, focusing on user-generated content storage and retrieval.
Problem Statement
Design a web-based greeting-card application that allows users to create, personalize, and share digital cards. The core workflow involves a user choosing a template, adding a custom message, and generating a unique URL to send to a recipient.
Functional Requirements
- Users can select from a pre-defined set of card templates.
- Users can input a custom text message to be displayed on the card.
- The system should generate a unique, shareable link for each card.
- Recipients can view the card by navigating to the unique link.
Non-Functional Requirements
- The system should be able to handle roughly 10,000 creations and 50,000 views per day.
- Low latency for card viewing is a priority.
- The design should account for data persistence and basic security (e.g., preventing unauthorized edits).
Deliverables
- Provide a high-level architecture diagram or description.
- Define the API endpoints required for the MVP.
- Outline the database schema for cards and templates.
- Explain the trade-offs in your storage choice (e.g., SQL vs. NoSQL) for card content.
Hints
Hint 1
Consider whether the card content should be stored as structured database rows or as document-based blobs.
Hint 2
Think about how to secure the URL so that only the sender can edit the card, but anyone with the link can view it.
Hint 3
Address how you would handle the scale of 50,000 views per day using caching or CDN strategies.
Follow-up questions
- How would you implement an expiration policy where cards are deleted or archived after 30 days?
- If we wanted to allow users to upload custom images for the card background, what cloud services would you integrate?
- How would you track analytics, such as the number of times a specific card has been opened, without compromising performance?
Solution walkthrough is for members
Get the full walkthrough with reference code and complexity analysis, plus Kitty Coach at 300 messages a day. Hints, the code runner and community answers stay free.