The open dataset behind thealtstack.com
148 open-source tools · 32 categories · 143 Docker deploy configs · 20 blog posts · 5 curated stacks
Note: Website v2 is currently in progress. The data layer is fully active and accepting contributions.
This is the data layer for The AltStack — a curated directory of open-source alternatives to popular SaaS products. Everything the website displays comes from the files in this repo:
- The full tool database (
tools.json) - Docker Compose deployment configs for 143 tools
- Blog content and editorial copy (20 articles)
- Category descriptions and SEO metadata
- Curated "Stack" bundles (5 pre-built tool combos)
- Full documentation site (Nextra)
If you want to add a tool, fix a description, or contribute a Docker config — this is where you do it.
├── data/
│ ├── tools.json # Master database — 148 tools, every field
│ ├── tools-min.json # Minified version (client-side, faster loads)
│ ├── tools_expanded.json # Expanded version with enriched metadata
│ ├── tools_expanded-min.json # Minified expanded version
│ ├── blog-posts.ts # Blog post content (20 articles)
│ ├── stacks.ts # Curated stack definitions (5 bundles)
│ ├── category_editorial.json # Category descriptions, SEO copy, editorial
│ ├── seo.ts # VS pair generation (proprietary vs open-source)
│ ├── memory.json # Sentinel pipeline state & run history
│ ├── memory-min.json # Minified pipeline state
│ ├── cortex-memory.json # Sentinel memory & context
│ ├── bundled-docker-templates.json # Pre-built Docker templates
│ └── bundled-docker-templates-min.json
├── docker-deploy/ # 143 Docker Compose configs + install scripts
│ ├── supabase/
│ │ ├── docker-compose.yml
│ │ └── install.sh
│ ├── n8n/
│ ├── plausible/
│ ├── mattermost/
│ └── ... (143 tools total)
├── deployments/ # Deployment metadata & generated configs (68 entries)
├── docs/ # Documentation site source (Nextra)
│ ├── app/
│ │ ├── concepts/ # Self-hosting concepts
│ │ │ ├── backups/
│ │ │ ├── docker-basics/
│ │ │ ├── env-secrets/
│ │ │ ├── hardware/
│ │ │ ├── monitoring/
│ │ │ ├── networking/
│ │ │ ├── reverse-proxies/
│ │ │ ├── ssl-tls/
│ │ │ └── updates/
│ │ ├── deploy/ # 68 tool-specific deployment guides
│ │ ├── quick-start/ # Getting started guides
│ │ │ ├── choosing-a-server/
│ │ │ ├── first-deployment/
│ │ │ ├── reverse-proxy/
│ │ │ ├── starter-kit/
│ │ │ └── what-is-self-hosting/
│ │ ├── stacks/ # Stack pages
│ │ │ ├── ai-first/
│ │ │ ├── bootstrapper/
│ │ │ ├── designer/
│ │ │ ├── devops/
│ │ │ └── privacy/
│ │ ├── why/ # Why self-host
│ │ └── contact/ # Contact page
│ ├── components/ # Shared components
│ │ ├── AIChatLinks.tsx
│ │ └── ContactForm.tsx
│ └── public/ # Static files
│ ├── llms.txt
│ ├── llms-full.txt
│ ├── robots.txt
│ └── _pagefind/
├── scraper/ # Python scraper for data enrichment
│ ├── scraper.py
│ └── requirements.txt
├── scripts/
│ └── fetch-github-metadata.js # GitHub stars/activity enrichment
├── assets/ # Logos and static assets
│ ├── logo.png
│ └── logos/
├── .github/
│ ├── CODEOWNERS # Code ownership
│ ├── ISSUE_TEMPLATE/ # Issue templates
│ │ ├── add-guide.yml
│ │ ├── add-tool.yml
│ │ ├── fix-data.yml
│ │ └── tool-submission.yml
│ ├── pull_request_template.md # PR template with checklist
│ └── workflows/ # CI/CD automation
│ ├── validate-data.yml # JSON validation on push/PR
│ ├── scrape-data.yml # Nightly GitHub data enrichment
│ ├── sync-to-main-app.yml # Sync to thealtstack repo
│ ├── check-docs.yml # Docs build check
│ └── redeploy-site.yml # Vercel deploy trigger
├── CONTRIBUTING.md # How to contribute
├── CRITERIA.md # Tool vetting standards
├── CODE_OF_CONDUCT.md # Community guidelines
├── SECURITY.md # Security policy
└── LICENSE # CC BY 4.0
The core of this repo. Each tool entry looks like this:
{
"slug": "plausible",
"name": "Plausible Analytics",
"category": "Analytics",
"is_open_source": true,
"pricing_model": "Free Self-Hosted / Paid Cloud",
"website": "https://plausible.io",
"description": "Lightweight and privacy-friendly Google Analytics alternative.",
"alternatives": ["Google Analytics", "Mixpanel"],
"tags": ["analytics", "privacy", "self-hosted"],
"logo_url": "https://...",
"avg_monthly_cost": 0,
"pros": ["Privacy-first", "Lightweight script", "Easy to self-host"],
"cons": ["Fewer advanced features than GA4"],
"stars": 29314,
"language": "Elixir",
"license": "AGPL-3.0",
"last_commit": "2026-10-04T18:42:06Z"
}| Category | Tools | Category | Tools |
|---|---|---|---|
| Productivity | 16 | Security | 9 |
| DevOps | 9 | Marketing | 9 |
| AI Models | 9 | Analytics | 8 |
| Uncategorized | 8 | Monitoring | 7 |
| Communication | 5 | Design | 5 |
| Automation | 5 | Cloud Infrastructure | 5 |
| Backend as a Service | 4 | CRM | 4 |
| Project Management | 4 | Support | 4 |
| AI Runners | 4 | ERP | 3 |
| CAD | 3 | AI Image Generation | 3 |
| AI Coding | 3 | HR | 2 |
| E-commerce | 2 | Legal | 2 |
| Financial | 2 | Creative | 2 |
| AI Video Generation | 2 | AI Interfaces | 2 |
| AI Tools | 2 | API Development | 2 |
| 2 | Photos | 1 |
Every config in docker-deploy/ is a ready-to-use docker-compose.yml with an accompanying install.sh script. Just clone and run:
cd docker-deploy/plausible
chmod +x install.sh
./install.shOr copy the docker-compose.yml directly:
cd docker-deploy/n8n
docker compose up -dCurrently covering 143 tools including: Supabase, Mattermost, Plausible, PostHog, Keycloak, N8N, Immich, Authentik, Metabase, Plane, Coolify, Dokku, and many more.
Each tool also has a dedicated deployment guide in docs/app/deploy/<tool-slug>/.
Want to add a config? See CONTRIBUTING.md. We test every config before merging.
Pre-built tool bundles for common use cases, defined in data/stacks.ts:
| Stack | Tagline | What it's for | Monthly Savings |
|---|---|---|---|
| 🚀 The Bootstrapper | Launch for $0/mo | Full SaaS toolkit for solo founders | ~$310/mo |
| 🎨 The Designer | Ditch Creative Cloud | Adobe Creative Cloud replacement | ~$110/mo |
| 🤖 The AI-First | Own your AI | Self-hosted LLMs, image gen, code completion | ~$69/mo |
| ⚙️ The DevOps | Self-host everything | Full infrastructure on your own terms | ~$375/mo |
| 🔒 The Privacy | Zero data leaks | 100% self-hostable, no third-party servers | ~$185/mo |
The full documentation site is built with Nextra and lives in docs/. It includes:
- Concepts — Self-hosting fundamentals: backups, Docker basics, env secrets, hardware, monitoring, networking, reverse proxies, SSL/TLS, updates
- Deploy Guides — 68 tool-specific deployment walkthroughs
- Quick Start — Choosing a server, first deployment, reverse proxy setup, starter kit, what is self-hosting
- Stacks — Detailed pages for each curated stack
- Why — Why self-host
- Contact — Contact form
This repo is kept up-to-date by an automated pipeline called the Sentinel Engine, running via GitHub Actions:
| Workflow | What it does | Trigger |
|---|---|---|
validate-data.yml |
Validates all JSON in data/ |
Push/PR to data/** |
scrape-data.yml |
Nightly GitHub metadata enrichment (stars, commits, language, license) | Cron: daily at midnight UTC |
sync-to-main-app.yml |
Syncs data/ and docker-deploy/ to the main thealtstack repo |
Push to main |
check-docs.yml |
Builds the Nextra docs site | PR to docs/** |
redeploy-site.yml |
Triggers Vercel deploy hook | Push to main |
The Sentinel patrol now works on a sentinel/* branch and opens a pull request,
so every automated change is reviewed before it merges.
Two incidents in 2026 (2026-09-21 and 2026-10-05) deleted community contributions through an unguarded automated mirror. Everything affected has been restored, and the causes, the safeguards that replaced it, and what is still limited today are documented honestly in INCIDENTS.md.
We welcome contributions! The most impactful ways to help:
- Fork this repo
- Add a new entry to
data/tools.jsonfollowing the schema above - Make sure it meets our vetting criteria
- Open a PR
- Create a new folder in
docker-deploy/named after the tool's slug - Add a
docker-compose.ymland aninstall.sh - Test it locally — it should produce a working deployment
- Open a PR
- Create a new folder in
docs/app/deploy/<tool-slug>/ - Write an
.mdxguide - Add it to
docs/app/deploy/_meta.ts - Open a PR
Found a broken link, wrong pricing, or outdated description? Edit data/tools.json and open a PR. Small, targeted fixes are the fastest to merge.
- Add a new entry to
data/blog-posts.ts - Follow the existing format
- Open a PR
See CONTRIBUTING.md for the full guide.
The data in this repo is licensed under CC BY 4.0. You're free to use it in your own projects — just give attribution.
# Full database
curl -O https://raw.githubusercontent.com/altstackHQ/altstack-data/main/data/tools.json
# Minified (smaller, for client-side use)
curl -O https://raw.githubusercontent.com/altstackHQ/altstack-data/main/data/tools-min.json
# Expanded (with enriched metadata)
curl -O https://raw.githubusercontent.com/altstackHQ/altstack-data/main/data/tools_expanded.jsonconst response = await fetch(
'https://raw.githubusercontent.com/altstackHQ/altstack-data/main/data/tools.json'
);
const tools = await response.json();
// Filter by category
const analytics = tools.filter(t => t.category === 'Analytics');
// Find alternatives to a specific SaaS
const slackAlts = tools.filter(t =>
t.alternatives?.includes('Slack')
);Thanks to everyone who has contributed to this project:
| Contributor | Commits | Contributor | Commits |
|---|---|---|---|
| @aa-humaaan | 44 | @nadyyym | 2 |
| @benjiwagner | 2 | @arsalann | 1 |
| @aagarwal1012 | 1 | @BlueSkyID666 | 1 |
| @sosidudku1 | 1 | @JesusPaz | 1 |
| @cevheri | 1 | @mikececco | 1 |
| @1146345502 | 1 | @unjica | 1 |
| @sridharkalaibala | 1 | @alichherawalla | 1 |
| @imshashank | 1 |
- 🌐 Website: thealtstack.com
- 📖 Documentation: docs/
- 🐛 Report an issue: Open an issue
- 📬 Request a tool: Open an issue
Built by @altstackHQ
Stop paying for SaaS you can self-host.