App Store Connect submission assistant — generate metadata from verified project facts.
AppMeta scans a local Flutter project, helps you confirm detected facts, and uses your own AI API key (BYOK) to generate App Store Connect-ready fields. Source code stays on your machine.
- macOS (MVP target)
- Node.js 18+
- Rust stable
- Tauri prerequisites
npm install
npm run tauri devnpm run tauri build# Rust unit tests
cd src-tauri && cargo test
# Frontend typecheck
npm run check- Dashboard — Connect a Flutter project folder
- Scan — Review detected app identity, dependencies, permissions
- Facts — Confirm facts and answer questionnaire
- Settings — Add your OpenAI (or OpenRouter) API key
- Product Page / Review / Privacy / IAP — Generate fields
- Export — Save
submission-pack.mdandsubmission-pack.json
src-tauri/src/ Rust backend (scanner, AI, validation, export)
src/ SvelteKit frontend (desktop app)
website/ Marketing site (SvelteKit, GitHub Pages)
spec.md Full product specification
TODO.md Implementation checklist
The public site lives in website/ as a separate SvelteKit app (static prerender for GitHub Pages).
# Install website dependencies (first time)
npm ci --prefix website
# Local dev (http://localhost:5173)
npm run website:dev
# Typecheck
npm run website:check
# Production build (custom domain — no base path)
npm run website:buildLive site: https://appmeta.maskedsyntax.com
Pushes to master that touch website/** run .github/workflows/deploy-website.yml, which builds the static site and publishes to GitHub Pages.
- Settings → Pages → Build and deployment → Source: GitHub Actions
- Custom domain:
appmeta.maskedsyntax.com(also inwebsite/static/CNAME) - Manual deploy: Actions → Deploy Website → Run workflow
DNS: CNAME record appmeta → <user-or-org>.github.io (or the target shown in Pages settings).
MIT — see LICENSE