A Orange API é uma aplicação backend desenvolvida para gerenciar operações de um sistema. Esta aplicação foi construída utilizando TypeScript, SQL e JavaScript, e gerenciada pelo npm.
- TypeScript: Linguagem de programação utilizada para desenvolver a aplicação.
- SQL: Linguagem de consulta estruturada utilizada para gerenciar os dados armazenados no banco de dados.
- JavaScript: Linguagem de programação utilizada para adicionar funcionalidades dinâmicas à aplicação.
- npm: Gerenciador de pacotes utilizado para instalar e gerenciar pacotes de software.
A aplicação possui várias dependências, que são listadas no arquivo package.json. Algumas das principais dependências
incluem:
- express: Framework para Node.js que simplifica o desenvolvimento de aplicações web.
- bcrypt: Biblioteca utilizada para hash de senhas.
- jsonwebtoken: Biblioteca utilizada para criar e verificar tokens JWT.
- multer: Middleware para manipulação de multipart/form-data, usado principalmente para upload de arquivos.
- prisma: ORM para TypeScript e JavaScript para gerenciar o banco de dados.
- supabase-js: Biblioteca para interagir com o Supabase, uma alternativa de código aberto ao Firebase.
- helmet: Middleware que ajuda a proteger a aplicação de algumas vulnerabilidades da web.
- joi: Biblioteca para validação de dados.
Para utilizar a aplicação, você precisa ter o Node.js e o npm instalados em seu sistema. Após clonar o repositório, você
pode instalar as dependências da aplicação executando npm install no diretório raiz do projeto. Criar um
arquivo .env na raiz do projeto e adicionar as variáveis de ambiente necessárias, seguindo o exemplo do
arquivo .env.example. Após isso, utilizando o prisma, você pode aplicar o schema ao banco de dados
executando npx prisma migrate dev. Por fim, você pode iniciar a aplicação executando npm run dev.
Os scripts disponíveis para execução estão listados no arquivo package.json e podem ser executados
com npm run <nome_do_script>. Por exemplo, para iniciar a aplicação, após o build, você pode executar npm run start.
A aplicação possui vários endpoints que permitem interagir com o sistema. Aqui estão alguns deles:
- POST /signup: Cria um novo usuário. O corpo da solicitação deve incluir detalhes do usuário, como nome, email e senha.
{
"name": "Nome do Usuário",
"lastName": "Sobrenome do Usuário",
"email": "email@exemplo.com",
"password": "senha123"
}- POST /signin: Autentica um usuário existente. O corpo da solicitação deve incluir email e senha do usuário.
{
"email": "email@exemplo.com",
"password": "senha123"
}- POST /signin/google: Autentica um usuário através do Google. O corpo da solicitação deve incluir o identificador do Google.
{
"name": "Nome do Usuário",
"lastName": "Sobrenome do Usuário",
"email": "email@exemplo.com",
"googleId": "googleId"
}- POST /createProject: Cria um novo projeto. O corpo da solicitação deve incluir detalhes do projeto em um formulário multipartes, como título e tags. Este endpoint requer autenticação.
{
"title": "Título do Projeto",
"description": "Descrição do Projeto",
"tags": "tag1, tag2, tag3",
"image": "imagem.jpg"
"link": "https://linkdoprojeto.com",
"userId": "userId",
"releaseDate": "2023-12-31"
}
- DELETE /deleteProject/:projectId: Exclui um projeto específico. Este endpoint requer autenticação.
https://orange-api.onrender.com/deleteProject/idDoProjeto- PATCH /updateProject/:projectId: Atualiza um projeto específico. O corpo da solicitação deve incluir os detalhes do projeto que você deseja atualizar. Este endpoint requer autenticação.
{
"title": "Título do Projeto",
"description": "Descrição do Projeto",
"tags": "tag1, tag2, tag3",
"link": "https://linkdoprojeto.com"
}- GET /project/:projectId: Retorna detalhes de um projeto específico. Este endpoint requer autenticação.
https://orange-api.onrender.com/project/idDoProjeto- GET /projects/:userId: Retorna todos os projetos de um usuário específico. Este endpoint requer autenticação.
https://orange-api.onrender.com/projects/idDoUsuario- GET /projects: Retorna uma lista de todos os projetos. Este endpoint requer autenticação.
https://orange-api.onrender.com/projectsEste projeto acompanha um arquivo chamado HTTP_REQUESTS_COLLECTION.json que pode ser importado em clientes de API como
o Insomnia ou Postman. Este arquivo contém uma coleção de requisições HTTP que podem ser utilizadas para testar a API.
O projeto está estruturado da seguinte maneira:
src/: Este diretório contém todo o código fonte da aplicação.services/: Contém a lógica de negócios da aplicação.repositories/: Contém o código que interage diretamente com o banco de dados.routers/: Contém as rotas da aplicação.utils/: Contém funções utilitárias e auxiliares.config/: Contém arquivos de configuração, como as configurações do banco de dados e do cliente Supabase.
Atualmente, o projeto não possui um framework de testes configurado. Planejamos adicionar isso no futuro.
Agradecemos as contribuições de todos. Se você está interessado em contribuir:
- Faça um fork deste repositório.
- Crie uma nova branch para sua funcionalidade ou correção de bug.
- Faça commit de suas alterações e envie-as para o seu fork.
- Abra um pull request da branch do seu fork para a nossa branch
dev.
Este projeto está licenciado sob a licença ISC. Para mais informações, consulte o arquivo LICENSE na raiz do projeto.