The marketing and documentation site for AirLink — an open-source game server management panel.
This repo is the public-facing website for AirLink — the landing page, feature showcase, documentation, and blog all in one place. It's a static Astro site with Tailwind CSS, deployed to GitHub Pages on every push to Site.
If you're looking for the panel itself or the daemon, those live in separate repos:
- Panel: AirlinkLabs/panel
- Daemon: AirlinkLabs/daemon
home-Site/
├── public/
│ ├── assets/ # Images, icons, feature screenshots
│ ├── fonts/ # Space Grotesk variable font
│ └── js/ # Vanilla JS (motion, main interactions)
├── scripts/
│ ├── cache-github.ts # Pre-build GitHub data fetcher
│ └── convert-docs.ts # Doc conversion utilities
├── src/
│ ├── components/ # Astro components (Nav, Sidebar, Charts, etc.)
│ ├── content/
│ │ ├── blog/ # Blog posts (.mdx)
│ │ └── docs/ # Full documentation (.mdx)
│ ├── data/
│ │ └── site.json # Central config: features, install steps, addons, team
│ ├── layouts/ # BaseLayout and DocsLayout
│ ├── lib/ # Remark plugins
│ ├── pages/ # Astro pages (index, docs, blog, 404)
│ └── styles/ # CSS: tokens, layout, components, animations
├── astro.config.mjs
└── package.json
Content and site data live in src/data/site.json — features, install steps, addon listings, and team config all come from there, so you rarely need to touch page files directly.
Requirements: Node.js 22.12.0+, pnpm 10
# Install dependencies
pnpm install
# Start the dev server (runs in background mode)
pnpm devThe dev server starts at http://localhost:4321. Use astro dev stop, astro dev status, and astro dev logs to manage it.
| Command | What it does |
|---|---|
pnpm dev |
Starts the local dev server at localhost:4321 |
pnpm build |
Fetches GitHub data, then builds the site to ./dist/ |
pnpm cache |
Runs the GitHub data cache script separately |
pnpm preview |
Previews the production build locally |
pnpm astro … |
Run any Astro CLI command |
pnpm buildrunscachefirst automatically — it pulls live GitHub stats (stars, contributors) and writes them topublic/assets/github-data.jsonbefore the build. Set aGITHUB_TOKENenv variable if you hit rate limits.
Site-wide data (features, install steps, addons, Discord link, etc.) lives in src/data/site.json. Most changes to what appears on the homepage start there.
Documentation lives in src/content/docs/ as .mdx files, organized by section. Frontmatter controls the title, description, section grouping, and sidebar order.
Blog posts live in src/content/blog/ as .mdx files.
The site deploys to GitHub Pages automatically. Any push to the Site branch triggers the workflow in .github/workflows/deploy.yml, which:
- Installs dependencies with pnpm
- Fetches fresh GitHub stats (retries up to 3 times)
- Builds the site and verifies
dist/was created - Deploys to GitHub Pages
You can also trigger a deploy manually from the Actions tab.
AirLink is an open-source game server management panel built with TypeScript, designed to run on your own hardware. Some of what it does:
- Server management — deploy containers, set resource limits, control state from one dashboard
- Live console — WebSocket terminal with real-time CPU, RAM, and disk stats
- File manager — browse, edit, upload, and download server files without SSH or FTP
- Node management — connect multiple machines, each running the daemon
- User system — accounts, admin roles, subusers, and TOTP 2FA
- Addon system — extend the panel without touching core files
- REST API — scoped keys with per-resource permissions
- SFTP access — on-demand isolated SFTP sessions per server
- Pterodactyl egg support — all official eggs work out of the box
Pull requests are welcome. For the site itself, fork the repo, make your changes, and open a PR against Site.
For the panel or daemon, see CONTRIBUTING in those repos.
To support the project financially: ko-fi.com/Airlinklabs
MIT