Mike (@mikerb95) CodeByMike

18 requerimientos no funcionales agrupados por categoría de calidad (alineadas a ISO/IEC 25010): seguridad, confiabilidad/disponibilidad, eficiencia de desempeño, mantenibilidad y usabilidad/accesibilidad. Filtra por estado o prioridad, o busca por ID, título o ruta.

18
Total req. no funcionales
16
Implementados
1
Parciales
1
Planeados
89% en producción
Estado
Prioridad

Seguridad

5/5
RNF-01

Cifrado de secretos en reposo

Implementado

Todo secreto de servicio (API keys, tokens) se almacena cifrado con AES-256-GCM; nunca en texto plano en la base de datos.

Prioridad alta src/lib/crypto.ts
RNF-02

Autorización por allowlist

Implementado

Solo los logins de GitHub explícitamente permitidos obtienen sesión de administrador, sin excepción.

Prioridad alta src/lib/auth.ts
RNF-03

Fail-open en enforcement de seguridad

Implementado

Cualquier fallo en blocklist, rate limiting o sensor deja pasar el request; el enforcement nunca puede tumbar el sitio.

Prioridad alta src/middleware.ts
RNF-04

Sin bloqueos eternos

Implementado

Todo bloqueo de IP y todo chaos flag tiene TTL obligatorio; el sistema se autocorrige sin intervención manual.

Prioridad media blocked_ips.expiresAt chaos_flags.expiresAt
RNF-05

Minimización de PII en la vitrina pública

Implementado

La IP se enmascara/hashea antes de exponerse fuera del panel admin; Web Vitals no capturan datos personales.

Prioridad media security_events.ipHash

Confiabilidad y disponibilidad

5/5
RNF-06

Idempotencia de pagos

Implementado

Un mismo idempotencyKey nunca genera dos cobros, incluso ante doble clic o reintento de red.

Prioridad alta payments.idempotencyKey
RNF-07

Máquina de estados sin retrocesos

Implementado

Los estados terminales de un pago (approved/declined/error/voided) nunca retroceden ante webhooks fuera de orden.

Prioridad alta src/lib/payments.ts
RNF-08

Rollback automático de deploy

Implementado

Si el health check post-deploy falla, el pipeline revierte automáticamente a la última versión saludable.

Prioridad alta ci_runs.healthOk
RNF-09

Objetivo de disponibilidad (SLO)

Implementado

Cada servicio monitoreado puede evaluarse contra un objetivo configurable (por defecto 99.5% en ventana de 30 días).

Prioridad media src/lib/slo.ts
RNF-10

Rate limiting resistente a redeploys

Implementado

El estado del limitador de tasa persiste en base de datos, no se resetea con cada despliegue.

Prioridad media rate_limit_buckets

Eficiencia de desempeño

2/3
RNF-11

Latencia del sensor de seguridad

Implementado

La clasificación de cada request (regex/lookup en memoria) no debe añadir latencia perceptible; la escritura es fire-and-forget.

Prioridad alta src/lib/security/sensor.ts
RNF-12

Core Web Vitals dentro de "good"

Parcial

LCP, INP y CLS del sitio público deben mantenerse en la banda "good" según el p75 medido en producción.

Prioridad media web_vitals
RNF-13

Cache de lecturas frecuentes

Implementado

Blocklist y flags de chaos se leen con cache en memoria (30s) para no golpear la base de datos en cada request.

Prioridad media src/lib/security/blocklist.ts

Mantenibilidad

3/3
RNF-14

Datos de documentación como código

Implementado

Requerimientos, casos de uso e iteraciones se definen en TypeScript tipado, no en documentos externos desincronizables.

Prioridad media src/data/documentacion.ts
RNF-15

Registro de decisiones de arquitectura

Implementado

Cada decisión técnica relevante por proyecto queda documentada con contexto, alternativas y consecuencias (ADR).

Prioridad media project_adrs
RNF-16

Retención y purga de datos operativos

Implementado

Los checks de monitoreo y eventos de seguridad crudos se purgan pasados 90 días para no inflar el almacenamiento.

Prioridad baja monitor_checks security_events

Usabilidad y accesibilidad

1/2
RNF-17

Panel operable desde móvil

Implementado

El panel admin y sus subpáginas son usables en viewport móvil (drawer de navegación colapsable).

Prioridad media src/layouts/AdminLayout.astro
RNF-18

Auditoría de accesibilidad automatizada

Planeado

Cada PR corre una auditoría automática de accesibilidad (axe/lighthouse) sobre las páginas públicas.

Prioridad media