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
The requirements come with Premium
PremiumThe statement above is free to read.