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:
- Install Bun: https://bun.sh
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/componentscomponents/
for shared client componentsactions/
for Server Actionsdomains/
for business logic moduleslib/
for framework-agnostic helpersdb/
for Drizzle schema and queriesbot/
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
. Preferunknown
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 underdomains/
- 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
inapp/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.