Welcome! This documentation explains how the Programmerbar website works and how you can help develop it.
- Getting started explains how to run the project on your computer.
- Architecture gives you a simple map of the codebase.
- Development guide explains how we add code and check our work.
Programmerbar is a monorepo. This means that one Git repository contains several tightly connected projects in one repository instead of multiple separate ones. This is mostly an ergonomic thing so that we can easily make changes to multiple parts of the codebase, without having to orchestrate multiple pushes / pull requests. The projects in this repository are:
programmerbar-webis the website, server code, and member portal.programmerbar-cmsis the Sanity studio used to manage content. Also called a CMS (content management system).programmerbar-email-templatescontains the email templates sent by the website.
Most contributors will spend their time in programmerbar-web.
Run these commands from the repository root unless a guide says otherwise.
| Command | What it does |
|---|---|
pnpm install |
Installs the packages needed by every project. |
pnpm dev |
Starts the website and Sanity studio. |
pnpm check |
Checks Svelte and TypeScript code. |
pnpm lint |
Finds common code style problems. |
pnpm format:check |
Checks that files are formatted correctly. |
pnpm build |
Builds all projects. |
pnpm db:migrate:local |
Updates your local database. |
- SvelteKit documentation for the framework used to build the website.
- Svelte documentation for the framework used to build the website and email templates.
- Drizzle ORM documentation for the database library used in the website.
- Tailwind CSS documentation for the CSS framework used in the website and email templates.
- Sanity documentation for the CMS used to manage content.
- Cloudflare Workers documentation for the serverless platform that runs the website.
- Cloudflare D1 documentation for the database used by the website.
- Cloudflare KV documentation for the key-value store used by the website.
- Cloudflare Email documentation for the email service used by the website.
- React Email documentation for the email template framework used by the website.
- TypeScript documentation for the programming language used in the website and email templates.
If your code changes how people set up, use, or develop the project, update the related page in this folder. Short examples are usually more helpful than long explanations.