Codebase
Learn about the codebase here.
We’d recommend looking at all of our issues and picking some you’d like to work on. The ones with good first issue and help wanted tags are good for getting started.
Feel free to ask questions on the Discord if you have problems with anything.
Discord Go to #developers for support!
Codebase
Stack
- Codebase
- Node.js 22
- Turborepo
- pnpm
- Prettier, ESLint, CSpell
- Desktop app
- Electron
- Frontend - Fabric.js, React
- State - Zustand, Tanstack Query
- Database - SQLite, Drizzle ORM
- Testing - Vitest, Playwright
- Websites
- Astro, React
- Design system
- React, Tailwind, Radix
Installing
- Download & install Node.js 22 (LTS) (also make sure to have
pnpm) - Clone/fork the repo (https://github.com/OpenMarch/OpenMarch)
- Install dependencies:
pnpm install- Note there are some known issues developing on Ubuntu. Please reach out to us on Discord and help us complete this guide :)
Monorepo
Structure
This is the structure of our monorepo.
.├── apps/│ ├── desktop - The main desktop app│ └── website - Our website (and the one you're looking at right now)├── packages/│ ├── core - Utilities and tools for the codebase│ ├── ui - Our design system & playground│ └── * - A handful of other packages we use for various utilities└── package.jsonTasks
Tasks are our main commands in the codebase.
# Install packagespnpm install
# Prepare electron app (this only needs to be run after test:prepare)pnpm desktop app:prepare# Run the desktop app dev serverpnpm desktop dev
# Run the website's astro dev serverpnpm site dev
# Run the design system playgroundpnpm ui devUtilities
# Fixpnpm fix# or individually:pnpm formatpnpm lintpnpm spellcheck
# can also run tasks in specific packagespnpm desktop lintTesting
# Run all unit tests in the monorepopnpm test
# Test a specific file in the desktop appcd apps/desktoppnpm exec vitest path/to/the/file.test.ts
# Run end-to-end tests in the desktop appcd apps/desktoppnpm run e2e
# Generate more e2e test code# See apps/desktop/e2e/README.md for more informationcd apps/desktoppnpm run e2e:codegen