Skip to content

Repository files navigation

🌌 inOrbit API

API REST desenvolvida com NestJS, Prisma e PostgreSQL. Inclui autenticação via GitHub OAuth, gerenciamento de metas e tarefas, além de testes unitários e de integração para garantir confiabilidade.

Status


✨ Sobre o projeto

A inOrbit API é uma aplicação back-end desenvolvida para o gerenciamento de metas pessoais, permitindo integração com OAuth, controle de tarefas e acompanhamento de progresso individual.

Com ela, você pode:

  • Criar conta via GitHub OAuth
  • Cadastrar metas
  • Registrar hábitos diários e acompanhar o progresso
  • Gerenciar tarefas com status
  • Visualizar métricas de desempenho pessoal

🚀 Tecnologias

  • NestJS - Framework Node.js moderno e escalável.
  • Prisma - ORM para modelagem e migrações de banco de dados.
  • PostgreSQL - Banco de dados relacional robusto e confiável.
  • JWT - Autenticação baseada em tokens.
  • Swagger - Documentação automática da API.
  • Zod - Validação de esquemas.
  • TypeScript - Tipagem estática e segurança no código.
  • Vitest - Testes rápidos e integrados ao ecossistema Vite.

📦 Instalação

  1. Clone o repositório e acesse o diretório do projeto:
git clone https://github.com/oliveiradniel/in.orbit-server.git
cd in.orbit-server
  1. Instale as dependências:
yarn
  1. Copie o arquivo de variáveis de ambiente:
cp .env.example .env

💡 Dica: adicione o arquivo .env ao .gitignore para evitar o versionamento de dados sensíveis.


📄 Variáveis de Ambiente

O projeto utiliza um arquivo .env com as seguintes variáveis:

Nome Descrição Exemplo
PORT Porta usada para rodar o servidor 3000
HOST Host da conexão 127.0.0.1
FRONTEND_ORIGIN Origem permitida pela política CORS http://localhost:5173
POSTGRES_PORT Porta usada pelo banco PostgreSQL 5432
POSTGRES_HOST Host do banco de dados pg
POSTGRES_USER Usuário do banco PostgreSQL postgres_user
POSTGRES_PASSWORD Senha do banco PostgreSQL postgres_password
POSTGRES_DB Nome do banco de dados my_database
DATABASE_URL URL de conexão com o banco postgresql://postgres_user:postgres_password@localhost:5432/my_database?schema=public
GITHUB_CLIENT_ID ID gerado pelo GitHub para OAuth AIzaSy...
GITHUB_CLIENT_SECRET Chave secreta gerada pelo GitHub AKIA...
JWT_SECRET Chave usada para assinar tokens JWT unsecure_jwt_secret
NODE_ENV Define o ambiente de execução development

⚠️ A variável JWT_SECRET deve conter uma chave forte e segura.


🐳 Usando PostgreSQL com Docker

Esta aplicação utiliza PostgreSQL via Docker Compose. Para subir o banco de dados, execute:

docker-compose up -d

A imagem da API está comentada no arquivo docker-compose.yml. Caso queira executá-la junto ao banco, basta descomentar e ajustar o env_file conforme suas variáveis de ambiente.


📤 Prisma e Migrações

Após configurar o banco, gere os arquivos do Prisma e aplique as migrações:

npx prisma generate
npx prisma migrate dev

💻 Executando em modo de desenvolvimento

yarn start:dev

Certifique-se de que o banco de dados e as variáveis de ambiente estão configurados corretamente antes de iniciar o projeto.


🧪 Testes

O projeto inclui testes unitários e de integração usando Vitest.

Para rodar todos os testes:

yarn test

Para rodar os testes unitários:

yarn test:unit

Para rodar os testes de intergração:

yarn test:int

📚 Documentação da API

Após iniciar o servidor, acesse a documentação interativa com Swagger em: 👉 http://localhost:3000/docs


🔗 Links

Deploy

Repositório Front-End

Portfólio

About

InOrbit is a backend API designed to help users track their personal goals efficiently. It provides authentication, GitHub integration, goal creation and completion tracking, weekly metrics, and a points and leveling system to enhance engagement and productivity.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages