Foto de Jair Zuñiga

Jair Zuñiga

full-stack · Flutter · Laravel · Vue · Node.js

Disponible para proyectos

Construyo, instalo y mantengo sistemas de software de producción — del Back-end al Front-end. Más de cuatro años entregando aplicaciones móviles, plataformas web y APIs para gobierno, salud y clientes privados.

4+ años de experiencia 15+ sistemas en producción gobierno · salud · educación
~/skills --stack-completo

Skills & Tecnologías

Flutter
Laravel
Node.js
React
Vue.js
Docker
MongoDB
MySQL
TypeScript
Bootstrap 5
Moodle
Python
Django
PHP
PostgreSQL
JavaScript
Angular
HTML5
Java

Spec-Driven Development + IA

Así construyo software de producción: la especificación es el contrato, la IA acelera la implementación y cada entrega pasa por verificación real antes de desplegarse. Sin improvisación, sin errores en producción.
01 · SPEC

Especificación como contrato

Cada módulo nace como un spec versionado en git: requisitos, modelo de datos y criterios de aceptación antes de la primera línea de código.

specs/*.md en el repo
02 · IA

Generación asistida por IA

La IA implementa contra el spec bajo supervisión senior: cada diff se revisa línea por línea antes de integrarse al proyecto.

humano siempre en el loop
03 · CÓDIGO

Código de producción

SOLID, validación estricta y seguridad por defecto: sin mass assignment, sin XSS, sin credenciales en el repositorio.

clean code + seguridad
04 · VERIFICACIÓN

Verificación real

Smoke tests sobre base de datos real, linting, auditoría de seguridad y criterios de aceptación comprobados antes de cada despliegue.

cero fallos en producción
0%
de las features nacen de un spec
0
credenciales expuestas en repositorios
+0
sistemas desplegados y en producción
specs/02-contactos.md
## Requerimiento
Transición de estado validada:
new → read → replied → archived

## Criterio de aceptación
 Transición inválida responde 422
 read_at se estampa la 1ª vez
ContactController.php
// implementado y verificado contra el spec
+ if (! $contact->canTransitionTo($target)) {
+     return response()->json([...], 422);
+ }
+ $contact->read_at ??= now();
-->
Color Switcher