Skip to content

rolbick/roadmap_pentester

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tracker — Roadmap Pentesting VA Technology

Web app local para trackear horas de estudio del roadmap de certificaciones del equipo. Cada miembro corre su propia instancia con su propia base de datos local. No hay servidor compartido — tus horas son tuyas.


Qué es esto

Un dashboard simple que:

  • Lleva el roadmap del equipo (eJPT → BSCP → PNPT → OSCP) precargado, con horas estimadas por ítem
  • Te deja iniciar/detener sesiones de estudio con un click (cronómetro en vivo HH:MM:SS)
  • Compara tu tiempo invertido vs el estimado y te da feedback con badges (pending, in_progress, done, under, over)
  • Guarda historial completo de sesiones con notas
  • Hora de Asunción, Paraguay

Stack: Flask + SQLite + HTMX. Sin npm, sin build, sin docker. Arranca con python3 app.py.


Setup (primera vez)

Requisitos

  • Python 3.9+ (necesitamos zoneinfo de stdlib)
  • Git

Pasos

# 1. Cloná el repo donde tengas tus proyectos
git clone https://github.com/<tu-org>/tracker-pentesting.git
cd tracker-pentesting

# 2. (Opcional pero recomendado) virtualenv
python3 -m venv .venv
source .venv/bin/activate

# 3. Instalá Flask
pip install -r requirements.txt

# 4. Hacé el wrapper ejecutable y agregá alias global
chmod +x tracker
echo "alias tracker='$(pwd)/tracker'" >> ~/.bashrc
source ~/.bashrc

# 5. Arrancá
tracker start
tracker open       # abre el dashboard en tu browser

La primera vez que arrancás, app.py detecta que db.sqlite3 no existe y corre el seed automáticamente. Vas a tener las 5 fases con sus 33 ítems precargados.


Comandos

tracker start       # arranca server (http://127.0.0.1:5050)
tracker stop        # lo detiene
tracker status      # chequea si corre + muestra sesión activa si hay
tracker open        # arranca + abre browser automáticamente
tracker log         # tail -f del log

Cómo usarlo en el día a día

  1. Antes de empezar a estudiar: tracker open
  2. En el dashboard: buscá el ítem en el que vas a trabajar (ej. "Hack4u: Introducción a Linux") y click en ▶ Iniciar
  3. Cronómetro empieza a tickear en vivo en el header
  4. Estudiás 1, 2, X horas — el cronómetro sigue aunque cierres el browser
  5. Cuando terminás la sesión: click ⏹ Detener, escribís nota corta opcional ("módulo bash, ejercicios 1-5")
  6. Cuando terminás un ítem completo: click ○ Marcar como completado

Significado de los badges

Badge Cuándo aparece Qué significa
pending Invertiste 0 hs (o < 5% del estimado) Aún no arrancaste
in_progress Estás entre 5% y 125% del estimado, sin marcar completado Avanzando normal
done Marcaste completado y >50% del estimado OK, terminado en tiempo razonable
under Marcaste completado con <50% del estimado Calibrá: ¿realmente lo aprendiste?
over Estás >125% del estimado y aún no terminaste Te excediste — chequeá si te trabaste
milestone Items con 0 hs estimadas (exámenes oficiales) Hito que no se cronometra

Datos personales — privacidad

Todo está en db.sqlite3 local en tu máquina. El .gitignore ya excluye:

  • db.sqlite3 y archivos auxiliares
  • db-backup-*.sqlite3
  • __pycache__/, .venv/, *.log

Nunca commitees tu db.sqlite3 — son tus horas reales y tus notas privadas.

Backup recomendado

# Snapshot manual cada semana
cp db.sqlite3 db-backup-$(date +%Y-%m-%d).sqlite3

# O cron semanal:
echo "0 20 * * 0 cp $(pwd)/db.sqlite3 $(pwd)/db-backup-\$(date +\%Y-\%m-\%d).sqlite3" | crontab -

Estructura del proyecto

tracker-pentesting/
├── app.py                  # Flask server (rutas + lógica)
├── seed.py                 # Carga el roadmap inicial en DB
├── requirements.txt        # flask
├── tracker                 # Wrapper bash (start/stop/status/open/log)
├── templates/
│   ├── base.html           # Layout + reloj live + estilos
│   ├── index.html          # Dashboard principal
│   └── sessions.html       # Historial de sesiones
├── README.md               # Este archivo
└── .gitignore

Si querés modificar el roadmap

Editá seed.py con tus items + estimados. Después:

# Borrá la DB existente (perderás historial — backupealo antes)
rm db.sqlite3
python3 seed.py

Si solo querés agregar ítems nuevos sin perder historial: editá seed.py y corré python3 seed.py — usa INSERT OR IGNORE, no toca lo existente.


Tecnología

  • Flask 3.x: server WSGI sin reloader (el wrapper bash necesita PID estable)
  • SQLite: archivo único, schema inicializado por seed.py, manejo de fechas con julianday()
  • HTMX: cargado por CDN en base.html, sin compile step
  • Zoneinfo: stdlib de Python para America/Asuncion — no requiere pytz
  • JS vanilla: cronómetro live + reloj del header. Sin frameworks, sin npm.

Total: ~400 líneas (Python + HTML + bash).


Roadmap interno

Posibles mejoras:

  • Endpoint /api/sessions.json para exportar a CSV
  • Reporte semanal automático (tracker report)
  • Comparativa con compañeros del equipo (opt-in, server compartido)
  • Dark/light theme toggle
  • Notificación cuando una sesión activa supera 4 horas continuas (recordá descansar)

VA Technology E.A.S. · Asunción, Paraguay

About

Tracker self-hosted en Flask + SQLite para seguir el roadmap de certificaciones de pentesting (eJPT → BSCP → PNPT → OSCP). Hora de Asunción, cronómetro live, comparación vs estimados.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors