Skip to content

tortuvshin/open-apps

Repository files navigation

Open Apps

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

Website Validate app data License: MIT Astro

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

Open Apps — discover open-source apps worth studying

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:

  1. Create or edit data/apps/<slug>.yml.
  2. Keep human-owned fields under app, stack, and curation.
  3. Do not hand-edit automation-owned github or health fields.
  4. Run pnpm validate:data, pnpm test, and pnpm build.
  5. 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.

About

A curated, self-refreshing directory of real open-source application codebases - built for developers who want to learn from production apps and find projects worth contributing to.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages