Skip to main content

Create a new project

You are prompted for the app type first:Then about optional features:
  • Background jobs — thread pool by default, optionally Redis
  • Auto-approve users — immediately activate new signups (authenticated apps only)
  • Caching — memory cache for development, optionally Redis for production
  • File storage — local filesystem for development, optionally GCS for production
  • Email — Resend for transactional emails (authenticated apps only)
  • Display name field — optional display_name on the User model (authenticated apps only)
  • Admin email — creates your initial admin user (authenticated apps only)
feather new myapp --no-prompt skips every question and uses minimal defaults.

Set up the database

Migrations are manual so you can review the models first.

Start the dev server

Open http://localhost:5173. Vite handles frontend assets with hot module replacement, and Flask runs on port 5000 behind the proxy. CSS and JavaScript changes are instant; template and Python changes trigger a reload.
Using background jobs with the thread backend? Set FLASK_DEBUG=0 in .env. Flask’s auto-reloader kills background threads on every file change. Use JOB_BACKEND=sync during development if you need debug mode.

What you get

Every Feather project includes a CLAUDE.md and an AGENTS.md with the same content, written together so they cannot drift, plus a .claude/settings.json that pre-approves the read-only commands an assistant needs. They are a starting point — add your project’s own domain rules and preferences as the app grows. What makes them useful is that the rules are checkable:

Project structure

Where every file goes, and what auto-discovery expects.

Working with AI assistants

How the conventions files and feather check fit together.