https://github.com/charmingruby/mvplease
Consistent and scalable Go MVP boilerplate.
https://github.com/charmingruby/mvplease
Last synced: 8 months ago
JSON representation
Consistent and scalable Go MVP boilerplate.
- Host: GitHub
- URL: https://github.com/charmingruby/mvplease
- Owner: charmingruby
- Created: 2024-03-11T15:56:46.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-02T13:53:20.000Z (almost 2 years ago)
- Last Synced: 2024-06-21T02:07:47.580Z (almost 2 years ago)
- Language: Go
- Homepage:
- Size: 90.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Exemplo de documentação
Descrição...
# Requisitos
Algumas ferramentas são necessárias para utilizar a aplicação:
- Docker
# Execução
O ambiente de execução é inserido em um Docker Compose, onde possui tanto os serviços de banco de dados Postgres quanto a própria API Golang. Para executar, clone o repositório e execute os comandos:
```
$ docker compose up --build -d
```
# Tecnologias e Bibliotecas
- Golang 1.22 - Linguagem de programação
- PostgreSQL - Banco de dados
- SQLX - Executar operações no banco de dados
- Golang Migrate - Executar migrações no banco de dados
- Testify - Realizar testes mais claros
# API
O servidor HTTP foi todo feito com ferramentas nativas do Golang.
## Autenticação
A autenticação foi feita no formato JWT, armazenando o `id` do usuário no campo `sub` do token.
Para acessar uma rota que requer autenticação, é necessário enviar um `token de acesso`, que é recebido quando se autentica, e enviar no cabeçalho da requisição o header `Authorization` e o valor `Bearer seu_token`.
## Rotas
| Método | URL | Privada | Funcionalidade |
| :----- | ------------------------------------- | :-----: | ----------------------------------------------------------------------------------------- |
| POST | /api/v1/login | - | Autentica utilizando CPF e Secret da conta, retornando JWT para acesso de rotas privadas. |
| GET | /api/v1/accounts | - | Retorna todas contas cadastradas. |
| POST | /api/v1/accounts | - | Cria uma nova conta. |
| GET | /api/v1/accounts/{account_id}/balance | - | Retorna o saldo da conta. |
| GET | /api/v1/transfers | Sim | Retorna a lista de transferências em que a conta serviu como origem da operação. |
| POST | /api/v1/transfers | Sim | Faz uma transferência da conta autenticada para uma conta informada. |
## Dados para execução
Modelo padrão de resposta
```
{
"message": "mensagem do contexto",
"status_code": 200,
"data": {
...conteúdo
}
}
```
### `[POST]` /api/v1/accounts
Caso de Sucesso: Rota para criar uma conta, retornando os dados da conta e status code 201.
Header: `Authorization: Bearer seu_token`
Body da requisição:
```
{
"name": "dummyy doe",
"cpf": "24628728097",
"secret": "password123"
}
```
Body da resposta:
```
{
"message": "Account created",
"status_code": 201
}
```