https://github.com/matiassenia/backrocketbot
API de autenticación backend construida con Node.js, Express, Prisma y JWT. Permite registro, inicio de sesión, y acceso a rutas protegidas mediante validación de tokens. Incluye base de datos SQLite para almacenamiento de usuarios.
https://github.com/matiassenia/backrocketbot
api api-rest authentication backend bcrypt dotenv expressjs javascript jwt nodejs postman prisma programming rest-api sqlite
Last synced: about 10 hours ago
JSON representation
API de autenticación backend construida con Node.js, Express, Prisma y JWT. Permite registro, inicio de sesión, y acceso a rutas protegidas mediante validación de tokens. Incluye base de datos SQLite para almacenamiento de usuarios.
- Host: GitHub
- URL: https://github.com/matiassenia/backrocketbot
- Owner: matiassenia
- Created: 2024-12-20T23:58:29.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-12-23T15:11:56.000Z (over 1 year ago)
- Last Synced: 2025-05-18T19:39:35.190Z (11 months ago)
- Topics: api, api-rest, authentication, backend, bcrypt, dotenv, expressjs, javascript, jwt, nodejs, postman, prisma, programming, rest-api, sqlite
- Language: JavaScript
- Homepage:
- Size: 1.06 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Proyecto de Construcción de API
## Autenticación con Node.js, Express y Prisma
Este proyecto implementa una API REST para la autenticación de usuarios, utilizando Node.js, Express, Prisma y JSON Web Tokens (JWT). La API permite registrar usuarios, iniciar sesión y obtener el perfil del usuario autenticado.
---
## Tecnologías Utilizadas
- **Node.js**: Entorno de ejecución para JavaScript.
- **Express**: Framework para crear aplicaciones web y APIs.
- **Prisma**: ORM para interactuar con la base de datos.
- **bcryptjs**: Biblioteca para encriptar contraseñas.
- **jsonwebtoken (JWT)**: Manejo de tokens para autenticación.
- **dotenv**: Manejo de variables de entorno.
---
## Prerrequisitos
- **Node.js**: Versión 14.x o superior.
- **Base de datos**: Se utiliza SQLite para desarrollo.
---
## Instalación y Configuración Inicial
```bash
# Clonar el repositorio
$ git clone https://github.com/matiassenia/backrocketbot.git
$ cd backrocketbot
# Instalar las dependencias
$ npm install
# Configurar las variables de entorno
# Crear un archivo .env y definir las siguientes variables:
# DATABASE_URL="file:./dev.db"
# JWT_SECRET="contrasenasegura1234"
# Configurar la base de datos
$ npx prisma migrate dev --name init
# Iniciar el servidor
$ npm run dev
```
El servidor estará disponible en `http://localhost:3000`.

---
## Endpoints
### **1. Registro de Usuario**
- **Ruta**: `/api/register`
- **Método**: `POST`
- **Cuerpo de la Solicitud**:
```json
{
"email": "matias@rocketbot.com",
"password": "qwerty1234",
"name": "matiaspararocketbot"
}
```

- **Respuesta de Éxito**:
```json
{
"message": "Usuario creado con éxito",
"user": {
"id": 1,
"email": "matias@rocketbot.com",
"name": "matiaspararocketbot"
}
}
```
### **2. Inicio de Sesión**
- **Ruta**: `/api/login`
- **Método**: `POST`
- **Cuerpo de la Solicitud**:
```json
{
"email": "matias@rocketbot.com",
"password": "qwerty1234"
}
```
- **Respuesta de Éxito**:
```json
{
"message": "Login exitoso",
"token": "eltoken"
}
```

### **3. Perfil de Usuario**
- **Ruta**: `/api/profile`
- **Método**: `GET`
- **Encabezado de Autorización**:
```
Authorization (En Postman):
En la pestaña Headers, agregar un encabezado con:
Key: Authorization
Value: Bearer (reemplazar con el token generado)
```

---
## Scripts Disponibles
```bash
# Iniciar el servidor en modo desarrollo con nodemon
$ npm run dev
# Iniciar el servidor en modo producción
$ npm start
```
---
## Notas
1. Asegurarse de tener una base de datos configurada y accesible desde el archivo `.env`.
2. Probar los endpoints usando herramientas como Postman.
3. Personalizar el esquema de Prisma en el archivo `prisma/schema.prisma` según las necesidades.
```prisma
model User {
id Int @id @default(autoincrement())
email String @unique
password String
name String
createdAt DateTime @default(now())
}
```
4. Cambiar el valor de JWT_SECRET a algo único y difícil.
---