Un backend robusto y escalable construido con Node.js, Express y PostgreSQL que proporciona APIs para autenticación, gestión de usuarios, tareas y servicios meteorológicos.
El backend está desplegado en Render y está disponible en: https://test-ally-backend.onrender.com/
- Autenticación JWT: Sistema de login y registro seguro
- Gestión de Usuarios: CRUD completo con paginación
- Sistema de Tareas: API para gestión de tareas
- Servicios Meteorológicos: Integración con APIs externas para clima y datos de países
- Base de Datos PostgreSQL: Configurada con Sequelize ORM
- Middleware de Autenticación: Protección de rutas con JWT
- CORS habilitado: Para integración con frontends
- Variables de Entorno: Configuración segura con dotenv
- Node.js (versión 14 o superior)
- PostgreSQL
- npm o yarn
-
Clona el repositorio
git clone <url-del-repositorio> cd ally-backend
-
Instala las dependencias
cd Backend npm install -
Configura las variables de entorno
Crea un archivo
.enven la carpetaBackendcon las siguientes variables:PORT=3000 DATABASE_URL=postgresql://usuario:contraseña@localhost:5432/nombre_base_datos JWT_SECRET=tu_clave_secreta_jwt
-
Configura la base de datos
npx sequelize-cli db:migrate npx sequelize-cli db:seed:all
-
Inicia el servidor
npm start
El servidor estará disponible en http://localhost:3000
ally-backend/
├── Backend/
│ ├── config/
│ │ └── config.js
│ ├── migrations/
│ │ ├── 20250617225517-create-users.js
│ │ └── 20250618190509-create-tasks.js
│ ├── models/
│ │ └── index.js
│ ├── seeders/
│ │ └── 20250617230528-demo-user.js
│ ├── src/
│ │ ├── app.js
│ │ ├── config/
│ │ │ ├── database.js
│ │ │ └── passport.js
│ │ ├── controllers/
│ │ │ ├── auth.controller.js
│ │ │ ├── user.controller.js
│ │ │ └── weather.controller.js
│ │ ├── middlewares/
│ │ │ └── authMiddleware.js
│ │ ├── models/
│ │ │ ├── index.js
│ │ │ └── user.js
│ │ ├── providers/
│ │ │ ├── jwt.provider.js
│ │ │ └── user.provider.js
│ │ ├── routes/
│ │ │ ├── auth.routes.js
│ │ │ ├── tasks.routes.js
│ │ │ ├── user.routes.js
│ │ │ └── weather.routes.js
│ │ ├── services/
│ │ │ ├── auth.service.js
│ │ │ ├── user.service.js
│ │ │ └── weather.service.js
│ │ └── utils/
│ │ └── timezones.json
│ ├── index.js
│ └── package.json
└── README.md
POST /login- Iniciar sesiónPOST /register- Registrar nuevo usuario
GET /users- Obtener usuarios con paginación (requiere autenticación)GET /allUsers- Obtener todos los usuarios (requiere autenticación)
GET /tasks- Obtener lista de tareas (requiere autenticación)
GET /weather/:city- Obtener información meteorológica de una ciudad (requiere autenticación)GET /country-data/:country- Obtener datos de un país (requiere autenticación)
- Node.js - Runtime de JavaScript
- Express.js - Framework web
- PostgreSQL - Base de datos relacional
- Sequelize - ORM para Node.js
- JWT - Autenticación basada en tokens
- Passport.js - Middleware de autenticación
- bcrypt - Encriptación de contraseñas
- CORS - Cross-Origin Resource Sharing
- Axios - Cliente HTTP para APIs externas
npm start- Inicia el servidor en modo desarrollo con nodemonnpm test- Ejecuta las pruebas (pendiente de implementar)
El sistema utiliza JWT (JSON Web Tokens) para la autenticación. Para acceder a rutas protegidas, incluye el token en el header de autorización:
Authorization: Bearer <tu_token_jwt>
El proyecto utiliza PostgreSQL con Sequelize como ORM. Las migraciones están configuradas para crear las tablas necesarias:
- Users: Almacena información de usuarios
- Tasks: Almacena las tareas del sistema
Asegúrate de configurar las siguientes variables en tu archivo .env:
PORT: Puerto del servidor (por defecto: 3000)DATABASE_URL: URL de conexión a PostgreSQLJWT_SECRET: Clave secreta para firmar JWT
El backend está desplegado en Render y está disponible en: https://test-ally-backend.onrender.com/
Todos los endpoints están disponibles en la URL de producción. Por ejemplo:
https://test-ally-backend.onrender.com/loginhttps://test-ally-backend.onrender.com/usershttps://test-ally-backend.onrender.com/taskshttps://test-ally-backend.onrender.com/weather/mexico
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto está bajo la Licencia ISC.
Desarrollado como parte del proyecto Ally Backend.