Una API segura para gestionar contraseñas personales, construida con Django REST Framework y JWT.
- ✅ Autenticación segura con JWT
- ✅ Cifrado de contraseñas
- ✅ Gestión de múltiples contraseñas
- ✅ Documentación OpenAPI/Swagger
- ✅ Generador de contraseñas seguras
- Python 3.13+
- PostgreSQL
- pip
- Django 5.2
- Django REST Framework
- SimpleJWT
- cryptography
- psycopg2-binary
- drf-spectacular
- Clonar el repositorio
git clone <url-del-repositorio>
cd password-manager- Crear y activar entorno virtual
python -m venv venv
# En Windows
venv\Scripts\activate
# En Unix
source venv/bin/activate- Instalar dependencias
pip install django djangorestframework djangorestframework-simplejwt drf-spectacular cryptography psycopg2-binary-
Configurar la base de datos
- Crear una base de datos PostgreSQL
- Actualizar la configuración en
src/passmanager/settings.py
-
Aplicar migraciones
cd src
python manage.py migrate- Ejecutar el servidor de desarrollo
python manage.py runserver- POST
/api/auth/register/: Registrar nuevo usuario - POST
/api/auth/login/: Iniciar sesión - POST
/api/auth/logout/: Cerrar sesión
- GET/POST
/api/passwords/: Listar/Crear contraseñas - GET/PUT/DELETE
/api/passwords/{id}/: Ver/Actualizar/Eliminar contraseña - GET
/api/passwords/generate/: Generar contraseña segura
La documentación completa de la API está disponible en:
- Swagger UI:
/api/docs/ - OpenAPI Schema:
/api/schema/
- Las contraseñas se almacenan cifradas usando Fernet (cryptography)
- Autenticación mediante tokens JWT
- Blacklist de tokens para logout seguro
- Validación de datos en todas las operaciones
password-manager/
├── src/
│ ├── accounts/ # App de autenticación
│ ├── vaults/ # App de gestión de contraseñas
│ ├── passmanager/ # Configuración principal
│ └── manage.py
├── README.md
└── requirements.txt
python manage.py testpython manage.py spectacular --file schema.yml- Cifrado simétrico para las contraseñas almacenadas
- Tokens JWT con rotación
- Validación de entrada en todas las operaciones
- Permisos basados en usuario para acceso a datos
- CORS configurado para seguridad
- Rate limiting para prevenir ataques
curl -X POST http://localhost:8000/api/auth/register/ \
-H "Content-Type: application/json" \
-d '{"username":"usuario","email":"[email protected]","password":"contraseña123"}'curl -X POST http://localhost:8000/api/auth/login/ \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","password":"contraseña123"}'curl -X POST http://localhost:8000/api/passwords/ \
-H "Authorization: Bearer <tu-token>" \
-H "Content-Type: application/json" \
-d '{"title":"Mi Cuenta","username":"usuario","password":"contraseña","notes":"notas opcionales"}'- Fork el proyecto
- Crear una rama (
git checkout -b feature/AmazingFeature) - Commit los cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abrir un Pull Request
Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE.md para detalles