enferno/
├── enferno/
│ ├── app.py # Application factory, blueprint registration
│ ├── settings.py # Config from .env
│ ├── extensions.py # db, migrate, cache, mail, session, CSRF, debug toolbar
│ ├── commands.py # Flask CLI commands
│ ├── agent_mcp.py # Read-only MCP server for coding agents
│ ├── public/ # "/" and OAuth handlers, no auth
│ ├── portal/ # "/dashboard/", login required
│ ├── user/ # Admin: users, roles, activity log
│ ├── tasks/ # Celery (optional)
│ ├── utils/base.py # BaseMixin: save() and delete()
│ ├── static/ # Vendored Vue, Vuetify, axios, Tabler icons, app JS and CSS
│ └── templates/ # layout.html, admin pages, auth pages
├── migrations/ # Alembic revisions
├── tests/ # pytest suite
├── instance/ # SQLite database
├── setup.sh # Dependencies and .env with generated secrets
├── vendor.sh # Pinned frontend library downloads
├── run.py # Entry point
├── AGENTS.md # Instructions for coding agents
└── .agents/skills/ # enferno-dev agent skill