SnipHub - Gestor de snippets de código con inteligencia artificial.
- /backend/src/controllers: Lógica del negocio.
- /backend/src/models: Consultas SQL directas.
- /backend/src/middlewares: Seguridad.
- /frontend/src/app: Componentes Angular.
- ✅ Autenticación JWT segura
- ✅ CRUD completo de snippets
- ✅ Snippets públicos y privados
- ✅ Explicación de código con IA (Groq/Hugging Face)
- ✅ Sistema de caché inteligente para explicaciones
- ✅ Protección contra ataques (rate limiting, brute force)
- ✅ Tests automatizados
Este manual está dirigido a los usuarios finales de la aplicación SnipHub.
- Acceda a la URL de registro:
https://sniphubeight.vercel.app/auth/register - Complete el formulario con su Nombre, Email y Contraseña.
- Tras el registro exitoso, será redirigido al Login, donde usará sus credenciales.
- Una vez iniciada la sesión, accederá al Dashboard.
- Si ya dispone de una cuenta, introduzca sus credenciales en la pantalla de inicio.
- Si introduce la contraseña incorrectamente 5 veces, su cuenta se bloqueará temporalmente por seguridad.
- Pulse "Nuevo Snippet" en la barra lateral.
- (Obligatorio) Rellene:
- Título
- Lenguaje
- Código (editor)
- (Opcional) Añada:
- Descripción
- Etiquetas (tags)
- Opción "Público" para compartirlo con la comunidad
- Pulse "Crear".
- Use la barra superior de búsqueda para encontrar snippets por título.
- Use los filtros laterales para mostrar solo:
- Favoritos
- Un lenguaje específico
- Pulse "Favoritos" en el menú lateral para ver los snippets que haya marcado.
- En el menú lateral encontrará "Snippets Públicos", donde podrá acceder a los compartidos por otros usuarios.
- Abra cualquier snippet de su biblioteca.
- Pulse "Explicar con IA".
- Espere unos segundos mientras el sistema procesa el código.
- Se mostrará una explicación detallada debajo del código.
- En el menú izquierdo, acceda a "Mi Perfil" para modificar su información personal o consultar estadísticas de uso.
Este manual está dirigido a desarrolladores que deseen instalar, mantener o desplegar el proyecto.
- Node.js: v20.x o superior
- MySQL: v8.0 o compatible (MariaDB)
- Angular CLI: v19.x (instalado globalmente: npm i -g @angular/cli).
- Git: Para clonar repositorio
- Clonar repositorio
git clone https://github.com/aitor191/sniphub.gitcd sniphub
- Configurar Backend
cd backendnpm installcp .env.example .env(Editar .env con las credenciales de MySql local y claves de API Groq)
- Configurar Base de datos
- Cree una base de datos vacía llamada sniphub_db en su MySQL local.
- El backend ejecutará automáticamente las migraciones (initDatabase.js) al iniciarse por primera vez.
- Configurar Frontend
cd ../frontendnpm install
- Ejecución
-
Backend:
cd backend && npm run dev(Puerto 4000) -
Frontend:
cd frontend && npm start(Puerto 4200) -
Acceda a http://localhost:4200.
El proyecto está preparado para desplegarse en servicios PaaS como Railway o Render.
-
Conecte su repositorio de GitHub a Railway.
-
Añada un servicio MySQL desde el dashboard de Railway.
-
Configure las Variables de Entorno en el servicio del proyecto:
- DB_HOST
- DB_USER
- DB_PASS: (Variables proporcionadas por Railway).
- JWT_SECRET: (Genere una cadena larga aleatoria).
- GROQ_API_KEY: (Su clave de API).
- Build Command:
npm install && cd frontend && npm install && npm run build -- -- configuration production
- Start Command:
-
cd backend && npm start -
Atención: El servidor Express está configurado para servir los archivos estáticos de Angular (dist/frontend) cuando está en producción, unificando frontend y backend en un solo despliegue.
POST /api/auth/register- Registro de usuarioPOST /api/auth/login- Inicio de sesiónGET /api/auth/profile- Perfil del usuario
GET /api/snippets- Listar snippets (con paginación y filtros)POST /api/snippets- Crear snippetGET /api/snippets/:id- Obtener snippetPUT /api/snippets/:id- Actualizar snippetDELETE /api/snippets/:id- Eliminar snippetPATCH /api/snippets/:id/favorite- Marcar/desmarcar favorito
GET /api/public/snippets- Listar snippets públicosGET /api/public/snippets/:id- Obtener snippet público
POST /api/ai/explain- Explicar código con IA (con caché)
Copia .env.example a .env y configura las variables:
sh
cp .env.example .envEdita .env con tus credenciales:
DB_HOST,DB_USER,DB_PASSWORD,DB_NAME: Credenciales de MySQLJWT_SECRET: Clave secreta para tokens JWT (usa una clave segura)PORT: Puerto del servidor (default: 4000)FRONTEND_URL: URL del frontend para CORS (ej: http://localhost:4200)GROQ_API_KEY/HUGGINGFACE_API_KEY: Opcionales, para explicaciones con IA
- Configura las variables de entorno en
.env - Asegúrate de que MySQL esté corriendo
- Ejecuta
npm start
Aitor R.
MIT