Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/joseeduardomartins/contacts-backend
https://github.com/joseeduardomartins/contacts-backend
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/joseeduardomartins/contacts-backend
- Owner: JoseEduardoMartins
- License: mit
- Created: 2023-12-15T19:33:21.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-06-21T14:35:05.000Z (7 months ago)
- Last Synced: 2024-06-22T06:55:14.218Z (7 months ago)
- Language: JavaScript
- Size: 87.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Contact Management System - Back-end
Este projeto é um sistema simples de gerenciamento de contatos desenvolvido em Node.js, com uma base de dados MySQL para armazenar informações de contato e seus números de telefone associados.
## Pré-requisitos
Certifique-se de ter as seguintes dependências instaladas antes de iniciar:
Opção 1
- [Node.js](https://nodejs.org/) (versão 16.0.0 ou superior)
- Pacotes [npm](https://www.npmjs.com/) (Node Package Manager)
- [MySQL](https://www.mysql.com/downloads/) (versão 8.0.35 ou superior)Opção 2
- [Docker](https://docs.docker.com/get-docker/)
- [Docker Compose](https://docs.docker.com/compose/install/)## Instruções de Configuração
### 1. Clone o repositório
```bash
git clone https://github.com/JoseEduardoMartins/contacts-backend.gitcd contacts-backend
```### 2. Configurar ambiente.
#### Opção 1: Local
- Instale as dependências:
```bash
npm install
```- Criar um arquivo `.env` na raiz do projeto com base no `.env.example` e mude as variaveis se necessario.
```bash
APP_PORT=3000
APP_PATH=/api
```- Se você ainda não o tiver instalado, siga as instruções na [documentação oficial](https://www.mysql.com/downloads/) para instalar o MySQL.
- Adicione as credenciais do banco de dados no arquivo `.env`:
```bash
DB_HOST=localhost
DB_USER=seu_usuario
DB_PASSWORD=sua_senha
DB_NAME=contacts_db
```- Abra um terminal e execute o seguinte comando para criar um banco de dados e aplicar a estrutura inicial a partir do arquivo `schema.sql`:
```bash
mysql -u seu_usuario -p sua_senha -h seu_host < ./database/schema.sql```
- Se você tiver um arquivo `seeds.sql` com dados iniciais, execute o seguinte comando para adicioná-los:
```bash
mysql -u seu_usuario -p sua_senha -h seu_host < ./database/seed.sql
```#### Opção 2: Utilizando Docker
- Certifique-se de que o [Docker](https://docs.docker.com/get-docker/) e o [Docker Compose](https://docs.docker.com/compose/install/) estão instalados e rodando em sua máquina.
- Certifique-se de configurar corretamente as variáveis de ambiente no arquivo `docker-compose.yml` para conectar ao banco de dados.
### 4. Executar a Aplicação
#### Opção 1: Local
- Inicie a aplicação:
```bash
npm run start:prod
```- Observe o código-fonte e reconstrua/atualize a aplicação quando os arquivos forem atualizados:
```bash
npm run start:dev
```#### Opção 2: Utilizando Docker
- Inicie a aplicação:
```bash
docker-compose up
```- Crie imagens antes de iniciar contêineres:
```bash
docker-compose up --build
```- Interrompe contêineres e remove contêineres, redes, volumes e imagens criadas pelo `up`:
```bash
docker-compose down
```O servidor estará disponível em http://localhost:3000/api.
## Uso
Acesse a API para gerenciar contatos e números de telefone.
- Listar todos os contatos: GET /contacts/
- Obter um contato específico: GET /contacts/:id
- Criar um novo contato: POST /contacts/
- Atualizar um contato existente: PUT /contacts/:id
- Excluir um contato: DELETE /contacts/:id## Exemplo de Payload para Criação/Atualização de Contato
```script
{
"name": "Nome do Contato",
"age": 20,
"phones": [
{
"number": "99 99999-99999"
},
]
}
```## Contribuição
Contribuições são bem-vindas! Se encontrar algum problema ou tiver sugestões, por favor, abra uma [issue](https://github.com/JoseEduardoMartins/contacts-backend/issues/new).
## Autor
- José Eduardo Martins
## Licença
Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE.md para obter detalhes.
## Contato
Para qualquer dúvida ou problema, entre em contato com `[email protected]`.