Skip to content

joschonarth/in-orbit-server

Repository files navigation

in.orbit

🧑‍🚀 in.orbit API

Registre metas, acompanhe seu progresso e evolua semana a semana.

last-commit repo-top-language repo-language-count ci-tests

📃 Sobre  •   🛠️ Tecnologias  •   ✨ Funcionalidades  •   🚀 Como rodar  •   📖 Documentação  •   🧪 Testes


📃 Sobre

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.


🛠️ Tecnologias

  • 🟢 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.

✨ Funcionalidades

  • 🎯 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

🚀 Como rodar

📋 Pré-requisitos

🔧 Instalação

  1. Clone o repositório:

    git clone https://github.com/joschonarth/in-orbit-server.git
  2. Acesse a pasta do projeto:

    cd in-orbit-server
  3. Instale as dependências:

    npm install
  4. Configure as variáveis de ambiente copiando o arquivo de exemplo:

    cp .env.example .env

    Em seguida, abra o arquivo .env e preencha as variáveis:

    GITHUB_CLIENT_ID=seu_github_client_id
    GITHUB_CLIENT_SECRET=seu_github_client_secret

🐳 Banco de dados

Suba o container do PostgreSQL com Docker:

docker compose up -d

Execute as migrations para criar as tabelas:

npx drizzle-kit migrate

Opcionalmente, popule o banco com dados de seed:

npm run seed

▶️ Execução

Inicia o servidor em modo de desenvolvimento:

npm run dev

O servidor estará disponível em http://localhost:3333.


📖 Documentação da API

Com o servidor rodando, acesse a documentação interativa gerada pelo Swagger:

http://localhost:3333/docs


🧪 Testes

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:test

⚙️ CI

O 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.yml

⭐ Apoie este Projeto

Se curtiu o projeto, deixe uma ⭐ aqui no GitHub — isso ajuda muito!


Feito com ♥ por João Otávio Schonarth

LinkedIn Gmail

About

🧑‍🚀 RESTful API for in.orbit, providing weekly goal management, progress tracking, gamification with XP and levels, and detailed completion history, built with Node.js, Fastify, and Drizzle ORM.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors