Example of implementing an entire feature¶
To easier understand the codebase and its layout, let's look at a commit that implements adding tagging support to collections.
Points of interest in the commit:
dbtypes.gois the "column" in the database for keeping track of collection's assigned tags
types.jsonshows the REST API model addition for adding
Tags stringto both backend (Go) and frontend (TypeScript)
commands.jsonadds the command for adding/removing tags:
- backend/frontend REST endpoint struct
- autogenerates modal dialog for the commands
commandhandlers.gohas the implementation for adding/removing tags from DB
CollectionPage.tsxadds tag editor (add / view / remove tags) to UI (see fig. 1). "Add" and "remove" both invoke autogenerated modal dialog (see fig. 2).
collectiondropdown.tsxadds "add tag" modal dialog to collection dropdown (see fig. 3)