A proposta do projeto é um CRUD de books. A aplicação contém as seguintes funcionalidades:
- Validar se já existe um slug cadastrado no banco de dados;
- Cadastrar livro;
- Listar livro;
- Listar livro por slug;
- Editar livro;
- Apagar livro;
Abaixo segue o que foi utilizado na criação deste projeto:
-
Visual Studio Code - O Visual Studio Code é um editor de código-fonte desenvolvido pela Microsoft para Windows, Linux e macOS. Ele inclui suporte para depuração, controle Git incorporado, realce de sintaxe, complementação inteligente de código, snippets e refatoração de código.
-
Yarn - Yarn é um gerenciador de pacotes que também atua como gerente de projeto. Quer você trabalhe em projetos únicos ou grandes monorepos, como um aquarista ou um usuário corporativo, temos o que você precisa.
-
Typescript - TypeScript é um superconjunto de JavaScript desenvolvido pela Microsoft que adiciona tipagem e alguns outros recursos a linguagem. Anders Hejlsberg, arquiteto da linguagem C# e criador das linguagens Delphi e Turbo Pascal, trabalhou no desenvolvimento do TypeScript.
-
Node.js - Node.js é um interpretador de JavaScript assíncrono com código aberto orientado a eventos, criado por Ryan Dahl em 2009, focado em migrar a programação do Javascript do cliente (frontend) para os servidores, criando aplicações de alta escalabilidade (como um servidor web), manipulando milhares de conexões/eventos simultâneas em tempo real numa única máquina física.
-
Express - O Express.js, ou simplesmente o Express, é uma estrutura de aplicativo da Web para o Node.js, lançada como software livre e de código aberto sob a Licença MIT. Ele foi projetado para criar aplicativos da Web e APIs. Foi chamado de estrutura de servidor padrão de fato para o Node.js.
-
MongoDB - MongoDB é um software de banco de dados orientado a documentos livre, de código aberto e multiplataforma, escrito na linguagem C++. Classificado como um programa de banco de dados NoSQL, o MongoDB usa documentos semelhantes a JSON com esquemas.
-
Mongoose - Mongoose é uma ferramenta de modelagem de objeto MongoDB projetada para funcionar em um ambiente assíncrono. Suporta promessas e retornos de chamada. Como também, fornece uma solução direta e baseada em esquema para modelar os dados do aplicativo. Ele inclui conversão de tipo incorporada, validação, criação de consultas, ganchos de lógica de negócios e muito mais, prontos para uso.
Para conseguir utilizar ou visualizar o projeto, seja através do Visual Studio Code ou outro editor de código, siga os passos abaixo:
Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas:
- É necessário possuir o Node.js instalado no computador
- É necessário possuir o Git instalado e configurado no computador
- É preciso ter um gerenciador de pacotes seja o NPM ou Yarn.
A estrutura de arquivos está da seguinte maneira:
books-api/
├── src/
│ ├── controllers/
│ │ └── PlaceController.ts
│ ├── database/
│ │ └── db.ts
│ ├── models/
│ │ └── book.ts
│ │
│ ├── repositories/
│ │ └── PlaceRepository.ts
│ ├── app.ts
│ ├── routes.ts
│ └── server.ts
├── .editorconfig
├── .env
├── eslintignore
├── eslintrc.json
├── .gitignore
├── .prettier
├── babel.config.js
├── package.json
├── Procfile
├── README.md
├── tsconfig.json
└──yarn.lock
Para instalar esse projeto, o processo é bem simples. Basta utilizar o seguinte comando no terminal:
# Clone este repositório
$ git clone https://github.com/MTevangelista/books-api.git
- Rode a API
# Instale as depedencias
$ yarn ou npm install
# Rode a aplicação
$ yarn dev ou npm run dev
# O servidor inciará na porta: 3333 - acesse http://localhost:3333
- Link do deploy da api: https://books-backend-api.herokuapp.com/
- Book
Field | Type | Description |
---|---|---|
imageUrl | String | Url da imagem do livro. |
author | String | O nome do autor do livro. |
title | String | Título do livro. |
slug | String | Identificador único de cada livro. |
theme | String | Tema do livro. |
description | String | Descrição do livro. |
createdAt | String | Data de criação do livro. |
Exemplo de um GET: https://books-backend-api.herokuapp.com/api/books
Exemplo de um GET BY SLUG: https://books-backend-api.herokuapp.com/api/books/:slug
Exemplo de um POST: https://books-backend-api.herokuapp.com/api/books
{
"imageUrl": "https://cdn.pixabay.com/photo/2016/02/16/21/07/books-1204029__340.jpg",
"author": "Robert C. Martin",
"title": "Código Limpo",
"slug": "clean-code3",
"theme": "Tecnologia",
"description": "Mesmo códigos ruins podem funcionar. Mas se o código não estiver limpo, ele pode deixar uma organização de desenvolvimento de joelhos. Todos os anos, incontáveis horas e recursos significativos são perdidos devido a códigos mal escritos. Mas não precisa ser assim.",
"createdAt": "2020-09-21"
}
Exemplo de um PUT: https://books-backend-api.herokuapp.com/api/books/api/books/:_id
{
"imageUrl": "https://cdn.pixabay.com/photo/2016/02/16/21/07/books-1204029__340.jpg",
"author": "Novo nome",
"title": "Novo title",
"theme": "Novo",
"description": "Todos os anos, incontáveis horas e recursos significativos são perdidos devido a códigos mal escritos. Mas não precisa ser assim.",
"createdAt": "2010-08-21"
}
Exemplo de um DELETE: https://books-backend-api.herokuapp.com/api/books/api/books/:_id
O front-end do projeto foi desenvolvido com: Javascript, Vue.Js, Vue Router e Vuex.
-
Link do deploy do frontend: https://books-web.vercel.app/
-
Repositório do projeto: https://github.com/MTevangelista/books-web
Contribuições são o que fazem a comunidade open source um lugar incrível para aprender, inspirar e criar. Qualquer contribuição que você fizer será muito apreciada.
- Faça um Fork do projeto
- Crie uma Branch para sua Feature (
git checkout -b feature/FeatureIncrivel
) - Adicione suas mudanças (
git add .
) - Comite suas mudanças (
git commit -m 'Adicionando uma Feature incrível!
) - Faça o Push da Branch (
git push origin feature/FeatureIncrivel
) - Abra um Pull Request
👤 Matheus Evangelista