Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
c6ded15
Setting up GitHub Classroom Feedback
github-classroom[bot] Apr 24, 2024
5cf6be8
create files
carusi99 Apr 24, 2024
40081f0
folders and files
carusi99 Apr 24, 2024
a1e87f2
migration implementation
carusi99 Apr 25, 2024
2a75ef2
create database
carusi99 Apr 25, 2024
2761da8
create table users migration
carusi99 Apr 25, 2024
bf14bf6
ompleted migrations
carusi99 Apr 25, 2024
2c875a8
authenticate and authorize
carusi99 Apr 25, 2024
ca5249e
migration to users and posts table
carusi99 Apr 25, 2024
f4f464d
login and signup
carusi99 Apr 26, 2024
9fada7a
get/post
carusi99 Apr 26, 2024
6572dfd
create /me
carusi99 Apr 26, 2024
e062e87
create /like
carusi99 Apr 27, 2024
ffb8f12
arrangements
carusi99 Apr 27, 2024
5dbc902
changes
carusi99 Apr 28, 2024
9faee7a
create file .env test
carusi99 Apr 29, 2024
b4a9d0d
database test
carusi99 Apr 29, 2024
7cbd453
me queries
carusi99 May 3, 2024
0ac33a4
file utils.ts TRUNCATE
carusi99 May 4, 2024
3824a6d
.env.test
carusi99 May 4, 2024
f9a4132
file dbSeed.ts
carusi99 May 4, 2024
5556a16
file dbSeed.ts
carusi99 May 4, 2024
2a50109
file dbSeed.ts table posts
carusi99 May 4, 2024
98bff58
test users
carusi99 May 4, 2024
fa563e1
test users should get all users
carusi99 May 5, 2024
4e6356a
test posts
carusi99 May 5, 2024
1e1bf05
test posts should get all posts
carusi99 May 5, 2024
f867210
test posts should get posts by username
carusi99 May 5, 2024
2f401d7
test posts should create a new post
carusi99 May 5, 2024
7392b98
test posts should update a post
carusi99 May 5, 2024
311f9d2
test likes
carusi99 May 5, 2024
969d2a9
test likes table
carusi99 May 5, 2024
6b9ae5b
test likes should like a post
carusi99 May 5, 2024
01bca29
test likes should unlike a post
carusi99 May 5, 2024
b3c5f94
Create README.md
carusi99 May 6, 2024
ab8b947
changes in posts
carusi99 May 9, 2024
166c549
changes in logic
carusi99 May 13, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .env.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
PGHOST=localhost
PGDATABASE=redes-test
PGPORT=5432
PGUSER=postgres
PGPASSWORD=postgres
PGADMINDATABASE=postgres
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
node_modules
.env
.env
.env.test
111 changes: 111 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@

## RESTful API para Gestión de Posts

Esta API fue creada para perimitir a los usuarios interactuar con publicaciones (Posts) en una red social, ofreciendo diferentes operaciones según si el usuario está registrado o no.

<img src="https://github.com/carusi99/Notes/assets/151582174/1d3f7320-1e62-4e8c-873c-e6cd4f380717" width="800">

# Requerimientos Técnicos
- **Lenguaje**: TypeScript
- **Backend**: Express.js
- **Autenticación/Autorización**: JWT
- **Arquitectura**: Tres capas (routers, servicios, acceso a datos)
- **Base de Datos**: PostgreSQL
- **Acceso a Datos**: Uso de pg
- **Migraciones**: Implementación con umzug
- **Testing**: Pruebas de endpoints con vitest y supertest
- **Validación de Input**: Uso de Zod
- **Manejo de Errores**: Middleware centralizado
- **Manejo de Entorno**: Uso de variables de entorno con - dotenv
## Características Principales
### Esquema de Base de Datos
La base de datos incluye tres tablas principales: Users, Posts y Likes, cada una con sus respectivos campos y relaciones.

### Especificación de API
La API ofrece endpoints para visualizar posts, interactuar con usuarios registrados, gestionar perfiles de usuario, y registro y autenticación de usuarios.

Para cada endpoint se detalla su descripción, parámetros, respuesta y ejemplos de uso.



## Instalación

- Asegúrese de que sus versiones de NodeJS y npm estén actualizadas para Express ^4.19.2

- Instalar dependencias: npm install or yarn Una pequeña introducción sobre la instalación.

Clone este repositorio

```bash
git clone https://github.com/codeableorg/postable-carusi99.git
```

Ir al directorio del proyecto

```bash
cd my-project
```

Instalar dependencias

```bash
npm install
```

```bash
Configura las variables de entorno en un archivo .env.
```

Iniciar el servidor

```bash
npm run start
```
## Cómo probar tu Api de Posts
### utiliza los comandos que estan en tu Package.json para utilizar las migraciones crear tu base de datos, e insertar información a ella.
![Captura de pantalla 2024-05-06 133924](https://github.com/carusi99/Notes/assets/151582174/405c2717-0c92-42fe-b5fe-f54a5e71e35c)

#### Así ejecutas los comandos en la terminal
![Captura de pantalla 2024-05-06 133702](https://github.com/carusi99/Notes/assets/151582174/7460f738-cac8-450e-a787-73ee0e4ca55b)

> [!IMPORTANT]
> debes tener instalada la base de datos de código abierto PostgreSQL.

#### Cómo puedes verificar los servivios:

👩‍💻 Insomnia es una aplicación de escritorio multiplataforma que te permite probar y depurar API RESTful y otros servicios web de una manera fácil y eficiente.

- Instalación de Insomnia: Primero, descarga e instala Insomnia desde su sitio web oficial: [Insomnia](https://insomnia.rest/download)

- Crear un nuevo espacio de trabajo: Abre Insomnia y crea un nuevo espacio de trabajo si aún no tienes uno. - Puedes nombrarlo como desees y organizar tus solicitudes en él.
- Crear una nueva solicitud: Dentro de tu espacio de trabajo, puedes crear una nueva solicitud haciendo clic en el botón "+" en la barra lateral izquierda y seleccionando "New Request". Luego, ingresa la URL de la solicitud y selecciona el método HTTP adecuado (GET, POST, etc.).

![Captura de pantalla 2024-05-06 134530](https://github.com/carusi99/Notes/assets/151582174/3af76f2c-27e9-43f7-ba2f-368032f96cc2)

## Paquetes usados:

- [bcrypt (^5.1.1)](https://www.npmjs.com/package/bcrypt)
- [dotenv (^16.3.1)](https://www.npmjs.com/package/dotenv)
- [express (^4.19.2)](https://www.npmjs.com/package/express)
- [jsonwebtoken (^9.0.2)](https://www.npmjs.com/package/jsonwebtoken)
- [pg (^8.11.5)](https://www.npmjs.com/package/pg)
- [umzug (^3.8.0)](https://www.npmjs.com/package/umzug)
- [vitest (^1.6.0)](https://www.npmjs.com/package/vitest)
- [zod (^3.23.4)](https://www.npmjs.com/package/zod)





## Guía de Contribución
Si deseas contribuir al proyecto, sigue estos pasos:

- Realiza un fork del repositorio.
- Crea una nueva rama (git checkout -b feature/nueva-funcionalidad).
- Realiza tus cambios y haz commits (git commit -am 'Agrega nueva funcionalidad').
- Sube tus cambios a la rama (git push origin feature/nueva-funcionalidad).
- Crea un nuevo Pull Request.

## Créditos
Este proyecto fue desarrollado por paolapachecocarusi@gmail.com y se basa en las especificaciones proporcionadas por Codeable Academy.

Loading