Skip to content

JDMMonsalve/Password-Manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔐 Vault Seguro — Backend

Backend de una aplicación de gestión de contraseñas con enfoque en seguridad y privacidad.

Este proyecto sigue el principio de zero-knowledge, lo que significa que el servidor nunca tiene acceso a las contraseñas en texto plano. Toda la información sensible es cifrada en el cliente antes de enviarse.


🚀 Cómo ejecutar el servidor

1. Instalar Node.js

Descarga Node.js desde: https://nodejs.org Instala la versión LTS.

Verifica la instalación:

node --version
npm --version

2. Abrir la terminal

Ubícate dentro de la carpeta del backend:

cd backend

3. Instalar dependencias

npm install

4. Configurar variables de entorno

Crea un archivo .env en la raíz del proyecto:

PORT=3000
JWT_SECRET=tu_clave_super_segura
JWT_EXPIRES_IN=cuanto_tiempo_estara_disponible_la_cuenta
DB_FILE=nombre_dela_base_de_datos 

🔐 Sobre JWT_SECRET

  • Es la clave que firma los tokens de autenticación
  • Debe ser larga, aleatoria y privada
  • Nunca la subas a GitHub

Puedes generar una segura con:

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

5. Ejecutar el servidor

Modo normal:

npm start

Modo desarrollo:

npm run dev

6. (Alternativa) Usar Docker

Opción A — Build local:

docker-compose up --build

Opción B — Imagen ya empaquetada (GHCR):

git clone https://github.com/JDMMonsalve/Password-Manager
cd Password-Manager
# Crea tu .env (o copia el que tengas) en la raíz del proyecto
docker pull ghcr.io/jdmmonsalve/password-manager:latest
docker run -p 3000:3000 --env-file .env ghcr.io/jdmmonsalve/password-manager

⚠️ El .env debe estar en la raíz del proyecto. Sin él la imagen no podrá iniciar. Descargar .env desde Google Drive

Salida esperada:

📦 Base de datos conectada: /ruta/vault.db
✅ Servidor corriendo en http://localhost:3000

📡 Endpoints

Método Ruta Descripción Auth
GET / Frontend (index.html)
GET /api/health Estado del servidor
POST /api/auth/register Registro
POST /api/auth/login Login (JWT)
GET /api/vault Obtener datos cifrados
PUT /api/vault Guardar datos cifrados

🧠 Cómo funciona

  1. El usuario se registra

  2. La contraseña se hashea con bcrypt

  3. En login:

    • Se valida la contraseña
    • Se genera un JWT
  4. El frontend:

    • Cifra los datos con AES-256-GCM
    • Envía información ya protegida
  5. El backend:

    • Solo almacena datos cifrados
    • Nunca accede a contraseñas reales

📁 Estructura

Password Manager
│
├──index.html
├──script.js
├──styles.css
├──Dockerfile
├──docker-compose.yml
├──README.md
├──.gitignore
│
├──.github/workflows/
│   └── docker-publish.yml
│
├──backend/
   ├── server.js
   ├── app.js
   ├── db.js
   ├── auth.js
   ├── vault.js
   ├── middleware.js
   ├── .env
   └── package.json

🔐 Tecnologías

  • bcrypt → Hash de contraseñas
  • JWT → Autenticación
  • AES-256-GCM → Cifrado del lado del cliente
  • SQLite → Base de datos

🧪 Pruebas

Registro

POST http://localhost:3000/api/auth/register
{
  "nombre": "Juan",
  "email": "juan@email.com",
  "password": "123456789"
}

Login

POST http://localhost:3000/api/auth/login
{
  "email": "juan@email.com",
  "password": "123456789"
}

Obtener vault

GET http://localhost:3000/api/vault

Header:

Authorization: Bearer TU_TOKEN

🥷 JDM

Proyecto mini completo para uso personal espero lo disfruten ATT: JDM

About

Pagina Local que sirve para que tu de manera mas segura guardes tus contraseñas con confianza ya que se guardaran dentro de tu computador sin estar expuestas a paginas o navegadores sin seguridad. Este miniproyecto usa metodos de ciberseguridad

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors