Why I built this?

I made the Nmap Dashboard as a way to teach myself Python, not just learning the syntax, but actually using it to build something useful. I didn’t want to just follow along with tutorials. I wanted to create a tool that worked, that could solve a real problem, and that would push me to figure things out as I went.

It started out simple: just a basic web app to display Nmap scan results. But as I kept working on it, the project kept growing. I added more features like risk-based tagging, PDF exports, scan comparisons, undo delete, and others all because I kept asking myself “what else can I make this do?” Bit by bit, it turned into a full dashboard.

I built the whole thing from scratch. It’s not based on any existing project just something I wanted to figure out for myself. I developed it on a Ubuntu VM, which also gave me a chance to improve my Linux skills. Eventually, I moved it over to Docker to make it easier to use and more portable. The Docker setup is written for Linux, and that’s the environment I’ve focused on the most.

This project also helped me understand how things work under the hood, like managing file paths, logging system activity, and using SQL to store scan data. I wrote additional Python scripts outside the main app to help reset the database or archive scans, which I run directly from the Linux terminal. It became more than just a web app — it was a way to reinforce everything I’d been learning about the OS, scripting, and backend logic.

One thing I want to be transparent about is that the frontend was AI-generated, every piece of html code was generated by AI, and I also used AI throughout the project as a helping hand. Whether it was debugging tricky Python errors, thinking through logic, or getting inspired for new features, AI was a big part of how I pushed my skills further. It helped me go from basic Python knowledge to building something much more complex faster than I could’ve done on my own.

This project reflects a lot of learning and growth. It started as a way to get more hands-on with Flask and Python, and ended up almost as a full fledged tool I could use. I didn’t expect it to turn into a full dashboard, but that’s what it transitioned into.



🛠️ Tech Stack

  • Python (Flask)
  • SQLite
  • Nmap
  • HTML/CSS (Jinja templates)
  • Bootstrap (for styling)
  • JavaScript (minimal)

🧪 Key Features

  • Upload and parse Nmap XML output
  • Visualize open/closed ports
  • Tag hosts and ports with custom labels
  • Export to PDF
  • Undo delete functionality
  • Compare scans to detect network changes

Demo Demonstration


🔗 GitHub Repository

github.com/yairemartinez/nmap_dashboard


💡 Why I Built This

Most Nmap results are hard to manage and compare over time. I built this to create a more human-friendly view — one that supports tagging, search, history tracking, and reporting.


✅ What I Learned

  • Building production-ready Flask apps
  • Parsing complex XML (Nmap format)
  • Securing file uploads and managing routes
  • Designing database schema for flexibility
  • Implementing user-focused features like undo and PDF export

By admin

Leave a Reply

Your email address will not be published. Required fields are marked *