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.
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.
Visão geral do projeto, um pouco das tecnologias usadas.
URL base da aplicação: https://insync-api-v1-lnpi.onrender.com
Diagrama ER da API definindo bem as relações entre as tabelas do banco de dados.
Clone o projeto em sua máquina e instale as dependências com o comando:
yarn install ou yarn
Utilizando npm
npm install
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.
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
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
Primeiro, mude sua variavel de ambiente para 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>
é possivel acessar a documentação da API criada com Swagger pelo link abaixo:
Essa documentação descreve os recusos que a API possuí, como Endpoints, exemplos de requisição, exemplos de retorno e metodos de autenticação
- 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
O objeto User é definido como:
Campo | Tipo | Descrição |
---|---|---|
id | string | Identificador único do usuário |
name | string | O nome do usuário. |
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. |
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 |
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. |
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. |
O objeto Technologies é definido como:
Campo | Tipo | Descrição |
---|---|---|
id | number | Identificador único da tecnologia. |
name | string | O nome da tecnologia. |
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. |
O objeto Teams não possui body
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. |