Registre metas, acompanhe seu progresso e evolua semana a semana.
📃 Sobre • 🛠️ Tecnologias • ✨ Funcionalidades • 🚀 Como rodar • 📖 Documentação • 🧪 Testes
O in.orbit é uma aplicação web para criação e acompanhamento de metas com foco semanal, e este repositório contém a API REST que a alimenta. Por meio dela é possível criar metas com frequência personalizada, marcar e desmarcar conclusões, acompanhar o progresso semanal e navegar por semanas anteriores através de um relatório detalhado. A API também gerencia a autenticação via GitHub e o sistema de gamificação com XP e níveis. O backend é construído com Fastify, Drizzle ORM e PostgreSQL.
- 🟢 Node.js — Ambiente de execução JavaScript server-side.
- ⚡ Fastify — Framework web focado em performance e baixo overhead.
- 🟦 TypeScript — Tipagem estática e segurança em tempo de desenvolvimento.
- 🗃️ Drizzle ORM — ORM moderno e type-safe para TypeScript.
- 🐘 PostgreSQL — Banco de dados relacional robusto e confiável.
- 🐳 Docker — Containerização do banco de dados para ambiente reproduzível.
- 📖 Swagger — Documentação interativa da API via
@fastify/swagger. - 🧪 Vitest — Framework de testes unitários e de integração.
- 🛡️ Zod — Validação e parsing de schemas com inferência de tipos.
- 🔍 Biome — Linting e formatação de código de alta performance.
- 🔄 GitHub Actions — Integração contínua e automação do pipeline de testes.
- 🎯 Criar metas com frequência semanal definida
- ✅ Marcar meta como concluída
- ↩️ Desconcluir uma meta
- 🗑️ Deletar uma meta
- 📊 Relatório semanal de metas concluídas com histórico
- 🗓️ Navegação entre semanas
- 📈 Acompanhamento de progresso de metas
- 🏆 Sistema de gamificação com XP por conclusão de meta
- 🎮 Sistema de nível do usuário baseado em XP acumulado
- 🔐 Autenticação com GitHub (OAuth)
- 🛡️ Validação de dados com Zod
- 📖 Documentação interativa da API com Swagger
- 🧪 Testes automatizados com Vitest
- 🔄 Pipeline de CI rodando os testes a cada push
- 🟩 Node.js 18+
- 📦 npm
- 🐳 Docker
-
Clone o repositório:
git clone https://github.com/joschonarth/in-orbit-server.git
-
Acesse a pasta do projeto:
cd in-orbit-server -
Instale as dependências:
npm install
-
Configure as variáveis de ambiente copiando o arquivo de exemplo:
cp .env.example .env
Em seguida, abra o arquivo
.enve preencha as variáveis:GITHUB_CLIENT_ID=seu_github_client_id GITHUB_CLIENT_SECRET=seu_github_client_secret
Suba o container do PostgreSQL com Docker:
docker compose up -dExecute as migrations para criar as tabelas:
npx drizzle-kit migrateOpcionalmente, popule o banco com dados de seed:
npm run seedInicia o servidor em modo de desenvolvimento:
npm run devO servidor estará disponível em http://localhost:3333.
Com o servidor rodando, acesse a documentação interativa gerada pelo Swagger:
Os testes são escritos com Vitest e cobrem os principais fluxos e regras de negócio da aplicação.
# Roda todos os testes
npm run test
# Roda os testes em modo watch
npm run test:watch
# Executa apenas as migrations no banco de teste
npm run db:migrate:testO projeto conta com um workflow de Integração Contínua via GitHub Actions. A cada push para a branch principal, o pipeline é acionado automaticamente e executa todos os testes para garantir que nenhuma funcionalidade foi quebrada.
.github/
└── workflows/
└── ci.ymlSe curtiu o projeto, deixe uma ⭐ aqui no GitHub — isso ajuda muito!
Feito com ♥ por João Otávio Schonarth