Skip to content

API construida com NestJs para fazer upload e delete de imagens no CloudFlare R2

Notifications You must be signed in to change notification settings

henrique77/image-storage-with-cloudflare-r2-and-nest

Repository files navigation

API NestJS + PostgreSQL + Docker + TypeORM + Cloudflare R2

Este projeto é uma API desenvolvida utilizando o framework NestJs, conectada a um banco de dados PostgreSQL, executada em um ambiente Docker e usando o TypeORM para manipulação do banco de dados. A API também integra-se com o Cloudflare R2 para armazenamento e gerenciamento de imagens.

Pré-requisitos

Certifique-se de ter o seguinte instalado em sua máquina local:

Execução do Projeto

Copie o repositório para sua máquina local:


https://github.com/henrique77/image-storage-with-cloudflare-r2-and-nest.git

Crie um bucket no Cloudflare R2 para armazenar as imagens (doc) e Gere um token de autenticação no Cloudflare para ser usado na API (doc)

Crie um arquivo .env na raiz do projeto e adicione as variáveis de ambiente necessárias. Você pode usar .env.example como referência

Posteriormente a criação e inserção das informações necessárias no .env, execute:


docker compose up

Assim que os contêineres estiverem instalados e funcionando, podemos acessar o aplicativo NestJS visitando http://localhost:3000 e pgAdmin visitando http://localhost:5050 em nosso navegador. Faça login no pgAdmin usando o e-mail e a senha que especificamos no arquivo docker-compose.yml e Configurando o pgAdmin e o servidor PostgreSQL conforme as informações do arquivo docker-compose.yml

Agora a API pode ser testada usando o Postman ou outra ferramenta de sua preferência.

As rotas disponíveis são:


POST: http://localhost:3000/books
GET: http://localhost:3000/books
GET: http://localhost:3000/books/ID_BOOK
DELETE: http://localhost:3000/books/ID_BOOK

As imagens armazenadas no Cloudflare R2 podem ter sua url personalizada e definida como pública possibilitando o acesso em qualquer navegador.

Exemplo de imagem que foi salva usando essa aplicação e que pode ser acessada pelo link:

https://pub-80e90dad79d647409945f766b3c3cbf6.r2.dev/images/1706739045335-clean_architecture.jpg

For more information

Open for questions or suggestions