{
  "markdown": "# Enferno 🔥\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n**[Live Demo](https://demo.enferno.io/)** · **[Tutorials](https://github.com/level09/enferno/wiki)** · **[Docs](https://docs.enferno.io)** · **Stop configuring. Start shipping.**\n\n~~Webpack~~ ~~Vite~~ ~~node_modules~~ ~~npm install~~ — Just Python.\n\n```bash\ngit clone git@github.com:level09/enferno.git && cd enferno\n./setup.sh                    # Installs deps + generates secure .env\nuv run flask create-db        # Setup database\nuv run flask install          # Create admin user\nuv run flask run              # → http://localhost:5000\n```\n\n\nhttps://github.com/user-attachments/assets/a87bfad2-45dc-4d94-bdf1-0448dfea8084\n\n\n\nWhy Enferno?\n===========\n- **Zero build step** - Vue 3 + Vuetify 3 run directly in browser. Delete your `node_modules`\n- **Auth that works** - 2FA, WebAuthn, OAuth (Google/GitHub) — not a tutorial, actual production code\n- **SQLite by default** - Deploy anywhere. ~~Managed database~~ not required\n- **AI-native** - Ships with Claude Code & Cursor rules. Your AI already knows the codebase\n- **Complexity is opt-in** - Redis, Celery, PostgreSQL when *you* decide, not when the framework demands\n\n> **Want payments?** → **[ReadyKit](https://readykit.dev)** adds Stripe, multi-tenancy, teams on top of Enferno\n\nWhat's Included\n---------------\n- **Frontend**: Vue 3, Vuetify 3, Axios - no build tools needed\n- **Auth**: Login, registration, password recovery, session management\n- **2FA**: TOTP authenticator apps (Google Authenticator, Authy, 1Password)\n- **WebAuthn**: Passkeys and hardware security keys (YubiKey, Touch ID)\n- **Recovery codes**: Backup codes for account recovery\n- **OAuth**: Google and GitHub login\n- **Database**: SQLAlchemy ORM with Alembic migrations\n- **Patterns**: Data tables, dialogs, notifications - ready to use\n\n### UI Features\n\n- **Collapsible sidebar** - Nested navigation groups with smooth expand/collapse animations\n- **Dark mode** - Theme toggle with localStorage persistence, auto-detects system preference\n- **Tabler Icons** - 5000+ icons via CDN, no build step\n- **Ember color palette** - Fire-inspired theme matching the Enferno brand\n- **Polish included** - Card hover effects, smooth scrollbars, styled data tables\n\nRequirements: Python 3.11+ and [uv](https://docs.astral.sh/uv/)\n\n### Background Tasks\n\nWhen you need Celery for async jobs:\n\n```bash\nuv sync --extra full        # Adds Redis + Celery\n# Set REDIS_URL, CELERY_BROKER_URL in .env\n```\n\n### Database Migrations\n\nSchema changes are managed with Alembic (Flask-Migrate). Autogenerate drafts the\nmigration; always review and edit it before applying:\n\n```bash\nuv run flask db migrate -m \"add status to user\"   # Draft from model changes\n# Review migrations/versions/<revision>.py, adjust as needed\nuv run flask db upgrade                           # Apply\n```\n\nFresh databases: `uv run flask create-db` builds the full schema and stamps it\nautomatically. Databases created before migrations existed: run\n`uv run flask db stamp head` once, then use the workflow above.\n\n### Sanity Checks\n\nNo pytest ceremony - just real code paths:\n\n```bash\nuv run python checks.py     # Run before deploying\n```\n\n### Docker\n\nFull production stack with one command:\n\n```bash\ndocker compose up --build   # Redis, PostgreSQL, Nginx, Celery\n```\n\n### VPS Deploy\n\nOne command to deploy on any Ubuntu VPS (Hetzner, DigitalOcean, etc.):\n\n```bash\ncurl -sSL https://raw.githubusercontent.com/level09/ignite/main/ignite.sh | sudo DOMAIN=your-domain.com bash\n```\n\nHandles Caddy (auto SSL), Python 3.13, Redis, systemd services. See [Ignite](https://github.com/level09/ignite).\n\nConfiguration\n------------\n\nEnvironment variables (`.env`):\n\n```bash\nSECRET_KEY=your_secret_key\nFLASK_APP=run.py\nFLASK_DEBUG=1                    # 0 in production\n\n# PostgreSQL (optional - SQLite works by default)\n# SQLALCHEMY_DATABASE_URI=postgresql://user:pass@localhost/dbname\n\n# Background tasks (optional)\n# REDIS_URL=redis://localhost:6379/1\n# CELERY_BROKER_URL=redis://localhost:6379/2\n```\n\nDocumentation: [docs.enferno.io](https://docs.enferno.io)\n\nLooking for async?\n------------------\nCheck out **[STK](https://stk.dev)** — same philosophy, built on Quart (async Flask) with native WebSockets.\n\nLicense\n-------\nMIT\n\n",
  "bytes": 4324,
  "sha": "3a297b2b4e2b5a55c36ac431efcdc4be1c13b7f93d01e7de776904368692043e",
  "repo_slug": "level09/enferno",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/skl_level09_enferno_claude_skills_enferno_de_079187bb/readme"
}