Repository Structure
This repository uses a pnpm workspace to manage multiple packages and projects. Understanding the structure will help you navigate the codebase and know where to make changes.
Top-Level Directories
content/
All course materials and internal documentation live here.
content/courses/β Course content organized by course (e.g.,advanced-ui/,advanced-figma/)content/handbook/β Internal documentation and style guides (this handbook)content/workspace/β Workspace-specific content, proposals, and ideas
Most content is written in Chalk (.chalk files), which is our content authoring format. See the Chalk documentation for details.
apps/
Internal applications for operations, planning, and feedback. These are standalone tools used day-to-day.
apps/hub/β Internal ops hubapps/launch-desk/β CMO mission control for cohort launchesapps/leads/β Preview lead outreach toolapps/feedback/β Cohort feedback review and email toolapps/school-planner/β Course planning tool (Svelte)apps/project-board/β Kanban-style project management toolapps/dashboard/β Analytics dashboard (Observable-based)
packages/
Shared libraries and utilities that support our work. These are managed as pnpm workspace packages.
packages/chalk/β The Chalk build system and content processorpackages/workbench/β Interactive UI demo tool for educational contentpackages/blueprint/β Layered UI component library for Workbenchpackages/design-system/β Shared design tokens and stylespackages/db/β Database schema and migrations
Each package typically has its own package.json, dependencies, and development scripts. See Tools and Packages for more details.
websites/
Source files for our public-facing websites.
websites/buttonschool.com/β Main Button School websitewebsites/chalkboard.buttonschool.com/β Chalkboard preview toolwebsites/handbook.buttonschool.com/β This handbook (public version)websites/learn.buttonschool.com/β Learning platformwebsites/uimc.buttonschool.com/β UI Masterclass websitewebsites/relay/β Edge relay
Each website has its own build configuration and deployment setup.
previews/
Course preview sites for prospective students.
previews/advanced-figma/β Advanced Figma previewpreviews/advanced-ui/β Advanced UI previewpreviews/ai-coding/β AI Coding previewpreviews/clubs/β Clubs preview
tools/
Standalone tools for generating, exporting, and managing things.
tools/course-exporter/β Tool for exporting courses as zip filestools/invoice-generator/β MCP-based invoice generatortools/invoice-downloader/β Internal tool for downloading invoices
lab/
Experiments, prototypes, and internal utilities.
lab/syllabus-generator/β MCP-based syllabus PDF generatorlab/chalk-review/β Internal tool for reviewing chalk contentlab/skills-reader/β Static site generator for reading agent skillslab/create-wireframe/β Wireframe prototype scaffolding toollab/stuff/β Native macOS app (Swift) with MCP serverlab/codepen-archive/β Archive of CodePen demos and examples
Root-Level Files
Configuration Files
package.jsonβ Root package configuration and workspace scriptspnpm-workspace.yamlβ Defines the pnpm workspace structurepnpm-lock.yamlβ Lock file for dependenciesBrewfileβ Homebrew packages installed bysetup.shsetup.shβ Initial setup script for new team members
Documentation
README.chalkβ Repository overview (rendered on GitHub).gitignoreβ Git ignore patterns
Other Files
Most other files in the root are configuration for build tools, linters, or deployment. If you’re just working on content, you typically don’t need to modify these.
pnpm Workspace Structure
This repository uses pnpm workspaces to manage multiple packages. The workspace is defined in pnpm-workspace.yaml and includes:
- All apps in
apps/ - All packages in
packages/ - All tools in
tools/ - All websites in
websites/ - All previews in
previews/ - All lab projects in
lab/
This means:
- Dependencies are installed from the root with
pnpm install - Packages can depend on each other using workspace protocol (
workspace:*) - Scripts can be run from the root or individual packages
- Dependencies are hoisted and shared where possible
When to Use Each Directory
Use content/ when:
- Creating or editing course materials
- Writing handbook documentation
- Adding new lessons or guides
Use apps/ when:
- Working on internal operations tools (hub, launch-desk, leads, feedback, etc.)
- Building or maintaining planning and management tools
Use packages/ when:
- Working on shared libraries (Chalk, design system, database, etc.)
- Fixing bugs in Chalk, Workbench, or other shared tools
- Adding features to existing shared packages
Use websites/ when:
- Making changes to public-facing websites
- Updating site content or styling
- Working on deployment configurations
Use tools/ when:
- Building standalone generators, exporters, or utilities
- Working on invoice, course export, or similar operational tools
Use lab/ when:
- Experimenting with new ideas
- Building prototypes and internal utilities
Finding Specific Things
For a quick reference on where to find specific content, tools, or documentation, see Finding Things.