Skip to content

Codebase Overview

BobaBoard’s codebase is split within 4 separate repositories, each with its own purpose and set of technologies:

An overview of how BobaBoard's components fit together

[code, demo]

boba-editor is BobaBoard’s own extension of the QuillJS text editor, and is responsible for anything related to text formatting and embeds (both in “edit” and “display” mode).

Content created through boba-editor is stored in the “Quill Delta” format, an abstract representation that can be translated into other formats, including HTML, through various parsers.

Since other BobaBoard codebases should not interact with this format directly, boba-editor also exports utilities to manipulate the Delta format itself (e.g. extracting images for upload, removing trailing spaces, etc).

[code, demo]

boba-components is where BobaBoard’s UI pieces (components) are developed, as separate from the “frontend/server logic” as possible to facilitate reuse and (one day) ease of testing. This is made possible by using StoryBook, which you can see in action at this demo link.

code

The BobaBoard frontend repository is in charge of managing the full BobaBoard user experience, putting together the components defined in boba-components (see above) into logical pages, and handling the communication between the user and the server. Based on NextJS.

code

The BobaBoard backend repository is an ExpressJS server, communicating with the boba-frontend through a REST API.

Other than the server itself, this repository contains table definitions for BobaBoard’s PostgreSQL DB.

Other technologies used include a Redis Cache and Jest for testing.