A web-based cybersecurity self-assessment platform that helps users evaluate their security posture across multiple domains (network, cloud, access control, etc.). Built with FastAPI, Jinja2, HTMX, SQLAlchemy, and MySQL.
Users can log in via email, fill out yes/no self-assessments, navigate through modular sections, and get a final score — all in a clean, responsive interface.
- ✅ Email-based login (no passwords)
- 🧠 Customisable question sets grouped by section
- 🧩 HTMX-driven section navigation and dynamic answer saving
- 📊 Real-time score calculation upon submission
- 🔐 User isolation: each user sees only their own assessments
- 🎨 Sleek Bootstrap theme with soft grey tones + a signature accent hue
- FastAPI + Jinja2 + HTMX
- SQLAlchemy + Alembic + MySQL
- Bootstrap 5 (custom themed)
- Docker + Docker Compose
.
├── alembic/ → Database migrations
├── app/ → FastAPI app
│ ├── api/ → Route modules
│ ├── core/ → Connection parameter settings
│ ├── db/ → Connecting to the database
│ ├── static/ → CSS (custom Bootstrap theme)
│ ├── tables/ → SQLAlchemy models
│ ├── templates/ → Jinja2 templates
│ └── main.py → App entry point
├── add-questions.sql → SQL seed file
├── docker-compose.yaml
├── Dockerfile
├── .env
├── LICENSE.md
├── README.md
├── requirements.txt
└── run.sh
- Clone the repo:
git clone https://github.com/Renata-R-R/cybersec-wizard.git
cd cybersec-wizard
# Start the app:
docker-compose up --build
# Open it in your browser:
# http://localhost:8000
# Log in with any email (no password)
# → Create, fill, and submit your first self-assessment- No passwords — email-only login for simplicity (can be extended later)
- Session-based auth using signed cookies
- Database and answers scoped to user ID
Initial questions are autoloaded via add_questions.sql when the MySQL container starts from scratch.
To reseed:
docker-compose down -v
docker-compose up --buildWant to integrate the backend or switch to an SPA frontend? A full OpenAPI schema is available at:
http://localhost:8000/docs