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
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.
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.
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/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.
git clone https://github.com/tortuvshin/open-apps.git
cd open-apps
corepack enable
pnpm install --frozen-lockfile
pnpm devThe development server prints its local URL, normally
http://localhost:4321.
| 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.
.
├── 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.
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, andcuration. - Do not hand-edit automation-owned
githuborhealthfields. - Run
pnpm validate:data,pnpm test, andpnpm build. - Open a focused pull request.
Please read CONTRIBUTING.md before submitting data or code. All participants must follow the Code of Conduct.
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.
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.
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.
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.
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.