Skip to content

Latest commit

 

History

History
332 lines (255 loc) · 10.8 KB

File metadata and controls

332 lines (255 loc) · 10.8 KB

Programa Orange Juice Hackathon - V5.0 | Squad-24 | Back-end

Favicon

Bem-vindo ao repositório oficial da API desenvolvida durante a participação no hackathon Orange Juice! Este projeto foi concebido como parte de uma colaboração envolvendo uma equipe de cinco pessoas, incluindo o criador deste repositório.

👩‍💻 Acesse a aplicação aqui 👉 Orange Portfólio

👩‍💻 Deploy da API 👉 API

👩‍💻 Deploy da API 👉 Documentação Swagger


1. O Projeto

O Orange Portifólio é uma plataforma única que reúne os melhores talentos de desenvolvimento e design em um só lugar. Desenvolvida com React.js e utilizando a API desenvolvida em Node.js, Express e PostgreSQL, a aplicação oferece ótimo desempenho e fácil manutenção. Além da possibilidade de cadastrar e buscar projetos, incluímos algumas funcionalidades, como checkbox de requisitos de senha e darkmode.

👉 Figma do projeto

👉 Repositório do Front-end

2. A API

O objetivo principal desta API é fornecer suporte robusto para o front-end de nossa aplicação, que também está em desenvolvimento como parte deste hackathon. Desenvolvida em Node.js, Express e utilizando PostgreSQL como banco de dados, a API atua como uma ponte essencial entre o cliente e o servidor.

3. Estrutura do Repositório

Este repositório contém o código fonte da API, enquanto o front-end está armazenado em um repositório separado. A separação destes permite uma melhor organização e modularidade do código, facilitando o trabalho em equipe e a manutenção a longo prazo.

4. Integração e Deploy

A API está atualmente integrada ao front-end em andamento, fornecendo funcionalidades cruciais para uma experiência do usuário fluida. Além disso, a API foi implantada na plataforma OnRender para garantir um ambiente de produção estável e confiável.

Este README fornece informações essenciais para começar a trabalhar com a API, incluindo instruções de instalação, configuração e utilização. Sinta-se à vontade para explorar o código fonte e contribuir para o crescimento e aprimoramento contínuo deste projeto.

5. Instruções de Instalação

Siga os passos abaixo para configurar e executar localmente a API em sua máquina:

5.1. Pré-requisitos

Antes de começar, certifique-se de ter as seguintes ferramentas instaladas em seu ambiente de desenvolvimento:

  • Node.js - versão 12 ou superior
  • npm (gerenciador de pacotes do Node.js)
  • PostgreSQL - certifique-se de ter um banco de dados PostgreSQL disponível ( nesse repositório está disponivel um dump.sql para isso )

  1. Clone o Repositório
git clone https://github.com/vinicioscst/orange-portfolio-backend-squad24.git cd orange-portfolio-backend-squad24
  1. Instale as dependências
npm install
  1. Configure as variaveis de ambientes

Crie um arquivo .env na raiz do projeto e configure as variáveis de ambiente necessárias. Consulte o arquivo .env.example para referência.

  1. Inicie o servidor local
npm run dev

5.2. Testando a instalação

Para verificar se a instalação foi bem-sucedida, abra seu navegador ou utilize uma ferramenta como Postman ou Insomnia para realizar uma solicitação HTTP para a rota de teste (baseUrl), por exemplo:

GET http://localhost:3000/

6. Rotas

Cadastrar usuário

GET /

Essa é a rota que será utilizada para testar a API.

Retorno:

{
	"mensagem": "O servidor está online."
}
Cadastrar usuário

POST /user

Essa é a rota que permite o usuário se cadastrar no sistema.

Critérios de aceite:

- Validar se o e-mail e a senha estão corretos para o usuário em questão.
- Gerar um token de autenticação para o usuário.
- Confere se o e-mail já existe no sistema.
- fullName, email, password são campos obrigatórios e precisam ser do tipo string.
Efetuar login

POST /session

Essa é a rota que será utilizada para o usuário cadastrado no sistema efetuar seu login.

Critérios de aceite:

- Validar os campos obrigatórios: 
    - nome
    - email
    - senha
- A senha deve ser criptografada utilizando algum algoritmo de criptografia confiável.
- O campo e-mail no banco de dados deve ser único para cada registro, não permitindo dois usuários possuírem o mesmo e-mail.
Efetuar login com o Google

POST /session/google

Essa é a rota que será utilizada para o usuário efetuar login através de sua conta do Google.

Critérios de aceite:

- Validar os campos obrigatórios: 
    - nome
    - email
    - senha
- A senha deve ser criptografada utilizando algum algoritmo de criptografia confiável.
- O campo e-mail no banco de dados deve ser único para cada registro, não permitindo dois usuários possuírem o mesmo e-mail.
Efetuar upload de arquivos

POST /upload

Essa é a rota que será utilizada pelo o front para efetuar o upload de imagens.

Obter perfil do usuário logado

GET /user/profile

Essa é a rota que será utilizada para obter todas as informações do usuário logado desde o seu perfil a projetos cadastrados em seu nome.

Exemplo de retorno:

{
	"userid": 4,
	"fullname": "Jose",
	"email": "Jose01@email.com",
	"profileimage": null,
	"isgoogleaccount": null,
	"projects": [
		{
			"id": 2,
			"title": "teste 02",
			"tags": "teste tags",
			"link": "teste link",
			"description": "teste",
			"image": null,
			"createddate": null
		}
	]
}
Cadastrar projetos

POST /projects

Essa é a rota que será utilizada para o usuário cadastrar o seu projeto.

Critérios de aceite:

- Validar os campos obrigatórios: 
    - title
    - tags
- Todos os campos devem ser do tipo string.
Obter todos os projetos

GET /projects

Essa é a rota que será utilizada para obter todos os projetos existentes no sistema.

Exemplo de retorno:

[
	{
		"id": 1,
		"title": "API REST",
		"tags": "Back-end, TDD",
		"link": null,
		"description": null,
		"image": null,
		"createddate": null,
		"userid": 1,
		"user": {
			"fullname": "Carlos Wylliam",
			"email": "carlos01@email.com",
			"profileImage": null,
			"isGoogleAccount": null
		}
	},
	{
		"id": 3,
		"title": "API REST 03",
		"tags": "Back-end, TDD",
		"link": null,
		"description": null,
		"image": null,
		"createddate": null,
		"userid": 1,
		"user": {
			"fullname": "Carlos Wylliam",
			"email": "carlos01@email.com",
			"profileImage": null,
			"isGoogleAccount": null
		}
	}
]
Atualizar/Editar Projeto

PUT /projects/:id

Essa é a rota que será utilizada pelo o usuário para atualizar/editar o seu projeto.

Critérios de aceite:

- Validar os campos obrigatórios: 
    - title
    - tags
    - senha
Deletar projeto

DELETE /projects/:id

Essa é a rota que será utilizada para deletar algum projeto cadastrado no sistema pelo o seu id.

7. Conheça a Squad-24!


Álvaro Garcia

Frontend Developer


Carlos Wylliam

Backend Developer


Mariana Moreira

Backend Developer


Ravena Campos

Frontend Developer | PO


Vinícios Soares

FullStack Developer