Los usuarios podrán registrarse en la aplicación, iniciar sesión y acceder a su área personal. Dentro de su área, podrán postear sus ideas. También podrán ver los posts de usuarios y darles o quitarles like a los mismos. El backend de esta API está desplegado en Enlace a Zeabur
Este proyecto requería una API funcional conectada a una base de datos con dos Documentos MongoDB llamados User y Post
- Clonar el repositorio
- Instalamos las dependencias
$ npm install
- Creamos una conexión con MongoAtlas
- Conectamos nuestro repositorio en Mongo Compass con la base de datos de MongoAtlas
- Ejecutamos los seeders
$ npm run seeder
- Ponemos en funcionamiento el servidor
$ npm run dev
Endpoints
-
AUTH
-
REGISTER
POST https://h8ter.zeabur.app/api/auth/register
body:
{ "username": "example", "email": "[email protected]", "password": "princess" }
-
LOGIN
POST https://h8ter.zeabur.app/api/auth/login
body:
{ "email": "[email protected]", "password": "princess" }
-
-
USERS
-
GET
GET https://h8ter.zeabur.app/api/users
El usuario tiene que ser super_admin para ver todos los usuarios {"email":"[email protected]", "password":"123456789"}
-
GET BY EMAIL
GET https://h8ter.zeabur.app/api/[email protected]
El usuario tiene que ser super_admin para ver todos los usuarios y la búsqueda le devolverá el usuario por email
{ "success": true, "message": "User by email", "data": { "_id": "65f31eefc610f2eeb5d2f151", "username": "superadmin", "email": "[email protected]", "role": "super_admin", "createdAt": "2024-03-14T15:59:43.223Z", "updatedAt": "2024-03-15T11:37:10.701Z" } }
-
GET PROFILE
GET https://h8ter.zeabur.app/api/users/:username
Se puede ver los perfiles de usuarios excluyendo datos sensibles como el email o el rol
-
UPDATE PROFILE
PUT https://h8ter.zeabur.app/api/users/profile
El usuario podrá modificar su propio perfil, cambiando su nombre de usuario
{ "username":"example2", }
-
-
POSTS
-
GET
GET https://h8ter.zeabur.app/api/posts
Se muestran todos los posts de los usuarios públicos
-
CREAR POST
POST https://h8ter.zeabur.app/api/posts
El usuario tiene que estar logado para crear posts
body:
{ "content": "un post asqueroso" }
-
GET MY POSTS
GET https://h8ter.zeabur.app/api/posts/own
El usuario puede ver todos sus posts
-
GET SINGLE POST
GET https://h8ter.zeabur.app/api/posts/id
El usuario puede ver un post en concreto
-
UPDATE POST
PUT https://h8ter.zeabur.app/api/posts/id
El usuario puede modificar uno de sus posts
body:
{ "content": "un post precioso" }
-
DELETE POST
PUT https://h8ter.zeabur.app/api/posts/id
El usuario puede borrar uno de sus posts
-
GET USER POST
GET https://h8ter.zeabur.app/api/users/posts/user_id
Trae todos los posts de un usuario
-
LIKE/DISLIKE POST
PUT https://h8ter.zeabur.app/api/posts/like/post_id
Un usuario puede darle like o quitárselo a un post
-
Tecnologías utilizadas:
-
Crea una carpeta para tu proyecto.
-
Inicializa el archivo package.json con
npm init
- Instala Express con
npm install express --save
- Instala TypeScript como dependencia de desarrollo con
npm install typescript -D
- Instala los tipos de Express y Node con
npm install @types/express @types/node -D
- Configura el archivo tsconfig.json con
npx tsc --init
- Instalar librería de nodemon
npm install --save-dev nodemon
En el apartado de scripts de package.json:
"dev": "nodemon ./src/server.ts"