Skip to content

geraldobl58/g3developer

Repository files navigation

G3Developer - Full Stack Application

Uma aplicação completa construída com Turborepo, incluindo API Fastify, aplicações Next.js e infraestrutura como código usando Terraform e Kubernetes.

🏗️ Arquitetura

g3developer/
├── apps/
│   ├── api/              # API REST com Fastify + Prisma
│   ├── application/      # Admin dashboard (Next.js)
│   ├── web/              # Site público (Next.js)  
│   └── infra/            # Terraform + Helm charts
├── packages/
│   ├── ui/               # Design system compartilhado
│   ├── permissions/      # Sistema de permissões
│   └── env/              # Validação de environment
└── docs/                 # Documentação

🚀 Quick Start

Desenvolvimento Local

# Clone e instale dependências
git clone <repo-url>
cd g3developer
pnpm install

# Configure environment
cp .env.development.example .env.local

# Inicie o banco de dados
docker-compose up -d postgres

# Execute migrações
pnpm --filter ./apps/api prisma migrate dev

# Inicie todos os serviços
pnpm dev

Deploy em Produção

# Configure credenciais da Digital Ocean
export DIGITALOCEAN_ACCESS_TOKEN=your_token_here

# Execute o script de setup
./scripts/setup-infrastructure.sh

# Ou configure manualmente seguindo a documentação

🛠️ Stack Tecnológica

Backend

  • Fastify - Framework web rápido e eficiente
  • Prisma - ORM moderno para TypeScript
  • PostgreSQL - Banco de dados relacional
  • TypeScript - Type safety

Frontend

  • Next.js 14 - Framework React com App Router
  • TailwindCSS - Utility-first CSS framework
  • Shadcn/ui - Componentes de UI reutilizáveis
  • TypeScript - Type safety

DevOps & Infraestrutura

  • Turborepo - Monorepo com build system otimizado
  • Docker - Containerização
  • Kubernetes - Orquestração de containers
  • Helm - Gerenciamento de aplicações K8s
  • Terraform - Infrastructure as Code
  • GitHub Actions - CI/CD
  • Digital Ocean - Cloud provider

🌍 Ambientes

Desenvolvimento

Staging

Produção

Packages

  • packages/env — validador e helpers para variáveis de ambiente (client/server).
  • packages/permissions — sistema de permissões (define abilities, helpers para Fastify e React provider para RBAC no cliente).
  • packages/ui — biblioteca de componentes UI e estilos (Tailwind, componentes Radix/unstyled customizados e Storybook).

Principais scripts (na raiz)

  • pnpm install — instalar dependências no workspace
  • pnpm build — roda turbo run build para construir todos os pacotes/apps
  • pnpm dev — roda turbo run dev (dev servers das apps que expõem dev)
  • pnpm lintturbo run lint

Exemplos úteis:

# Instalar e rodar tudo em dev (monorepo)
pnpm install
pnpm dev

# Ou rodar uma app específica (ex.: api)
pnpm --filter @g3developer/api dev

# Rodar build apenas para web
pnpm --filter web build

Observações importantes

  • apps/api depende de um Postgres (scripts db:up / db:down em apps/api/package.json) e usa Prisma (migrations + seed).
  • postinstall no apps/api executa prisma generate para garantir que o Prisma Client esteja disponível.
  • Os pacotes internos (env, permissions, ui) são referenciados via workspace:* e devem ser construídos/gerados conforme necessário pelo fluxo do Turbo.

Próximos passos / recomendações

  • Adicionar um README por app (já existem READMEs em apps/api, apps/application, apps/web) com exemplos de requests e fluxos típicos.
  • Habilitar storybook e documentação dos componentes (packages/ui) para facilitar reutilização por outros desenvolvedores.
  • Configurar pipelines CI para rodar pnpm -w -r test e pnpm -w -r build com cache do Turbo.

Se quiser, eu posso gerar um README detalhado por package automaticamente (listar exports principais dos pacotes packages/*) ou adicionar exemplos curl para os endpoints mais importantes do apps/api.

About

Specialized in full stack development, focused on React, Next.js, Node.js, and modern technologies. Passionate about creating exceptional digital experiences that make a difference in people's lives.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages