Esta API permite aos usuários encontrar a loja física mais próxima com base no seu CEP, utilizando a API ViaCEP para obter as informações de localização.
- Consulta de lojas físicas mais próximas com base no CEP do usuário
- Validação de CEP
- Filtro de lojas por proximidade (raio de 100km)
- Ordenação por distância ou nome da loja
- Logs detalhados das operações
- TypeScript
- Express.js
- MongoDB (Mongoose)
- Axios
- Winston (para logs)
- Jest (para testes)
- dotenv (para variaveis de ambiente)
O projeto segue uma arquitetura em camadas:
- Controllers: Gerenciam as requisições HTTP e respostas
- Services: Contêm a lógica de negócio
- Models: Definem os esquemas do MongoDB
- Routes: Definem as rotas da API
- Middlewares: Processam requisições antes de chegarem aos controllers
- Utils: Funções utilitárias como cálculo de distância
- Config: Configuração do banco de dados e logger
- Clone o repositório
git clone https://github.com/FR-macedo/Physical-Stores-Finder.git
cd Physical-Stores-Finder
- Instale as dependências
npm install
- Configure o MongoDB
- Certifique-se de ter o MongoDB instalado e rodando na porta 27017
- Ou atualize a URL de conexão nas variaveis de ambiente
- Popule o banco de dados com lojas de teste
npm run seed
- Inicie o servidor de desenvolvimento
npm run dev
GET /api/stores/nearest/:cep
Exemplo:
GET /api/stores/nearest/01310100
GET /api/stores/nearby/:cep?page=1&limit=10&sortBy=distance&sortOrder=asc
Parâmetros de query:
page
: Número da página (padrão: 1)limit
: Itens por página (padrão: 10)sortBy
: Campo para ordenação - 'distance' ou 'name' (padrão: 'distance')sortOrder
: Ordem - 'asc' ou 'desc' (padrão: 'asc')
Para executar os testes:
npm test
O projeto utiliza o modelo GitFlow para controle de versão:
main
: Branch principal que contém código de produçãodevelop
: Branch de desenvolvimentofeature/*
: Branches para novas funcionalidadesbugfix/*
: Branches para correção de bugsrelease/*
: Branches para preparação de releaseshotfix/*
: Branches para correções urgentes em produção
- Crie uma branch de feature a partir de develop
git checkout -b feature/nome-da-feature develop
- Trabalhe na feature e faça commits
git add .
git commit -m "Implementação da feature X"
- Finalize a feature mesclando com develop
git checkout develop
git merge --no-ff feature/nome-da-feature
- Para criar uma release
git checkout -b release/1.0.0 develop
# Faça ajustes finais se necessário
git checkout main
git merge --no-ff release/1.0.0
git tag -a v1.0.0 -m "Versão 1.0.0"
Este projeto está licenciado sob a licença MIT.