Skip to content

InSync-API é uma API RESTful construída com Node.js e PostgreSQL. Ela permite que os usuários se cadastrem, criem perfis, publiquem projetos, busquem por projetos e profissionais, e façam parcerias.

Notifications You must be signed in to change notification settings

insync-project/InSync-project

Repository files navigation

InSync

A plataforma é um espaço online para que desenvolvedores possam encontrar outros profissionais interessados em trabalhar em projetos em grupo. Com uma interface intuitiva e recursos de busca avançados, é fácil encontrar pessoas com as habilidades necessárias para fazer o seu projeto acontecer.


Documentação da API

InSync-API é uma API RESTful construída com Node.js e PostgreSQL. Ela permite que os usuários se cadastrem, criem perfis, publiquem projetos, busquem por projetos e profissionais, e façam parcerias.

Este repositório contém o código-fonte e os Endpoints das rotas.

Tabela de Conteúdos


1. Visão Geral

Visão geral do projeto, um pouco das tecnologias usadas.

URL base da aplicação: https://insync-api-v1-lnpi.onrender.com


2. Diagrama ER

Diagrama ER da API definindo bem as relações entre as tabelas do banco de dados.

Diagrama do projeto com suas relações!


3. Início rapído

Voltar para o topo

3.1. Instalando dependências

Clone o projeto em sua máquina e instale as dependências com o comando:

yarn install ou yarn

Utilizando npm

npm install

3.2. Variáveis de Ambiente

Em seguida, crie um arquivo .env, copiando o formato do arquivo .env.example:

cp .env.example .env

Configure suas variáveis de ambiente com suas credenciais do Postgres e uma nova database da sua escolha.

3.3. Migrations

Execute as migrations com o comando:

yarn run typeorm migration:generate ./src/migrations/InitialMigration -- -d ./src/data-source.ts

Suba suas migrations com o comando:

yarn run typeorm migration:run -- -d ./src/data-source

Remova suas migrations do banco com o comando:

yarn run typeorm migration:revert -- -d ./src/data-source

3.4. Rodando a API

Para rodar a API localmente use o comando:

yarn run dev

Segue abaixo os comandos para a build do projeto:

yarn run build
yarn typeorm migration:run -d dist/data-source
yarn run start

3.5. Testes

Primeiro, mude sua variavel de ambiente para test:

Exemplo variavel test

Agora rode esse comando no terminal:

yarn run test

Você pode tambem rodar os testes individualmente:

yarn run test <Nome do arquivo.spec.ts>

4. Estrutura da API

Voltar para o topo

é possivel acessar a documentação da API criada com Swagger pelo link abaixo:

InSync-Documentação

Essa documentação descreve os recusos que a API possuí, como Endpoints, exemplos de requisição, exemplos de retorno e metodos de autenticação

5. Endpoints

Voltar para o topo

Índice

  • Users
    • POST - /users
    • POST - /users/login
    • GET - /users/profile
    • GET - /users/profile/:nickname
    • PATCH - /users/:userId
    • DELETE - /users/:userId
  • Projects
    • POST - /projects
    • GET - /projects
    • GET - /projects/:projectId
    • PATCH - /projects/:projectdId
    • DELETE - /projects/:projectId
  • Technologies
    • POST - /technologies
    • POST - /technologies/users
    • POST - /technologies/projects/:projectId
    • GET - /technologies
    • DELETE - /technologies/:techId
    • DELETE - /technologies/users
    • DELETE - /technologies/projects/:projectId
  • Teams
    • POST - /teams/projects/:projectId
    • PUT - /teams/:projectId/users/:userId
    • DELETE - /teams/:projectId/users/:userId

1. Users

Voltar para os Endpoints

O objeto User é definido como:

Campo Tipo Descrição
id string Identificador único do usuário
name string O nome do usuário.
email string O e-mail do usuário.
nickname string O nickname do usuário.
password string A senha de acesso do usuário
admin boolean Define se um usuário é Administrador ou não.

Endpoints

Método Rota Descrição
POST /users Criação de um usuário.
POST /users/login Login com um usuário.
GET /users/profile Lista os dados do usuário logado
GET /users/profile/:nickname Lista os dados do usuário logado pelo nickname
PATCH /users/:userId Atualiza os dados de um usuário.
DELETE /users/:userId Realiza um softdelete em um usuário

2. Projects

Voltar para os Endpoints

O objeto Project é definido como:

Campo Tipo Descrição
id number Identificador único do projeto.
name string O nome do projeto.
description string A descrição do projeto.
devType string O tipo do projeto.
status string O status do projeto.
cover string Imagem do projeto.
maxUsers number Capacidade maxima de usuários no projeto.

Endpoints

Método Rota Descrição
POST /projects Criação de um projeto.
GET /projects Listar todos os projetos.
GET /projects/:projectId Listar um projeto pelo id.
PATCH /projects/:projectId Atualiza os dados de um projeto.
DELETE /projects/:projectId Realiza um softdelete em um projeto.

3. Technologies

Voltar para os Endpoints

O objeto Technologies é definido como:

Campo Tipo Descrição
id number Identificador único da tecnologia.
name string O nome da tecnologia.

Endpoints

Método Rota Descrição
POST /technologies Criação de uma tecnologia.
POST /technologies/users Adicionar tecnologias a um usuário.
POST /technologies/projects/:projectId Adicionar tecnologias a um projeto.
GET /technologies Listar todas as tecnologias.
DELETE /technologies/:techId Deleta uma tecnologia.
DELETE /technologies/users Deleta tecnologia de um usuário.
DELETE /technologies/projects/:projectId Deleta tecnologia de um projeto.

4. Teams

Voltar para os Endpoints

O objeto Teams não possui body

Endpoints

Método Rota Descrição
POST /teams/projects/:userId Adicionar usuário a um time.
PUT /teams/:projectId/users/:userId Permitir usuário a entrar no time.
DELETE /teams/:projectId/users/:userId Remover usuário de um time.

Autores

About

InSync-API é uma API RESTful construída com Node.js e PostgreSQL. Ela permite que os usuários se cadastrem, criem perfis, publiquem projetos, busquem por projetos e profissionais, e façam parcerias.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •