Skip to content

herloncosta/image-upload-and-compress

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Image Compress API

API desenvolvida para compressão de imagens utilizando Node.js.

Arquitetura

O projeto segue uma arquitetura em camadas para organizar as responsabilidades:

  • src: Diretório raiz do código fonte.
  • controller: Responsável por receber as requisições HTTP e enviar as respostas. O arquivo image-compress-controller.ts gerencia o fluxo da compressão.
  • services: Contém a lógica de negócio. No arquivo image-compress.ts, é realizado o processamento e a compressão da imagem utilizando a biblioteca sharp.
  • routes: Define as rotas da API. O arquivo image-router.ts mapeia os endpoints para os controllers correspondentes.

Tecnologias e Dependências

As principais tecnologias utilizadas no projeto são:

  • Node.js: Ambiente de execução Javascript.
  • Express: Framework web para construção da API.
  • Multer: Middleware para manipulação de dados multipart/form-data, utilizado para o upload de arquivos.
  • Sharp: Biblioteca de alta performance para processamento de imagens (redimensionamento, compressão, etc).
  • Cors: Middleware para habilitar o CORS (Cross-Origin Resource Sharing).
  • Helmet: Middleware de segurança para aplicações Express.
  • TypeScript: Superset do Javascript que adiciona tipagem estática.
  • TSX: Executor de TypeScript baseado em esbuild (utilizado para desenvolvimento).

Estrutura do Projeto

image-compress/
├── client/              # Exemplo mínimo de frontend para teste
├── node_modules/        # Dependências do projeto
├── src/
│   ├── controller/      # Controladores da API
│   ├── routes/          # Definição de rotas
│   └── services/        # Lógica de negócio (compressão)
├── .gitignore           # Arquivos ignorados pelo Git
├── package.json         # Manifesto do projeto e dependências
├── server.ts            # Ponto de entrada da aplicação
└── tsconfig.json        # Configuração do TypeScript

Nota sobre a pasta client: A pasta client contém apenas um exemplo mínimo (index.html) para demonstrar o envio de imagens para a API. Para um uso real ou testes mais específicos, recomenda-se o desenvolvimento de um frontend dedicado e bem estruturado.

Como Executar

Siga os passos abaixo para clonar e executar o projeto em sua máquina local.

1. Clonar o Repositório

git clone https://github.com/herloncosta/image-upload-and-compress.git
cd image-upload-and-compress

2. Instalar Dependências

Certifique-se de ter o Node.js instalado. Execute o comando abaixo para instalar as dependências listadas no package.json:

npm install

3. Executar o Servidor

Para iniciar o servidor em modo de desenvolvimento (com hot-reload):

npm run dev

O servidor será iniciado em http://localhost:3000.

4. Utilização da API

Endpoint de Compressão:

  • URL: http://localhost:3000/api/v1/compress
  • Método: POST
  • Body: multipart/form-data
    • Campo image: Arquivo de imagem a ser comprimido.

Você pode utilizar o arquivo client/index.html abrindo-o no navegador para testar o upload, ou utilizar ferramentas como Postman ou Insomnia envianndo uma requisição POST para o endpoint acima.

About

Implementação básica de upload de imagens com compressão

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors