An open-source collection of aerospace engineering calculators and visualization tools designed to make aerospace education and research more accessible. This repository contains the tools platform of the AeroVia ecosystem, which remains synchronized with the main AeroVia monorepo (which is closed-source for security reasons).
Our goal is to create a comprehensive aerospace open-source tool repository that serves:
- Professors - Visualize course concepts and enhance teaching materials
- Researchers - Accelerate calculations and validate theoretical models
- Students - Understand complex aerospace topics through interactive tools
- Enthusiasts - Learn aerospace concepts through hands-on exploration
We believe aerospace knowledge should be accessible to everyone, regardless of background or resources.
Our growing collection includes tools across multiple aerospace disciplines:
- Atmospheric & Flight: ISA Calculator, Mach Number Calculator, Aircraft Performance tools
- Aerodynamics: Reynolds Number, Normal/Oblique Shock, Isentropic Flow calculators
- Propulsion: Rocket Equation, TWR Calculator, Specific Impulse Converter
- Orbital Mechanics: Hohmann Transfer, Delta-V Budget, Orbital Period calculators
- Communications: Radar Range Equation, RF Link Budget tools
- General Utilities: Unit Converter, Coordinate System Converter, Scientific Calculator
And many more tools across Structures, Mission Planning, Astronomy, Navigation, UAV Operations, and Photography/Imaging categories.
- Next.js - React framework for the web
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first styling
- shadcn/ui - High-quality, accessible component library
- Vitest - Unit testing framework
- React Icons - Comprehensive icon library
- Node.js (v20 or higher)
- bun (v1.3 or higher)
- Clone the repository:
git clone https://github.com/AeroVia-org/aerovia-tools
cd aerovia-tools- Install dependencies:
bun install- Run the development server:
bun run dev- Open http://localhost:3000 in your browser.
bun run dev- Start development serverbun run build- Build for production
├── app/
│ ├── (tools)/ # Tool folders
│ │ ├── mach-calculator/
│ │ │ ├── page.tsx # Main tool page
│ │ │ ├── logic.ts # Calculation logic
│ │ │ ├── logic.test.ts # Unit tests
│ │ │ ├── theory.tsx # Explanation of underlying theory
│ │ │ └── visualization.tsx # Interactive visualization
│ │ └── ...
│ ├── components/ # Shared components
│ ├── page.tsx # Home page showing list of tools
│ ├── tools.ts # Tool registry and metadata
│ └── tools.test.ts # Tool registry tests
├── packages/ # Shared UI components (shadcn/ui)
│ └── ui/
│ └── components/ui/ # Individual component files
└── lib/ # Utility functions
We use shadcn/ui as our component library, which provides beautifully designed, accessible components built on top of Radix UI primitives. This ensures our tools have consistent, professional interfaces while maintaining excellent accessibility standards.
Important: When importing shadcn/ui components, always use the @packages/ui path instead of relative paths. For example:
// ✅ Correct
import { Button } from "@packages/ui/components/ui/button";
import { Input } from "@packages/ui/components/ui/input";
// ❌ Avoid
import { Button } from "./components/ui/button";This mapping is configured in tsconfig.json to point @packages/ui to the root directory. This setup ensures compatibility with the main AeroVia monorepo, where @packages/ui maps to a shared UI package.
We use Vitest for comprehensive unit testing of our calculation logic. Every tool includes a logic.test.ts file that validates our implementations against trusted reference values from textbooks, standards, and academic sources.
This approach ensures our tools provide accurate, reliable results that users can trust for educational and research purposes.
We welcome contributions from the aerospace community! Here's how to add a new tool:
-
Add tool metadata to
app/tools.ts:{ type: "active", key: "your-tool-key", title: "Your Tool Name", icon: FaYourIcon, description: "Brief description of what the tool does", category: "Your Category", authors: ["your-author-id"], }
-
Create tool folder at
app/(tools)/your-tool-key/ -
Implement required files:
page.tsx- Main tool interface and user interactionlogic.ts- Core calculation functions with proper TypeScript typeslogic.test.ts- Comprehensive unit tests using Vitesttheory.tsx- Educational content explaining the underlying physics/mathvisualization.tsx- Interactive charts and visualizations (optional)
-
Follow our standards:
- Use semantic color classes from our design system
- Include comprehensive error handling and input validation
- Add detailed comments for complex calculations
- Ensure all functions are properly typed (no
anytypes) - Test against known reference values from trusted sources
- Follow existing code structure and naming conventions
- Use shadcn/ui components from
@packages/ui/components/ui/ - Include proper TypeScript types for all functions and components
- Add comprehensive unit tests with known input/output pairs
- Include educational content in Theory sections
- Update documentation when adding new features
This project is licensed under the MIT License - see the LICENSE file for details.
For questions, suggestions, or collaboration opportunities:
- Open an issue in the repository
- Email: [email protected]
Making aerospace accessible through open-source tools and education.