Mladi Pirati Beacon

Working on projects

Day-to-day conventions for contributing to Mladi Pirati projects.

Git workflow

  • master is always deployable. Don't push to it directly.
  • Create a branch for each change, e.g. feat/member-signup or fix/login-redirect.
  • Open a pull request and get at least one review before merging.
  • Keep PRs small and focused, and explain the why in the description.

Package manager

Use the package manager the repository already uses. You can tell from the lockfile (bun.lock, pnpm-lock.yaml, package-lock.json or yarn.lock). Never mix package managers, and always commit the lockfile.

Secrets and environment variables

  • Never commit secrets: no API keys, passwords, S3 keys or client secrets.
  • Keep .env.example up to date whenever you add a variable.
  • Validate environment variables at startup (e.g. with Zod) so a missing value fails fast.
  • If a secret leaks, tell Aiken immediately so it can be rotated.

Code

  • TypeScript in strict mode, with no any (see tech stack).
  • Run the linter and type check before pushing.
  • Validate all external input (forms, API requests, webhooks) with Zod.

Database

  • Every schema change goes through a Drizzle migration, and migrations are committed.
  • Never edit a migration that has already run in production. Write a new one instead.
  • Never connect to a production database from your machine without asking first.

Getting help

Ask in the dev channel or contact Aiken.

On this page