Altitude

Open Source

Contribute to Altitude's development and help build the future of virtual airline management.


Contributing to Altitude

Thank you for your interest in contributing to Altitude — a next-generation crew center platform for virtual airlines.

Welcome aboard! ✈️

Whether you're fixing bugs, adding features, improving docs, or helping with design — your contributions make Altitude better for the entire virtual aviation community.

Getting Started

First, fork the repository on GitHub using the "Fork" button. This creates your own copy of the project under your account.

Next, clone your fork locally:

git clone https://github.com/<your-username>/altitude.git
cd altitude

Then, add the original repository as an upstream remote so you can keep your fork in sync with future changes:

git remote add upstream https://github.com/flyaltitudeapp/altitude.git

Install prerequisites:

Copy environment file and fill in required values:

cp .env.example .env

Install dependencies using Bun:

bun install

Create/migrate the database:

bun db:migrate

Run dev server:

bun dev

Need help getting started?

Check our installation guide for detailed setup instructions, or join our Discord community for support.

Development Workflow

Create a focused branch for your work:

git checkout -b feat/short-description
# or
git checkout -b fix/issue-key

Make changes aligned with this guide and the project structure:

  • app/ for App Router pages/layouts/components
  • components/ for shared client components
  • actions/ for Server Actions
  • domains/ for business logic modules
  • lib/ for framework-agnostic helpers
  • db/ for Drizzle schema and queries
  • bot/ for the Discord bot

Keep your branch up to date:

git fetch upstream
git merge upstream/main

Format and lint before pushing:

bun run lint:fix
bun run format
bun run check:types

Push your branch and open a Pull Request:

  • Keep PRs small and focused
  • Describe the change, rationale, and impact
  • Include screenshots/videos for UI changes where helpful
  • Link related issues

Database Management

Altitude uses Drizzle ORM (SQLite/libSQL).

If you need sample data locally, use the provided seed script:

bun run db:seed

Schema Changes

Propose any schema changes via an issue or draft PR first for discussion. Keep queries and schema definitions in db/ clear, typed, and minimal.

Coding Guidelines

General Principles

  • Write clean, readable, maintainable code; prefer composition over deep inheritance
  • Follow existing patterns and directory conventions; avoid gratuitous abstractions
  • Keep modules small and cohesive; favor pure functions and clear interfaces
  • Validate all external inputs with Zod schemas

TypeScript

  • TypeScript 5.8 with strict enabled; no implicit anys
  • Never use any. Prefer unknown with proper narrowing
  • Use import type for type-only imports (enforced by ESLint)
  • Respect exactOptionalPropertyTypes, noUncheckedIndexedAccess, and related strictness
  • Keep public function signatures stable and explicit; avoid broad generics unless necessary

React/Next

  • App Router (Next.js 15) with React 19
  • Co-locate server actions under actions/ and business logic under domains/
  • Use the pre-configured safe action client
  • Use Zod for all input validation at boundaries (APIs, actions, user input)
  • Prefer server components by default; use client components only when needed

Styling

  • Tailwind CSS 4
  • Use CSS variables from :root in app/globals.css — the authoritative color source
  • Example class usage: className="text-foreground"
  • No inline colors beyond CSS variable references
  • Optional alternate themes live under public/styles/ — do not redefine colors elsewhere

Commit, Branch, and PR

Branching is trunk-based; keep feature branches short-lived.

Write clear, descriptive commit messages.

Ensure local commits pass:

bun run check:types

Do not force-push to main. If a rebase is necessary for a PR, use --force-with-lease.

PRs should explain the problem, the approach, and any trade-offs.

Areas of Contribution

UI/UX Improvements

Enhance the user interface in app/ and components/

Server Actions

Build robust server actions in actions/

Business Logic

Develop core features in domains/

Database

Refine schema and queries in db/ (discuss first)

Discord Bot

Add features and improve stability in bot/

Documentation

Improve docs, DX tooling, and developer experience

Community and Support

Before making changes:

Open an issue for discussion before large or structural changes. Be respectful and inclusive; assume good intent and provide constructive feedback.

Get Help

If you have questions or need help:

  • Check existing issues and documentation first
  • Open a GitHub issue with context and repro details
  • Propose a draft PR to discuss implementation direction
  • Join our Discord for real-time support

Recognition & Impact

Your contributions help virtual airlines worldwide run smoother operations. Every bug fix, feature addition, and documentation improvement makes a real difference in the community.

Thank you for contributing to Altitude! ✈️

Together, we're building the future of virtual airline management. Your work helps pilots, staff, and communities thrive in the skies above.