Last updated June 23, 2026

Contributing

2 minutes read

Contributions are welcome: bug fixes, new features, documentation improvements, and accessibility fixes alike.

Development setup

To get started, install Bun ≥ 1.1.

bash
git clone https://github.com/amousavigourabi/folio.md.git
cd folio-md
bun install
bun run dev

The dev server starts at http://localhost:4321 and hot-reloads on every file save.

Code style

folio.md uses Biome for linting and formatting. Run it before pushing:

bash
bun run lint        # check
bun run lint:fix    # auto-fix

Key conventions Biome enforces:

  • 2-space indentation
  • Double quotes for strings
  • Trailing commas everywhere they’re valid
  • Imports auto-organized on save

TypeScript uses strict mode from astro/tsconfigs/strict. Avoid any. Prefer explicit types on public-facing APIs.

Before opening a pull request

  1. Run the linter: bun run lint
  2. Run the tests: bun run test, using Vitest
  3. Validate links: bun run build, which runs the link checker automatically
  4. Check both themes: if your change touches UI, verify it in both light and dark mode
  5. Check mobile: resize to below 1024 px and confirm the mobile drawer and search bar still work

Adding a Lucide icon

Icons available in the icon frontmatter field come from src/components/NavIcon.tsx. To add one:

  1. Import it from lucide-react
  2. Add it to the icons map in the same file

See the Icon Reference for the current list.

Submitting changes

Open a pull request against master. Keep PRs focused: one logical change per PR makes review faster. Include a short description of what changed and why.