Skip to main content

Project Structure

An overview of LibreApps Desktop monorepo and its key directories.

Overview

LibreApps Desktop is organized as a monorepo to manage the frontend applications, rebranding scripts, and upstream dependencies in a single, cohesive structure.

Directory Hierarchy

LibreApps Desktop/
├── build/ # Active application builds
│ └── web/
│ ├── full-kit/ # Feature-rich dashboard
│ └── starter-kit/ # Minimal dashboard
├── doc/ # This documentation site
├── rebrand/ # Rebranding assets and settings
│ ├── assets/ # Logos, favicons, images
│ ├── themer/ # Pre-built theme definitions
│ └── settings.md # Central rebranding configuration
├── scripts/ # Automation and build scripts
│ ├── build.sh # Full project build
│ ├── build-rebrand.sh # Rebranding engine
│ └── dev.sh # Development launcher
├── upstream/ # Upstream submodules (DO NOT MODIFY)
│ ├── shadboard/ # Base UI template
│ └── smash/ # AI Chat widget
└── package.json # Root package configuration

Key Directories

build/web/full-kit/

This is where most development happens. It contains the Next.js application source code, including components, pages, and styles.

rebrand/

Contains all the configuration and assets needed for the rebranding engine. The settings.md file is the single source of truth for your brand identity.

scripts/

Contains the Bash scripts that power LibreApps Desktop workflow. These scripts handle everything from building the project to applying rebranding changes.

upstream/

Contains the original source code for Shadboard and Smash. These are managed as Git submodules to allow for easy updates from the original authors while keeping our customizations separate.

Best Practices

  • Do this: Familiarize yourself with the build/web/full-kit/src directory, as this is where you'll add your custom logic.
  • Do this: Use the rebrand/ directory for all brand-specific assets.
  • Don't do this: Modify files in upstream/ directly; your changes will be lost when you update the submodules.