Problem statement
Design the object model and core APIs for a browser-style bookmark manager that keeps saved links organised in a folder tree, tagged, de-duplicated, and searchable.
Operating context. A single user saves web links. Bookmarks live in folders that nest arbitrarily — a folder holds bookmarks and sub-folders. Each bookmark stores a URL, a title, optional tags, and metadata (favicon, description) fetched lazily from a metadata provider. Saving a URL that already exists should not create a second copy — it updates the existing one. The user reorders and moves bookmarks and folders, searches by title / tag / URL, and can export a subtree to a portable format. Everything runs in-process on one device.
Out of scope. The actual HTTP fetching of page metadata (assume a provider interface you call), cross-browser / cloud sync, the UI, authentication, and read-it-later article archiving — model the object graph and its operations.
What to produce. The class hierarchy (Bookmark, Folder, Tag, the search index, a metadata provider, an export walker), the public API each exposes, and how the tree is traversed and mutated. Be explicit about: how folders and bookmarks share one tree abstraction so move / delete / export are written once, how duplicate URLs are collapsed on insert, and how metadata fetching and export formats are each pluggable without editing Bookmark or Folder.
Requirements
This assessment is a Premium feature.
The statement above is free to read. The functional and non-functional requirements, and the graded canvas that scores your design against them, come with Premium.
Topics
- System Design LLD
- Oop Solid
- Patterns Composite
- Data Indexing
- Patterns Visitor