v0.1.0
@low-level-js/velo

Almacen de datos
en memoria

Construido desde cero en Node.js puro, sin una sola dependencia externa. Protocolo RESP sobre TCP, Clean Architecture, TTL dual y un cliente REPL interactivo.

Node.js >= 20 ESM · sin dependencias MIT License Protocolo RESP 23 comandos · Fase 1

Que es Velo

Velo es un ejercicio practico de ingenieria de sistemas de bajo nivel en JavaScript. No existe para reemplazar ningun software en produccion — existe para demostrar que es posible construir desde cero, con Node.js nativo, un servidor de almacen de datos completamente funcional.

Se conecta por red usando TCP, habla el protocolo RESP (el mismo que usan los almacenes de datos en memoria modernos), guarda los datos en estructuras Map con soporte de TTL, y expone un cliente de linea de comandos interactivo tipo REPL.

ℹ️
Autor: Joel Jaime <joel@alblandino.com> Paquete @low-level-js/velo — licencia MIT.

Caracteristicas

🌐
Servidor TCP nativo
Construido con el modulo net de Node.js. Soporta multiples conexiones simultaneas con un limite configurable.
⚡
Protocolo RESP
Parser incremental de Buffers TCP. Admite pipelining, comandos partidos en chunks y modo inline para compatibilidad con netcat.
🏗️
Clean Architecture
Dominio, Aplicacion e Infraestructura completamente separados. Facil de extender con nuevos comandos o tipos de datos.
⏱️
TTL dual
Expiracion lazy en cada acceso (O(1)) mas un sweep periodico en segundo plano para liberar memoria de claves huerfanas.
🗄️
16 bases de datos
Igual que los almacenes de datos clasicos: hasta 16 namespaces independientes seleccionables con SELECT.
💻
REPL interactivo
Cliente de linea de comandos con historial, colores por tipo de respuesta, prompt dinamico y comandos locales.

Inicio rapido

Clonar el repositorio e instalar

Solo requiere Node.js >= 20. No hay npm install porque no existen dependencias.

Iniciar el servidor

Por defecto escucha en 127.0.0.1:6380. Configurable en el .env.

Abrir el cliente en otra terminal

El REPL se conecta automaticamente al host y puerto configurados.

Enviar tu primer comando

El servidor responde en milisegundos.

bash
# Terminal 1 — servidor
make server

# Terminal 2 — cliente
make client
repl
velo 127.0.0.1:6380[0]> PING
PONG

velo 127.0.0.1:6380[0]> SET usuario "joel" EX 3600
OK

velo 127.0.0.1:6380[0]> GET usuario
"joel"

velo 127.0.0.1:6380[0]> TTL usuario
(integer) 3599

velo 127.0.0.1:6380[0]> INCR visitas
(integer) 1

velo 127.0.0.1:6380[0]> MSET a 1 b 2 c 3
OK

velo 127.0.0.1:6380[0]> MGET a b c z
1) "1"
2) "2"
3) "3"
4) (nil)

velo 127.0.0.1:6380[0]> SELECT 1
OK

velo 127.0.0.1:6380[1]> DBSIZE
(integer) 0

Stack tecnico

Velo no tiene dependencias externas. Todo el stack usa exclusivamente la libreria estandar de Node.js.

ModuloUso en Velo
netServidor TCP y conexiones de cliente
fsLectura del archivo .env con readFileSync
readlineREPL interactivo del cliente con historial de 200 entradas
eventsBase EventEmitter del parser RESP
pathResolucion de rutas para localizar el .env
urlfileURLToPath para obtener __dirname en ESM
✦
Zero dependencies El archivo package.json tiene las secciones dependencies y devDependencies vacias. No hay que correr npm install.