Este projeto é uma aplicação que utiliza a linguagem de programação Go, juntamente com os frameworks Gin e GORM, para criar um serviço de gerenciamento de usuários. Os dados dos usuários são persistidos em um banco de dados PostgreSQL, utilizando o serviço de banco de dados como serviço ElephantSQL. Além disso, este projeto também permite o armazenamento de objetos do usuário, como imagens, em buckets S3 utilizando o LocalStack.
- ✔️ Cadastro de usuários: permite o cadastro de novos usuários, incluindo informações como nome, e-mail e senha.
- ✔️ Autenticação: oferece funcionalidades de autenticação e autorização, permitindo que usuários autenticados acessem recursos restritos.
- ✔️ Gerenciamento de objetos do usuário: possibilita o armazenamento de objetos do usuário, como imagens, em buckets S3.
- ✔️ Banco de dados: utiliza o GORM para interagir com o banco de dados Postgres hospedado no ElephantSQL, garantindo a persistência dos dados dos usuários.
Antes de executar o projeto, certifique-se de ter as seguintes dependências instaladas:
- Golang (versão 1.20.5): https://golang.org/dl/
- PostgreSQL: Configure uma instância do PostgreSQL e obtenha as informações de conexão (endereço, porta, nome do banco de dados, usuário e senha).
- LocalStack: Instale e configure o LocalStack para simular o ambiente S3 localmente. https://github.com/localstack/localstack
Depois de configurar as dependências e obter as informações de conexão, siga as etapas abaixo para executar o projeto:
- Clone o repositório para o seu ambiente local:
git clone https://github.com/guisteglich/go-user-app
- Acesse o diretório do projeto:
cd go-user-app
- Configure variáveis de ambiente coomo informações de conexão com o banco de dados Postgres e o serviço S3 no arquivo
.env
. - Execute o comando para baixar as dependências do projeto:
go mod download
- Execute o seguinte comando para iniciar a aplicação:
go run main.go
- A aplicação será iniciada e estará disponível no endereço
http://localhost:8080
.
Contribuições são bem-vindas! Se você encontrar algum problema, tiver ideias de melhorias ou quiser adicionar novos recursos, fique à vontade para abrir uma issue ou enviar um pull request.
Este projeto está licenciado sob a MIT License.
Para entrar em contato, envie um email para [email protected].