Thank you for your interest in contributing! Here's how to get started.
- Fork and clone the repo
- Install dependencies:
bun install(from repo root — needed for tests, version syncing, and local tooling) - Read
AGENTS.mdfor the full architecture and conventions
Open a Bug Report. Include:
- Steps to reproduce
- Expected vs actual behavior
- Dequel version (
VERSIONfile orscripts/dequel status) - Environment details (OS, Docker version, browser if relevant)
Open a Feature Request. Describe:
- The problem you're solving
- Your proposed solution
- Any alternatives considered
- Whether you'd like to implement it yourself
Run the full stack with Docker Compose:
docker compose up -d --buildThis starts all services (API, Web, Caddy, BuildKit, Redis, Prometheus, Loki, Grafana). The dashboard is at https://localhost, API at https://localhost/api, Grafana at https://localhost/grafana (admin/admin).
- No comments in source code unless absolutely necessary
- Named exports over default exports
- Functional components + hooks in React
- Tailwind CSS for styling (web and docs)
- Max ~500 lines per file — split into feature-grouped directories
set -euo pipefailin all bash scripts
Run from apps/api/:
cd apps/api
bunx drizzle-kit generate
bunx drizzle-kit pushRun from apps/api/:
cd apps/api && bun testAlways run tests before committing API changes.
./bump.sh v0.2.0This updates VERSION, all package.json files, and optionally adds a changelog entry.
- Create a PR from your fork using the PR template
- Ensure all tests pass (
cd apps/api && bun test) - Keep changes focused — one feature/fix per PR
- Update documentation if your change affects user-facing behavior
- If changing API behavior, update the docs site content
- Tests pass (
cd apps/api && bun test) - No new warnings or lint errors
- Documentation updated (if applicable)
- Version synced (
bun run sync-versions) ifVERSIONchanged - Follows code conventions (no comments, named exports, etc.)
Maintainers cut releases by tagging:
git tag vX.Y.Z
git push origin vX.Y.ZCI builds Docker images to ghcr.io/lftobs/dequel/{api,web}:X.Y.Z, deploys docs to Vercel, and creates a GitHub Release.
Open a Discussion for questions and community support.