Skip to content
Snippets Groups Projects
Commit 28a8c85c authored by Richard Fernando Heise Ferreira's avatar Richard Fernando Heise Ferreira
Browse files

README

parent 1bec22a2
No related branches found
No related tags found
No related merge requests found
Maziero.webp

473 KiB

# Backend
# Ripperdoc Preem Shop
## 📥 Instalando Go
![Maziero Ripperdoc](Maziero.webp)
Vamos remover qualquer instalação prévia, por desencargo, e depois baixar o binário e descompactá-lo.
## 🌆 História
> **Importante**: confira a versão mais recente no site [Go Downloads](https://go.dev/dl/). Se necessário, substitua o comando abaixo pelo número da versão correta.
> Não vamos usar `apt` para gerenciar esse pacote porque está desatualizado no Debian. Use por sua conta e risco.
O ano é **2177**. Você sobrevive no auge do **capitalismo tardio** em sua forma mais agressiva: metade do planeta é um imenso depósito de "indesejados", contaminado por lixo nuclear e plástico não biodegradável. Enquanto isso, a outra metade se esconde em meio ao **concreto, metal e grafeno**, agarrando-se ao pouco de humanidade que resta nos grandes centros urbanos. Árvores? Cães? Gatos? Essas palavras desapareceram da linguagem comum. Quem ainda está na Terra trabalha remotamente para os **1% que vivem confortavelmente em colônias espaciais**.
```bash
sudo rm -rf /usr/local/go && wget https://go.dev/dl/go1.24.0.linux-amd64.tar.gz && sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz
```
Podemos remover o tar do Go:
```bash
rm go1.24.0.linux-amd64.tar.gz
```
Você é um desses infelizes terráqueos. Criado nas ruas de **Cybertiba**, aprendeu a sobreviver nos becos da cidade, catando peças e códigos no submundo digital. Seu melhor amigo, **Maziero**, é um **Ripperdoc**—um cirurgião de implantes clandestinos, especialista em transformar corpos comuns em máquinas aprimoradas. Dizem que ele se formou na extinta **Universidade Federativa do Paraná**, antes de a instituição ser vendida para o **Império Unificado Americano (IUA)** junto com o já inexistente Brasil.
Precisamos exportar a variável de ambiente para que o bash saiba qual binário rodar quando digitarmos `go` no terminal:
Mas Maziero tem um problema: ele precisa de um site para vender seus implantes **DIY (Do It Yourself)**. No futuro, ninguém mais pode pagar por cirurgias formais; os implantes são enviados para casa e instalados pelo próprio usuário, sem perguntas. O problema? As **IAs foram privatizadas** pelos ultra-ricos das colônias espaciais. Esqueça **ChatGPT, DeepSeek ou Copilot**—aqui, a única coisa que resta é o seu **conhecimento puro de programação**.
```bash
echo 'export PATH=$PATH:$HOME/go/bin:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
```
Felizmente, a resistência digital ainda vive. A internet na Terra se mantém ativa graças aos **nós de Software Livre** espalhados pelo planeta. Em Cybertiba, a conexão é mantida pelo **C4SL (Cyber Centro de Computação Científica e Software Livre)**, garantindo acesso ao conhecimento para os poucos que ainda podem usá-lo.
Vamos verificar se tudo deu certo:
Agora que você tem o contexto, é hora de agir. Você e Maziero precisam deste site funcionando—quem sabe, um dia, isso renda o suficiente para comprar um **Ryzen 20 7800X** e finalmente resolver **Matemática Discreta de cabeça**.
```bash
go version
```
---
Se funcionou, seu terminal deve mostrar a mensagem:
## 🖥️ Frontend
```bash
go version go1.24.0 linux/amd64
```
O frontend será desenvolvido em **Svelte**, um framework moderno e eficiente.
---
### 🛠️ Pré-requisitos:
- Certifique-se de que o **Node.js** está na versão **LTS**.
## 📂 Arquitetura
### 🚀 Instalação:
Para criar o projeto, execute:
```bash
npx sv create frontend
```
meu_projeto/
├── src/
│ └── main.go
├── config/
│ ├── config.yaml
│ └── .env
├── internal/
│ ├── dto/
│ ├── entity/
│ ├── handler/
│ ├── database/
│ │ ├── migrations/
│ │ ├── queries/
│ │ ├── sqlc/
│ ├── repository/
│ ├── service/
├── go.mod
├── go.sum
└── README.md
```
---
## 📁 Descrição das Pastas
Durante a configuração, escolha as seguintes opções:
### 🔹 `src/`
Contém os arquivos `main.go`, responsáveis por iniciar nossa aplicação.
Minimal
TypeScript
Linter + Prettier
pnpm como gerenciador de pacotes
### 🔹 `config/`
Armazena configurações da aplicação, como variáveis de ambiente (`.env`) e arquivos de configuração (`config.yaml`). Também pode incluir logs, caso necessário.
## ⚙️ Backend
O backend será desenvolvido em TypeScript, utilizando Drizzle ORM para manipulação do banco de dados de forma eficiente e tipada.
### 🔹 `internal/`
Aqui fica a lógica de negócio da aplicação, organizada da seguinte maneira:
### 🏗️ Estrutura:
O backend será uma API REST simples.
Utilizará Drizzle para comunicação com o banco de dados PostgreSQL.
Terá suporte para autenticação e CRUD básico de implantes.
- **`dto/`** → Define os tipos de dados permitidos na aplicação (Data Transfer Objects - DTOs).
- **`entity/`** → Contém as entidades do domínio da aplicação.
- **`handler/`** → Responsável pelo roteamento das requisições HTTP. Pode ser chamada de `controller/`, se preferir.
- **`database/`** → Contém toda a lógica de banco de dados:
- **`migrations/`** → Scripts de migração do banco de dados.
- **`queries/`** → Arquivos contendo as queries SQL de consulta ao banco.
- **`sqlc/`** → Arquivos gerados automaticamente pelo SQLC para manipulação do banco.
- **`repository/`** → Camada de repositórios, que faz a comunicação entre o banco de dados e a aplicação. Poderíamos usar diretamente as estruturas do `sqlc`, mas adicionamos essa camada para manter um desacoplamento maior.
- **`service/`** → Camada de serviços onde fica a lógica de negócio. Também pode ser chamada de `usecase/`.
### 🚀 Instalação:
Entre no diretório do backend e instale as dependências:
---
```bash
pnpm install
```
## 📄 Arquivos Importantes
## 🗄️ Banco de Dados
A aplicação utilizará um PostgreSQL containerizado via Docker.
### 🔹 `go.mod`
Este arquivo é essencial para o gerenciamento de dependências em Go. Ele define o módulo do projeto e lista as dependências do código, garantindo que todas as bibliotecas necessárias sejam baixadas corretamente.
### 🛠️ Configuração:
Dentro do diretório do backend, há um arquivo docker-compose.yml que configura o banco de dados.
Criado com o comando:
Para subir o PostgreSQL localmente, basta rodar:
```bash
go mod init treinamento-2025.1/backend
docker-compose up -d
```
### 🔹 `go.sum`
Este arquivo contém checksums das versões exatas das dependências do projeto. Ele garante que as bibliotecas usadas sejam sempre as mesmas, evitando inconsistências entre ambientes de desenvolvimento e produção.
---
## Rodando
\ No newline at end of file
Isso criará um ambiente pronto para desenvolvimento, permitindo iniciar a implementação do backend imediatamente.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment