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
- 2. A API
- 3. Estrutura do Repositório
- 4. Integração e Deploy
- 5. Instruções de Instalação
- 6. Rotas
- 7. Conheça a Squad-24!
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.
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.
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.
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.
Siga os passos abaixo para configurar e executar localmente a API em sua máquina:
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 )
- Clone o Repositório
git clone https://github.com/vinicioscst/orange-portfolio-backend-squad24.git cd orange-portfolio-backend-squad24
- Instale as dependências
npm install
- 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.
- Inicie o servidor local
npm run dev
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/
Cadastrar usuário
Essa é a rota que será utilizada para testar a API.
Retorno:
{
"mensagem": "O servidor está online."
}
Cadastrar usuário
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
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
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
Essa é a rota que será utilizada pelo o front para efetuar o upload de imagens.
Obter perfil do usuário logado
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": "[email protected]",
"profileimage": null,
"isgoogleaccount": null,
"projects": [
{
"id": 2,
"title": "teste 02",
"tags": "teste tags",
"link": "teste link",
"description": "teste",
"image": null,
"createddate": null
}
]
}
Cadastrar projetos
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
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": "[email protected]",
"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": "[email protected]",
"profileImage": null,
"isGoogleAccount": null
}
}
]
Atualizar/Editar Projeto
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
Essa é a rota que será utilizada para deletar algum projeto cadastrado no sistema pelo o seu id.
Álvaro Garcia Frontend Developer |
Carlos Wylliam Backend Developer |
Mariana Moreira Backend Developer |
Ravena Campos Frontend Developer | PO |
Vinícios Soares FullStack Developer |