🚀 Sobre o Projeto
Este projeto é um blog pessoal completo, desenvolvido com uma arquitetura de monorepo utilizando Turborepo. O backend é uma API RESTful performática construída com Hono e Node.js, enquanto o frontend é uma aplicação Next.js moderna e responsiva, estilizada com TailwindCSS e shadcn/ui.
O objetivo é criar uma plataforma de blog robusta e escalável, demonstrando habilidades em desenvolvimento full-stack, boas práticas de código e o uso de ferramentas modernas de desenvolvimento.
✨ Principais Funcionalidades
- Autenticação de Usuários: Sistema seguro de login e registro utilizando Better-Auth.
- Criação e Gerenciamento de Posts: Editor de texto rico para criar e editar posts.
- Dashboard de Administrador: Interface para gerenciar todos os posts, incluindo publicações e rascunhos.
- Documentação de API Automatizada: A API gera documentação OpenAPI automaticamente, que pode ser visualizada com uma interface interativa do Scalar.
- Segurança: Implementação de
rate limitingpara proteção contra ataques de força bruta eCORSpara controle de acesso.
API
A API foi construída com Hono, um framework web para JavaScript rápido, leve e moderno. Ela segue os padrões RESTful e é totalmente documentada usando a especificação OpenAPI. A validação de dados é garantida pelo Zod, o que torna a API robusta e segura.
Você pode conferir a documentação oficial da API, gerada dinamicamente, no seguinte link:
Documentação da API - Rapha Codes
Preview
🛠️ Tech Stack
O projeto utiliza uma stack moderna e performática, focada em TypeScript e ferramentas de alta produtividade.
Monorepo
- Turborepo
Frontend
- Next.js
- React
- TailwindCSS
- shadcn/ui
Backend
- Hono
- Node.js
- Zod (para validação de schemas)
- Better-Auth (para autenticação)
- OpenAPI (para documentação de API com Scalar)
- Hono Rate Limiter (para segurança)
- CORS
Banco de Dados
- PostgreSQL
- Drizzle ORM
- Neon (provedor de banco de dados serverless)
Ferramentas e Qualidade de Código
- TypeScript
- Biome (para linting e formatação)
- Husky (para hooks de git)
🚀 Começando
Siga os passos abaixo para executar o projeto localmente.
Pré-requisitos
- Node.js (v20.x ou superior)
- pnpm
- PostgreSQL
Instalação
-
Clone o repositório:
git clone https://github.com/raphaeleliass/rapha_codes.git cd rapha_codes -
Instale as dependências:
pnpm install
Configuração do Banco de Dados
-
Certifique-se de que você tem um banco de dados PostgreSQL em execução.
-
Renomeie o arquivo
.env.exampleemapps/serverpara.enve atualize com suas credenciais do PostgreSQL.DATABASE_URL="postgresql://USER:PASSWORD@HOST:PORT/DATABASE" -
Aplique o schema ao seu banco de dados:
pnpm db:push
Executando a Aplicação
Para iniciar os servidores de desenvolvimento do frontend e backend, execute:
pnpm dev
- A aplicação web estará disponível em
http://localhost:3001. - A API estará disponível em
http://localhost:3000.
📂 Estrutura do Projeto
O projeto é organizado como um monorepo com duas aplicações principais:
rapha_codes/
├── apps/
│ ├── web/ # Aplicação Frontend (Next.js)
│ └── server/ # API Backend (Hono)
└── packages/
├── ui/ # Componentes de UI compartilhados
└── ts-config/ # Configurações de TypeScript
📜 Scripts Disponíveis
pnpm dev: Inicia todas as aplicações em modo de desenvolvimento.pnpm build: Builda todas as aplicações para produção.pnpm dev:web: Inicia apenas a aplicação web.pnpm dev:server: Inicia apenas a API do servidor.pnpm check-types: Verifica os tipos do TypeScript em todo o monorepo.pnpm db:push: Aplica as alterações de schema ao banco de dados.pnpm db:studio: Abre a UI do Drizzle Studio.pnpm check: Executa o linting e a formatação com Biome.