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.
- 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 installandnpxcommands 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.shscript - Responsive — Desktop sidebar collapses on mobile
- Zero dependencies — Pure HTML/CSS/JS, deploys anywhere as static files
git clone https://github.com/f/appetit.git
cd appetit
python3 -m http.server 8080Open localhost:8080 and you're running.
Edit apps.json. Each app entry supports:
"categories": [
{ "id": "macos", "name": "macOS Apps" },
{ "id": "cli", "name": "CLI Tools" },
{ "id": "web", "name": "Web Apps" }
]"featured": [
{
"id": "my-app",
"headline": "NEW",
"title": "A catchy headline.",
"subtitle": "A longer description for the featured banner."
}
]Push to GitHub and enable Pages — or drop the files on any static host (Netlify, Vercel, Cloudflare Pages, S3, etc).
Fetch live star and fork counts from the GitHub API:
./update-stats.shFor higher rate limits:
GITHUB_TOKEN=ghp_xxx ./update-stats.sh├── 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
- Push to a GitHub repo
- Settings → Pages → Source: branch
master, folder/ - (Optional) Add a
CNAMEfile with your custom domain
MIT
{ "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"] }