Open Apps
A curated directory of real open-source applications you can run, study,
compare, and contribute to.

Explore the directory ·
Submit an app ·
Read the contribution guide

Why Open Apps?
GitHub is excellent when you already know what to search for. Traditional
awesome lists are useful for discovery, but a repository name and star count
rarely tell you whether a codebase is worth your time.
Open Apps adds the context developers need to make that decision:
- Real applications, not toy projects — complete products with meaningful
scope, structure, and a clear license.
- Practical discovery — browse by category, platform, stack, activity, and
maturity.
- Useful learning signals — understand what a project is best for, how
difficult it is, and what architectural ideas it demonstrates.
- Fresh repository metadata — scheduled automation refreshes activity and
contributor data through reviewable pull requests.
- Open, portable data — every catalog entry is a human-readable YAML file
in this repository.
Stars are a signal, not a ranking system. The goal is to surface codebases
that are useful to read, run, learn from, or improve.
What belongs in the directory?
Open Apps covers mobile, web, desktop, full-stack, and developer-facing
applications. A project must be a genuine application with a public source
repository, an identifiable license, at least 50 stars, and at least 50
lifetime commits.
The directory does not accept:
- tutorials, snippets, or one-screen demos;
- boilerplates and starter templates;
- package-only libraries and SDKs;
- archived projects with no enduring learning value;
- repositories with an unclear license or purpose.
See CONTRIBUTING.md for the complete curation and submission
rules.
Catalog data
Each app lives in its own file:
data/apps/<slug>.yml
Records combine human curation with GitHub metadata:
| Area | Examples | Maintained by |
|---|
| App identity | name, description, category, platforms | contributors and curators |
| Technology | primary stack, languages, frameworks | contributors and curators |
| Repository | stars, forks, releases, activity | scheduled GitHub sync |
| Health | status, listing tier, cleanup candidacy | build and cleanup automation |
| Curation | learning value, caveats, review notes | curators |
The canonical field definitions, ownership rules, taxonomy IDs, and a complete
record example are documented in docs/SCHEMA.md.
Data pipeline
data/apps/*.yml
│
├─ validate schema and taxonomy
├─ normalize and score records
└─ generate build-time JSON
├─ apps.index.json → lightweight search and listing data
├─ apps.full.json → complete app records
└─ apps.json → compatibility payload
│
└─ Astro static site → dist/
Files under data/generated/ are derived artifacts unless explicitly tracked.
Edit the YAML source records rather than generated JSON.
Local development
Requirements
- Node.js 20 or newer
- pnpm 10.12.1 (the version is pinned in
package.json)
Start the site
git clone https://github.com/tortuvshin/open-apps.git
cd open-apps
corepack enable
pnpm install --frozen-lockfile
pnpm dev
The development server prints its local URL, normally
http://localhost:4321.
Useful commands
| Command | Purpose |
|---|
pnpm dev | Generate app data and start the Astro development server |
pnpm build | Validate data, generate AI-readable files, and build the site |
pnpm preview | Preview the production build locally |
pnpm check | Run Astro and TypeScript checks |
pnpm test | Run the Node.js test suite |
pnpm validate:data | Validate every app record without building the site |
pnpm build:data | Validate YAML and regenerate catalog JSON |
pnpm refresh:activity | Refresh per-app activity from the GitHub API |
pnpm sync:contributors | Refresh this repository's contributor metadata |
GitHub API scripts use GITHUB_TOKEN when available. Routine local development,
validation, and builds do not require a token.
Project structure
.
├── data/
│ ├── apps/ # one YAML source record per app
│ ├── generated/ # build-time catalog output
│ └── taxonomy/ # allowed categories, platforms, stacks, and channels
├── docs/
│ └── SCHEMA.md # catalog schema and ownership contract
├── public/ # static assets and AI-readable endpoints
├── scripts/ # validation, generation, sync, and migration tools
├── src/
│ ├── components/ # Astro UI components
│ ├── data/ # typed catalog adapters and site metadata
│ ├── lib/ # search, scoring, formatting, and taxonomy helpers
│ └── pages/ # static routes and app detail pages
└── .github/workflows/ # validation and scheduled metadata maintenance
The site is built with Astro, TypeScript, and
Tailwind CSS. It produces static assets in dist/
and is configured for deployment with Cloudflare Wrangler.
Add or update an app
The fastest submission path is the
web form. It drafts a YAML record from a
public GitHub URL; you review the metadata and open a pull request.
For a manual contribution:
- Create or edit
data/apps/<slug>.yml.
- Keep human-owned fields under
app, stack, and curation.
- Do not hand-edit automation-owned
github or health fields.
- Run
pnpm validate:data, pnpm test, and pnpm build.
- Open a focused pull request.
Please read CONTRIBUTING.md before submitting data or code.
All participants must follow the Code of Conduct.
Automation
GitHub Actions keeps changes visible and reviewable:
- pull requests that touch catalog data run schema validation, data generation,
and unit tests;
- app activity and GitHub-shaped metadata are refreshed daily;
- repository contributor statistics are refreshed weekly;
- stale-app candidates are reported weekly for curator review.
Scheduled jobs open pull requests when source data changes. They do not silently
remove catalog entries.
AI-readable catalog
The deployed site publishes:
llms.txt — a compact guide to the site;
llms-full.txt — the expanded
catalog for AI assistants and retrieval tools.
These files are generated from the same source data as the website.
Project history
Open Apps grew from
open-source-flutter-apps.
The original README-only collection is preserved in
README-LEGACY.md, while this project evolves it into a
structured, searchable, multi-stack directory.
Security
Please report vulnerabilities and sensitive issues using the private process in
SECURITY.md. Do not open a public issue for security reports,
credentials, or takedown requests.
License
The website code and catalog tooling are available under the
MIT License. Provenance and licensing notes for the legacy dataset
are included in the license file.