Skip to content

Renata-R-R/cybersec-wizard

Repository files navigation

🛡️ Cybersecurity Self-Assessment Wizard

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.


🚀 Features

  • ✅ 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

🧰 Tech Stack

  • FastAPI + Jinja2 + HTMX
  • SQLAlchemy + Alembic + MySQL
  • Bootstrap 5 (custom themed)
  • Docker + Docker Compose

📂 Project Structure

.
├── 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

⚙️ Running Locally

  1. 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

🔒 Admin / Security Notes

  • No passwords — email-only login for simplicity (can be extended later)
  • Session-based auth using signed cookies
  • Database and answers scoped to user ID

🗃️ Seeding Questions

Initial questions are autoloaded via add_questions.sql when the MySQL container starts from scratch.

To reseed:

docker-compose down -v
docker-compose up --build

📦 API Overview

Want to integrate the backend or switch to an SPA frontend? A full OpenAPI schema is available at:

http://localhost:8000/docs

About

An example cybersecurity self-assessment wizard.

Topics

Resources

License

Stars

Watchers

Forks