An open API service indexing awesome lists of open source software.

https://github.com/f/appetit

Appétit — An App Store-inspired catalog of free, tiny apps built with agentic engineering and vibecoding. Bon appétit for apps.
https://github.com/f/appetit

Last synced: 3 months ago
JSON representation

Appétit — An App Store-inspired catalog of free, tiny apps built with agentic engineering and vibecoding. Bon appétit for apps.

Awesome Lists containing this project

README

          


Appétit

Appétit


Bon appétit for apps.

An App Store-inspired catalog for your projects — powered by a single JSON file.


Live Demo ·
Quick Start ·
Make It Yours

---

Appétit is a beautiful, browsable app catalog that looks and feels like the Apple App Store. It's built entirely with vanilla HTML, CSS, and JS — no frameworks, no build step, no dependencies. Just edit `apps.json` and deploy.

## Features

- **App Store UI** — Sidebar navigation, featured carousel, app cards, detail pages with screenshots
- **Dark & Light themes** — System preference detection with manual toggle, persisted in localStorage
- **JSON-driven** — All apps, categories, and featured items defined in a single `apps.json`
- **Install modals** — `brew install` and `npx` commands with one-click copy to clipboard
- **Categories** — macOS, Web, CLI, Developer Tools, Productivity (or define your own)
- **Search** — Instant client-side filtering across names, descriptions, and features
- **GitHub stats** — Live star and fork counts, updatable with the included `update-stats.sh` script
- **Responsive** — Desktop sidebar collapses on mobile
- **Zero dependencies** — Pure HTML/CSS/JS, deploys anywhere as static files

## Quick Start

```bash
git clone https://github.com/f/appetit.git
cd appetit
python3 -m http.server 8080
```

Open [localhost:8080](http://localhost:8080) and you're running.

## Make It Yours

### 1. Add your apps

Edit `apps.json`. Each app entry supports:

```jsonc
{
"id": "my-app",
"name": "My App",
"subtitle": "A short tagline",
"description": "One-liner for list views.",
"longDescription": "Full description for the detail page.",
"icon": "https://example.com/icon.png", // or use iconEmoji: "🚀"
"iconStyle": { "scale": 1.3, "objectFit": "cover", "borderRadius": "22%" },
"category": ["macos", "cli"],
"platform": "macOS",
"price": "Free",
"github": "https://github.com/you/my-app",
"homepage": "https://my-app.dev",
"language": "Swift",
"stars": 42,
"forks": 3,
"brew": "brew install you/tap/my-app", // shows install modal
"installCommand": "npx my-app", // alternative install modal
"downloadUrl": "https://github.com/you/my-app/releases/latest",
"requirements": "macOS 15+",
"features": ["Feature one", "Feature two"],
"screenshots": ["https://example.com/screenshot.png"]
}
```

### 2. Configure categories

```json
"categories": [
{ "id": "macos", "name": "macOS Apps" },
{ "id": "cli", "name": "CLI Tools" },
{ "id": "web", "name": "Web Apps" }
]
```

### 3. Set featured apps

```json
"featured": [
{
"id": "my-app",
"headline": "NEW",
"title": "A catchy headline.",
"subtitle": "A longer description for the featured banner."
}
]
```

### 4. Deploy

Push to GitHub and enable Pages — or drop the files on any static host (Netlify, Vercel, Cloudflare Pages, S3, etc).

## Update GitHub Stats

Fetch live star and fork counts from the GitHub API:

```bash
./update-stats.sh
```

For higher rate limits:

```bash
GITHUB_TOKEN=ghp_xxx ./update-stats.sh
```

## File Structure

```
├── index.html Main HTML shell
├── style.css All styles (dark + light themes)
├── app.js Routing, rendering, carousel, modals
├── apps.json All app data — edit this file
├── logo.svg App icon / favicon
├── update-stats.sh Fetches GitHub stars/forks into apps.json
├── CNAME Custom domain for GitHub Pages
└── .nojekyll Prevents Jekyll processing
```

## Deploy to GitHub Pages

1. Push to a GitHub repo
2. Settings → Pages → Source: branch `master`, folder `/`
3. *(Optional)* Add a `CNAME` file with your custom domain

## License

MIT