Proyecto 07 — Sistema de Gestión con CRUD

Tinta
Viva

Proyecto
Personal
Rol
Desarrollo fullstack (backend + frontend + BD)
Código
Público en GitHub
Estado
En producción propia

Reto → Solución → Resultado

01
El reto

Diseñar y construir desde cero un sistema de intercambio de libros entre usuarios, con gestión completa desde un panel de administración — no un simple formulario, sino un CRUD real sobre una base de datos relacional, con reglas de negocio propias: estados de disponibilidad de cada libro, roles de usuario y validación de solicitudes.

02
La solución

Modelé tres tablas relacionadas en SQLite (libros, usuarios internos, solicitudes de intercambio) con claves foráneas y restricciones CHECK para controlar los estados válidos. Implementé el CRUD completo de libros — crear, leer, editar y dar de baja — desde el panel de administración, junto con la gestión de solicitudes de intercambio y autenticación con contraseñas hasheadas, nunca en texto plano.

03
El resultado

Aplicación funcional desplegada en mi propio hosting, con el flujo completo probado de punta a punta: un usuario solicita un intercambio desde el catálogo público, y el administrador lo gestiona desde el panel interno. Código completo público en GitHub para quien quiera revisarlo.

Lo que hice
concretamente

Diseño de la base de datos y CRUD

Diseñé el esquema en SQLite desde cero: la tabla libros con estados de conservación y disponibilidad controlados por restricciones CHECK, la tabla usuarios_internos con roles diferenciados (administrador / colaborador), y solicitudes_intercambio conectada a ambas mediante claves foráneas.

Sobre ese esquema construí el CRUD completo de libros: alta y edición desde el panel de administración, listado con todos los campos relevantes, y baja lógica cambiando el estado en vez de borrar el registro, para no perder el historial.

Catálogo de libros Tinta Viva
Ver código en GitHub →
Panel de administración Tinta Viva

Autenticación y gestión de solicitudes

El acceso al panel usa password_hash() / password_verify() de PHP, así que ninguna contraseña se guarda ni se compara en texto plano. Cada solicitud de intercambio pasa por un flujo de estados (pendiente, en contacto, aprobada, rechazada, cerrada) que el administrador gestiona desde ver_solicitudes.php.

Aquí tienes el flujo completo en vídeo, desde la solicitud en el catálogo hasta su gestión en el panel de administración:

Qué se consiguió

↑
En producción propia

Desplegada de principio a fin por mí misma: base de datos, backend y frontend, sin depender de ningún framework de administración externo.

✓
CRUD completo y funcional

Alta, edición, listado y baja de libros probados de punta a punta, con reglas de integridad en la propia base de datos.

◎
Código abierto y verificable

Repositorio público en GitHub — cualquiera puede revisar cómo está construido, no solo el resultado final.

Tecnologías usadas

PHP SQLite CRUD HTML5 CSS3 Git GitHub FTP

Diseñando y desarrollando
experiencias digitales

Frontend, email development y proyectos web desarrollados para clientes y entornos reales.