Kanban board con persistencia SQLite, drag-and-drop entre columnas (dnd-kit) y tracking del tiempo que cada tarjeta pasa en cada columna. Frontend Vite + React + Mantine v9 embebido en el binario Go.
service
kanban
web
dnd-kit
mantine
sqlite
time-tracking
random_hex_id_go_core
sqlite_open_go_infra
spa_handler_go_infra
http_router_go_infra
http_serve_go_infra
http_middleware_chain_go_infra
http_cors_middleware_go_infra
http_logger_middleware_go_infra
http_json_response_go_infra
http_error_response_go_infra
http_parse_body_go_infra
http_session_cookie_middleware_go_infra
password_hash_go_infra
password_verify_go_infra
session_create_go_infra
session_cleanup_go_infra
net/http + vite + react + mantine + dnd-kit
main.go
apps/kanban
Arquitectura
Single-binary: backend Go con frontend Vite embebido. SQLite local con tres tablas (columns, cards, card_column_history) y endpoints REST.
IDs de columnas y tarjetas: 16 chars hex (8 bytes random) via random_hex_id_go_core.
El historial conserva la cronologia exacta — incluso despues de cerrar y reabrir el server, los tiempos vivos siguen contando desde entered_at.
El borrado de columna hace CASCADE: las tarjetas se borran y su historial tambien. Si se quiere preservar el historial al borrar, deberia archivarse en lugar de borrar.