Sistema completo de gestión de tareas con autenticación JWT, construido con FastAPI y React + TypeScript.
- FastAPI - Framework web moderno para Python
- SQLAlchemy - ORM para base de datos
- PostgreSQL - Base de datos relacional
- JWT - Autenticación con tokens
- Bcrypt - Hash de contraseñas
- React 18 - Librería UI
- TypeScript - Tipado estático
- Vite - Build tool
- TailwindCSS - Framework CSS
- React Router - Enrutamiento
- Axios - Cliente HTTP
- React Hook Form + Zod - Validación de formularios
- React Hot Toast - Notificaciones
- Python 3.9+
- Node.js 18+
- Docker y Docker Compose
- Git
git clone <tu-repositorio>
cd sistema.gestion-fastIniciar PostgreSQL con Docker:
docker-compose up -dEsto creará:
- Base de datos PostgreSQL en puerto 5432
- Usuario admin con contraseña admin123
- Tablas y datos de ejemplo
cd backend
# Crear entorno virtual
python -m venv venv
# Activar entorno virtual (Windows)
venv\Scripts\activate
# Activar entorno virtual (Linux/Mac)
source venv/bin/activate
# Instalar dependencias
pip install -r requirements.txt
# El archivo .env ya está configurado con valores por defectocd frontend
# Instalar dependencias
npm installcd backend
venv\Scripts\activate # Windows
uvicorn main:app --reload --host 0.0.0.0 --port 8000El backend estará disponible en: http://localhost:8000
Documentación API: http://localhost:8000/docs
cd frontend
npm run devEl frontend estará disponible en: http://localhost:5173
El sistema incluye usuarios de prueba:
Email: admin@system.com
Password: admin123
Rol: admin
Email: usuario@test.com
Password: admin123
Rol: usuario
POST /auth/register- Registrar nuevo usuarioPOST /auth/login- Iniciar sesión
GET /usuarios/me- Obtener usuario actualGET /usuarios/{id}- Obtener usuario por ID
GET /tareas- Listar tareas del usuarioGET /tareas/{id}- Obtener tarea específicaPOST /tareas- Crear nueva tareaPUT /tareas/{id}- Actualizar tareaDELETE /tareas/{id}- Eliminar tarea
sistema.gestion-fast/
├── backend/
│ ├── config/
│ │ └── database.py # Configuración de BD
│ ├── models/
│ │ ├── usuario.py # Modelo Usuario
│ │ └── tarea.py # Modelo Tarea
│ ├── routers/
│ │ ├── auth.py # Rutas de autenticación
│ │ ├── usuario.py # Rutas de usuarios
│ │ └── tarea.py # Rutas de tareas
│ ├── schemas/
│ │ ├── usuario.py # Schemas Pydantic Usuario
│ │ └── tarea.py # Schemas Pydantic Tarea
│ ├── utils/
│ │ ├── hashing.py # Hash de contraseñas
│ │ └── oauth2.py # JWT y autenticación
│ ├── .env # Variables de entorno
│ ├── main.py # Aplicación principal
│ ├── init.sql # Script de inicialización
│ └── requirements.txt # Dependencias Python
├── frontend/
│ ├── src/
│ │ ├── components/ # Componentes React
│ │ ├── context/ # Context API
│ │ ├── hooks/ # Custom hooks
│ │ ├── pages/ # Páginas
│ │ ├── services/ # Servicios API
│ │ ├── types/ # Tipos TypeScript
│ │ ├── App.tsx # Componente principal
│ │ └── main.tsx # Punto de entrada
│ ├── package.json # Dependencias Node
│ ├── vite.config.ts # Configuración Vite
│ └── tailwind.config.js # Configuración Tailwind
├── docker-compose.yml # Configuración Docker
└── README.md # Este archivo
- Contraseñas hasheadas con bcrypt
- Autenticación JWT con tokens de 30 minutos
- CORS configurado para desarrollo
- Validación de datos con Pydantic y Zod
- Variables de entorno para secretos
Verificar que Docker esté corriendo:
docker psReiniciar contenedor:
docker-compose down
docker-compose up -dLimpiar caché y reinstalar:
cd frontend
rm -rf node_modules package-lock.json
npm installVerificar entorno virtual activado:
cd backend
venv\Scripts\activate # Windows
pip install -r requirements.txtEste proyecto es de código abierto.
Para contribuir al proyecto:
- Fork el repositorio
- Crea una rama:
git checkout -b feature/nueva-funcionalidad - Commit cambios:
git commit -am 'Agregar funcionalidad' - Push a la rama:
git push origin feature/nueva-funcionalidad - Crear Pull Request
Para preguntas o soporte, contactar al desarrollador.