Proyectos
Proyecto 2025

Kiosco — Sistema de Control de Consumo Escolar

Gestiona consumos, pagos y deudas de estudiantes en kioscos escolares con este sistema web SSR rápido y eficiente en Go.

Go PostgreSQL TailwindCSS (CLI) HTML Templates
Ver repositorio
Vista Principal — Control Semanal
Vista Principal — Control Semanal
Edición de Consumos Diarios
Edición de Consumos Diarios

Resumen

Kiosco permite llevar el control semanal de consumos por estudiante, registrar pagos, calcular deudas en tiempo real y administrar días no laborables. Es un sistema usado por kioscos escolares que necesitan rapidez, estabilidad y cálculos precisos sin depender de frameworks o frontends complejos.

Vista semanal completa con consumos por estudiante (semana actual o seleccionada).
Filtro por grado (Primaria / Secundaria).
Gestión de consumos: agregar, modificar y visualizar productos consumidos por día.
Gestión de pagos con historial detallado.
Cálculo automático de deuda: Deuda anterior, Subtotal semanal, Pagos y descuentos, Deuda total en tiempo real.
Edición diaria optimizada para ventas rápidas.
Configuración de días no laborables.
Interfaz responsiva con TailwindCSS (CLI).
SSR puro usando .tmpl (sin JS frameworks).

Problema

Los kioscos escolares suelen gestionar consumos y pagos en cuadernos o Excel, lo que genera: Cálculos manuales propensos a errores, Falta de visibilidad semanal o histórica, Procesos lentos durante el horario de recreo, Dificultad para gestionar días no laborables, Problemas para calcular deudas de semanas anteriores.

Solución

Kiosco automatiza todo el flujo:

  • Calcula deudas semanal/anual automáticamente.
  • Registra en segundos consumos o pagos.
  • Maneja filtros por grado/alumno/fecha.
  • Optimiza cálculos de múltiples estudiantes mediante batch SQL.
  • UI simple diseñada estrictamente para velocidad de venta.
  • Implementación robusta de errores y logging.

Arquitectura

Arquitectura basada en separación por capas, siguiendo un estilo MVC-like, con SSR usando plantillas HTML compiladas.

{
  "cmd/kiosco/main.go": "entrypoint",
  "internal": {
    "config": "Variables de entorno",
    "db": "Pool PostgreSQL",
    "models": "Modelos Go",
    "repositories": "Queries SQL optimizadas",
    "services": "Lógica de negocio (cálculo de deuda)",
    "controllers": "Manejo de rutas HTTP + templates",
    "router": "Enrutamiento HTTP",
    "middleware": "Logger y recuperación de panics",
    "views": "Plantillas .tmpl (SSR)",
    "utils": "Funciones auxiliares"
  }
}

Decisiones de diseño

Go stdlib (sin frameworks) para máximo rendimiento.
PostgreSQL optimizado con más de 10 índices.
Templates HTML compilados una sola vez.
Sin ORM: SQL puro para máximo control.
Batch queries para cálculos semanales.

Rendimiento

Base de datos

  • 10+ índices optimizados
  • Índices compuestos: IdEstudiante + Fecha
  • Índices parciales: Estudiantes(EstaActivo=true)
  • Batch queries para semanas completas
  • Pool de conexiones reducido para evitar saturación

Backend

  • Sin frameworks → overhead mínimo
  • Templates compilados una vez al inicio
  • Iteraciones con Pre-alloc en slices/maps
  • Prepared statements persistentes
50-70%
Mejora en consultas
<100
Tiempo respuesta (local)

Rutas de la API

Método Ruta
GET /
POST /registrar-consumo
POST /registrar-pago
GET /editar-consumos
POST /guardar-consumos-dia
GET /editar-pagos
POST /eliminar-pago

Lecciones aprendidas

1

El SQL puro con índices adecuados supera ampliamente cualquier ORM.

2

El SSR con Go es extremadamente rápido y estable.

3

Batch queries reducen drásticamente el tiempo de cálculo semanal.

4

La simplicidad del stack facilita debugging y despliegue.

Ver más proyectos