BobaBoard Documentation

website·Indexed 32 days ago

https://docs.bobaboard.com/

Developer and user documentation for BobaBoard, including API operations for realms, boards, and user feeds, as well as installation guides for boba-backend, boba-frontend, and boba-editor. Includes volunteering guidelines, community structure, and self-hosting instructions.

Tokens
45.5K
Snippets
177
Records
362
Agent score
60%

What's inside BobaBoard

  1. Overview of Bobaboard's external packages and components

    Bobaboard utilizes the following technology stack for its frontend and backend infrastructure:

    • Authentication: Firebase Auth (service provided by Firebase).
    • Storage: Firebase Storage (used for image storage).
    • Database: PostgreSQL (hosted via Google CloudSQL for automated backups and setup).
    • UI Framework: React.
    • Data Management: React-Query for asynchronous server data querying.
    • Web Framework: NextJS (provides Server-Side Rendering). Note: Referencing the window object before components are mounted causes issues in NextJS.
    • Styling: Styled JSX (CSS-in-JS system allowing standard CSS syntax).
    • Text Editing: QuillJS. Text data is stored in the database using the QuillJS delta format.
    • UI Development: Storybook for isolated component development and documentation.
    • Deployment & CI/CD: Netlify (continuous deployment for Storybook), CircleCI (CI pipeline for the server), and Docker (containerization for server tests and CircleCI deployment).
  2. Introduction to boba-editor

    boba-editor is the text editor used by BobaBoard. It is built upon QuillJS and utilizes the QuillJS Delta format for its input and output. Developers should interact with and handle this data format exclusively through the methods exported by boba-editor.
  3. Overview of Boba backend development entities

    Developing features on the Boba backend typically involves modifying one or more of the following core entities: API endpoints (client-facing actions), Permissions (role-based access flags), Database (tables and queries for permanent storage), and Tests (automated validation checks).
  4. Overview of BobaBoard

    BobaBoard is an open-source platform designed for fandom communities. It is built to be an adaptable, stable, and collaborative space for small online communities, drawing inspiration from platforms like Tumblr, Discord, and LiveJournal.
  5. Understand the boba-docs project structure

    The boba-docs site is built using Docusaurus. The project is organized into four primary directories:

    • docs: Contains the actual documentation pages (Markdown files).
    • src: Contains site build configurations and styling.
    • static: Contains static assets such as images.
    • blog: Reserved for blog posts (currently unused).
  6. Understand BobaBoard's caching architecture

    BobaBoard employs a two-tier caching strategy to reduce system load and improve perceived performance by storing data from slow network or database queries.

    • Frontend Cache: Manages and stores data retrieved from the backend. This is implemented using React Query.
    • Backend Cache: Manages data that changes infrequently (such as board details). This is implemented using Redis.
  7. Understand how BobaBoard anonymous identities work

    BobaBoard uses a system called the BobaDex to assign random identities (consisting of a pseudonym and an avatar) to users. Identities are assigned when a user creates a thread or makes their first contribution/comment in a thread.

    Key behaviors include:

    • Thread-level consistency: You maintain the same identity for all replies within a single thread, but your identity may change when participating in different threads.
    • Public Anonymity: Other users cannot click through a pseudonym or avatar to find your account profile or link your posts across different threads.
    • Self-Identification: To help users track their own posts, BobaBoard displays both the assigned anonymous identity and the user's actual account avatar to the account owner.
  8. Understand the boba-components source folder structure

    The boba-components codebase is written in TypeScript and React. The project is organized into two primary directories:

    • src/: Contains all source code.
    • stories/: Contains Storybook testing stories used in the demo sidebar.

    Within the src/ folder, the following conventions are used:

    • common/: Reusable UI elements such as Buttons, Tags, and Tooltips.
    • post/: Components related to posts, including threads and comments.
  9. Adhere to Bobaboard's development and engineering philosophy

    BobaBoard follows a set of core principles to guide engineering and community growth:

    • Cost Minimization: Minimize reliance on paid software in the critical path to reduce funding risks and enable users to run separate instances. Paid solutions are only acceptable if there is a clear migration path and an opt-out mechanism for self-hosted instances.
    • Collaboration: Focus on approachable entry paths for new contributors, beginner-friendly guides, and a sustainable pace to prevent burnout. The project aims to be a learning environment for coders of all skill levels.
    • Long-term Sustainability: Prioritize maintainability and open standards. Avoid dependencies on proprietary app stores or platforms that can restrict access; only open-source projects should be in the critical path.
    • Inclusive Accessibility: Design for a diverse user base (including neurodiverse, disabled, and various socio-economic backgrounds). While some technical constraints may exist during the kickstart phase, any decision to 'cut corners' must be a conscious choice with a plan to address it in the future.
  10. Understand BobaBoard's flexible role assignment

    BobaBoard utilizes the Teal Organization framework, meaning roles are not strictly assigned or fixed. Volunteers have the freedom to choose their own tasks and move between different teams based on interest and availability. While volunteers can explore tasks managed by other teams, they are expected to seek advice on existing processes, consult with involved members, and incorporate feedback.