- Tecnologias: Go, HTML, CSS, Docker.
- Banco de Dados: Postgres.
- Outras Ferramentas: Makefile, Go-migrations, Air.
Este projeto Golang é minha arena de prática para aplicar de maneira real meus conhecimentos em desenvolvimento de software. Quero testar minhas habilidades, seguindo boas práticas de ponta a ponta.
Objetivos Principais:
- Aplicar teoria conceitos de desenvoilvimento de software em uma aplicação real.
- Desafiar-me tecnicamente.
- Cobrir de ponta a ponta todo o ciclo de desenvolvimento.
Escopo Atual do Projeto:
- Criar CRUD de "produtos" utilizando Go.
- Funcionalidades básicas para uma base sólida.
Razão da Complexidade:
- Desenvolvimento Pessoal: Buscar desafios para crescimento profissional.
- Variedade de Conhecimento: Explorar temas e ferramentas diversas.
O projeto não é apenas técnico; é uma jornada para aprender e se aprimorar. O objetivo é entregar não só um sistema robusto, mas também ganhar uma compreensão mais profunda de como desenvolver um software completo.
Tarefas Concluídas:
- Conectar a aplicação ao container Postgres
- Validar funcionalidades
- Criar repositório
- Criar migrations para o banco
- Implementar script de inicialização com Makefile
- Criar pacote (pkg) com uma estrutura de logs
- Resolver problema de deleção
- Corrigir funcionalidade de atualização
- Realizar injeção de dependências
- Criar handlers para expor dados em uma API REST usando o web framework Chi
- Identificar e corrigir duplicação de logs em repository/product.go:125 (get product)
- Implementar validação dos campos da requisição
- Permitir paginação na listagem de produtos
- Refinar retornos de erros entre as camadas
- Estabelecer esteira básica de CI: build e testes
- Estabelecer política de CORS
Tarefas Pendentes:
- Desenvolver sistema de autenticação
- Criar testes unitários
- Implementar middleware para adicionar metadados e timeout no contexto
- Dockerizar a aplicação
- Criar fluxo completo de CI: build, testes e deploy de imagem
Contribuições são incentivadas! Sinta-se à vontade para abrir issues, enviar pull requests ou fornecer feedback construtivo.