Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
2f1a59f
clone node.js server
JonathanThomaz Oct 8, 2020
4ef8695
upadate .env
JonathanThomaz Oct 8, 2020
0b9747d
fix routes
JonathanThomaz Oct 8, 2020
1dc9d4d
Página sobre
GabrielCarmoSilva Oct 8, 2020
3c1c749
Add book register page, build first form layout
bmarcosps Oct 8, 2020
c5f3d8f
Update index.js
JonathanThomaz Oct 8, 2020
878b33d
Create BookController.js
JonathanThomaz Oct 8, 2020
fdfbcc0
Create Book.js
JonathanThomaz Oct 8, 2020
e07d845
Create book.routes.js
JonathanThomaz Oct 8, 2020
0e80cee
Clean server
JonathanThomaz Oct 8, 2020
55553bf
fix Book.js
JonathanThomaz Oct 8, 2020
07b42a5
Update README.md
LBeghini Oct 8, 2020
de431ea
fix controller and routes
JonathanThomaz Oct 8, 2020
81540ba
fix books
JonathanThomaz Oct 8, 2020
95d5a4b
Merge pull request #12 from app-masters/about
GabrielCarmoSilva Oct 8, 2020
c53d1e2
fix books
JonathanThomaz Oct 8, 2020
467afb4
Change icon, add googlecallback
bmarcosps Oct 8, 2020
6052d6e
Update Book.js
JonathanThomaz Oct 8, 2020
0ddfa88
Merge pull request #13 from app-masters/backend-server-nodejs
LBeghini Oct 8, 2020
52b53c6
Change API callback
bmarcosps Oct 8, 2020
261ee43
Create separate file for API
bmarcosps Oct 8, 2020
6f87c4f
Merge branch 'main' into book-form
bmarcosps Oct 8, 2020
fd7e25b
Merge pull request #14 from app-masters/book-form
bmarcosps Oct 8, 2020
16753e2
dotenv config
LBeghini Oct 8, 2020
6452318
Merge pull request #15 from app-masters/dotenv
LBeghini Oct 8, 2020
ef313d9
Fix Google API, set fetched info to state
bmarcosps Oct 8, 2020
bde094c
Finish adding google api results to state
bmarcosps Oct 8, 2020
37c21a7
Add visual feedback when isbn is not found
bmarcosps Oct 8, 2020
9134bdb
modularizando
IgorWestermann Oct 8, 2020
7d43ca8
Create api.js
JonathanThomaz Oct 8, 2020
cb2e5f0
add api
IgorWestermann Oct 8, 2020
aa4a1ae
Merge branch 'main' of https://github.com/app-masters/book-masters in…
IgorWestermann Oct 8, 2020
3ae6c14
add post and put
JonathanThomaz Oct 8, 2020
b3980dc
criando botao com rotas para as paginas about e register
IgorWestermann Oct 8, 2020
f737e4f
update env
JonathanThomaz Oct 8, 2020
36d2d1d
Add simple code documentation
bmarcosps Oct 8, 2020
e941bd7
Merge branch 'api-google-isbn' of https://github.com/app-masters/book…
bmarcosps Oct 8, 2020
aaf209e
Merge pull request #16 from app-masters/api-google-isbn
bmarcosps Oct 8, 2020
73e7a13
ajustando servidor na branch
IgorWestermann Oct 8, 2020
3da508c
Merge branch 'main' into home
IgorWestermann Oct 8, 2020
f5fe3a9
Merge pull request #18 from app-masters/Update-README.md
LBeghini Oct 8, 2020
69981f7
Change book card Layout
bmarcosps Oct 13, 2020
762220d
Sort books by name and status
bmarcosps Oct 13, 2020
32afbda
Merge pull request #17 from app-masters/home
TiagoGouvea Oct 13, 2020
719a423
Create Lending model and controller
JonathanThomaz Oct 13, 2020
cd7d417
fix book
JonathanThomaz Oct 13, 2020
c74a0bb
Create user model and controller
JonathanThomaz Oct 13, 2020
eb71772
Add Loading spinner, Add Fetch to get books from server
bmarcosps Oct 13, 2020
5d00d01
Fix book card props to match identifiers from the database
bmarcosps Oct 13, 2020
58cca9b
Center Loading Indicator
bmarcosps Oct 13, 2020
21f1dae
Add default error message when the api return an error
bmarcosps Oct 13, 2020
67869b8
Merge pull request #21 from app-masters/fetch-books-api
TiagoGouvea Oct 13, 2020
ea85ee8
Add call to AppMasters API to check if user exists
bmarcosps Oct 13, 2020
98a2415
Create lending.routes.js
JonathanThomaz Oct 13, 2020
8d106d7
Update index.js
JonathanThomaz Oct 13, 2020
83eb463
Update UserController.js
JonathanThomaz Oct 13, 2020
9be0b66
Create user.routes.js
JonathanThomaz Oct 13, 2020
61e5440
Update LendingController.js
JonathanThomaz Oct 13, 2020
651544c
Merge branch 'main' into backend-server-nodejs
JonathanThomaz Oct 13, 2020
6ed8ec4
Add popups with messages asking user to register or validating reserv…
bmarcosps Oct 13, 2020
44aa36f
Refactor some states at Product.js to make integration with backend e…
bmarcosps Oct 13, 2020
b27f729
Implements QRcode structure
LBeghini Oct 13, 2020
5285dda
Merge pull request #24 from app-masters/qrcode
TiagoGouvea Oct 13, 2020
275c61f
Ajustes
LBeghini Oct 13, 2020
722614c
Merge pull request #28 from app-masters/ajustes
TiagoGouvea Oct 13, 2020
a18f264
Merge branch 'main' into appmaster-user-api
bmarcosps Oct 13, 2020
c480e40
Merge branch 'main' into appmaster-user-api
bmarcosps Oct 13, 2020
d42d3a8
Minor fixes
LBeghini Oct 13, 2020
0385640
Merge pull request #22 from app-masters/backend-server-nodejs
TiagoGouvea Oct 13, 2020
6b73211
Merge branch 'main' into appmaster-user-api
bmarcosps Oct 13, 2020
d528379
Merge pull request #27 from app-masters/appmaster-user-api
bmarcosps Oct 13, 2020
e7728cd
Fix merge issues
bmarcosps Oct 13, 2020
5a14021
Merge pull request #29 from app-masters/merge-fix
bmarcosps Oct 13, 2020
f97d536
Separation of server and client in different folders, removal of .env…
IgorBaio Oct 14, 2020
aadc872
Creation of the .env and .env-sample on both folders, creation of the…
IgorBaio Oct 14, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,17 @@

- [1. Sumário](#1-sumário)
- [2. O Projeto](#2-funcionando)
- [3. O Design](#3-0-design)
- [3.1. Feed](#31-feed)
- [4. Dependências](#5-dependências)
- [3. Inicialização](#3-funcionando)
- [4. O Design](#3-0-design)
- [5. Dependências](#5-dependências)

## 2. Sobre o projeto
O projeto consiste na criação de um biblioteca virtual como desafio do processo de seleção de estágio da empresa [App Masters](https://appmasters.io/en/)

### Backend Node

Foi utilizada a [API](https://github.com/caiocesaroliveira/api-node-express-mongo) para Backend Node do repositório do [caiocesaroliveira](https://github.com/caiocesaroliveira).


## 3. Inicialização

Expand All @@ -35,7 +39,7 @@ Para o design da aplicação, decidi utilizar padrões simples mas moderno,utili
Para execução do projeto, utilizei as seguintes dependência:
utilizei a biblioteca visual Matirial-UI, por uma questão de afinidade.

### 5.1. [Material-UI](https://material-ui.com/)
#### 5.1. [Material-UI](https://material-ui.com/)
Utilizei a biblioteca visual por uma questão de afinidade.
#### 5.2. [React Router Dom](https://reactrouter.com/)
O React Router Dom é uma das bibliotecas mais utilizadas para configurar navegação.
Expand Down
1 change: 1 addition & 0 deletions client/.env.sample
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
REACT_APP_API_BOOKS_NODE=
3 changes: 3 additions & 0 deletions .gitignore → client/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,14 @@

# misc
.DS_Store
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
.env

npm-debug.log*
yarn-debug.log*
yarn-error.log*

14,363 changes: 14,363 additions & 0 deletions client/package-lock.json

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions package.json → client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,13 @@
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.3.2",
"@testing-library/user-event": "^7.1.2",
"axios": "^0.20.0",
"dotenv": "^8.2.0",
"moment": "^2.29.0",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"react-loading": "^2.0.3",
"react-qr-reader": "^2.2.1",
"react-router-dom": "^5.2.0",
"react-scripts": "3.4.3",
"styled-components": "^5.2.0"
Expand All @@ -35,5 +39,8 @@
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"axios": "^0.20.0"
}
}
File renamed without changes
File renamed without changes
File renamed without changes.
File renamed without changes
File renamed without changes.
File renamed without changes.
211 changes: 211 additions & 0 deletions client/src/About.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
import React from "react";
import CssBaseline from "@material-ui/core/CssBaseline";
import Grid from "@material-ui/core/Grid";
import Typography from "@material-ui/core/Typography";
import Container from "@material-ui/core/Container";
import Box from "@material-ui/core/Box";
import { makeStyles } from "@material-ui/core/styles";

import gabrielSilvaImg from "./assets/img/gabriel-silva.png";
import jonathanThomazImg from "./assets/img/jonathan-thomaz.jpg";
import brunoMarcosImg from "./assets/img/bruno-marcos.jpg";
import laviniaBeghiniImg from "./assets/img/lavinia-beghini.jpg";
import caioCesarImg from "./assets/img/caio-cesar.jpg";

const useStyles = makeStyles((theme) => ({
icon: {
marginRight: theme.spacing(2),
},
heroContent: {
backgroundColor: theme.palette.background.paper,
paddingTop: 40,
height: "50vh",
},
heroText: {
fontFamily: "Poppins, sans-serif",
color: "#000000",
fontSize: 50,
marginTop: 20,
},
description: {
fontFamily: "Poppins, sans-serif",
color: "#000000",
fontSize: 18,
marginTop: 5,
padding: 15,
},
heroDev: {
fontFamily: "Poppins, sans-serif",
color: "#000000",
fontSize: 30,
padding: 15,
marginTop: 5,
},
link: {
fontFamily: "Poppins, sans-serif",
fontSize: 15,
paddingLeft: 15,
},
spacing: {
marginBottom: 5,
},
secondBox: {
backgroundColor: "#ffffff",
}
}));


export default function About() {
const classes = useStyles();

return (
<React.Fragment>
<CssBaseline />
<Container fluid>
<Box
className={classes.heroContent}>
<Typography
className={classes.heroText}
display="flex"
component="h1"
align="center"
>
Sobre
</Typography>
<Typography
className={classes.description}
display="flex"
align="justify"
>
Este projeto foi desenvolvido como projeto de seleção de estágio da App Masters.
Temos como objetivo montar uma biblioteca pública, onde todos podem usufruir e adquirir
conhecimento!
</Typography>
<Typography
className={classes.heroDev}
display="flex"
component="h1"
align="justify"
>
Desenvolvedores
</Typography>
</Box>
</Container>
<Container fluid>
<Box
className={classes.secondBox}>
<Grid container className={classes.spacing}>
<Grid item xs={12} md={3}>
<img width="200" height="200" src={gabrielSilvaImg}></img>
</Grid>
<Grid item xs={12} md={6}>
<Typography
className={classes.heroDev}
display="flex"
component="h3"
align="justify"
>
Gabriel Silva
</Typography>
<Typography
className={classes.link}
display="flex"
align="justify"
>
<a target="_blank" href="https://bit.ly/2GAYt2E">https://bit.ly/2GAYt2E</a>
</Typography>
</Grid>
</Grid>
<Grid container className={classes.spacing}>
<Grid item xs={12} md={3}>
<img width="200" height="200" src={jonathanThomazImg}></img>
</Grid>
<Grid item xs={12} md={6}>
<Typography
className={classes.heroDev}
display="flex"
component="h3"
align="justify"
>
Jonathan Thomaz
</Typography>
<Typography
className={classes.link}
display="flex"
align="justify"
>
<a target="_blank" href="https://bit.ly/3nrod2a">https://bit.ly/3nrod2a</a>
</Typography>
</Grid>
</Grid>
<Grid container className={classes.spacing}>
<Grid item xs={12} md={3}>
<img width="200" height="200" src={brunoMarcosImg}></img>
</Grid>
<Grid item xs={12} md={6}>
<Typography
className={classes.heroDev}
display="flex"
component="h3"
align="justify"
>
Bruno Marcos
</Typography>
<Typography
className={classes.link}
display="flex"
align="justify"
>
<a target="_blank" href="https://bit.ly/3iFg0E4">https://bit.ly/3iFg0E4</a>
</Typography>
</Grid>
</Grid>
<Grid container className={classes.spacing}>
<Grid item xs={12} md={3}>
<img width="200" height="200" src={laviniaBeghiniImg}></img>
</Grid>
<Grid item xs={12} md={6}>
<Typography
className={classes.heroDev}
display="flex"
component="h3"
align="justify"
>
Lavínia Beghini
</Typography>
<Typography
className={classes.link}
display="flex"
align="justify"
>
<a target="_blank" href="https://bit.ly/3lrFLJO">https://bit.ly/3lrFLJO</a>
</Typography>
</Grid>
</Grid>
<Grid container className={classes.spacing}>
<Grid item xs={12} md={3}>
<img width="200" height="200" src={caioCesarImg}></img>
</Grid>
<Grid item xs={12} md={6}>
<Typography
className={classes.heroDev}
display="flex"
component="h3"
align="justify"
>
Caio César
</Typography>
<Typography
className={classes.link}
display="flex"
align="justify"
>
<a target="_blank" href="https://bit.ly/3lqd8MV">https://bit.ly/3lqd8MV</a>
</Typography>
</Grid>
</Grid>
</Box>
</Container>
</React.Fragment>
);
}
File renamed without changes.
107 changes: 107 additions & 0 deletions client/src/Books.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
import React, { Component } from "react";
import CssBaseline from "@material-ui/core/CssBaseline";
import Grid from "@material-ui/core/Grid";
import Container from "@material-ui/core/Container";
import BookCardAlugado from "./Components/BookCardAlugado";
import BookCardDisponivel from "./Components/BookCardDisponivel";
import api from "./services/api";
import LoadingSpinner from "./Components/LoadingSpinner";

class Books extends Component {
constructor(props) {
super(props);
this.state = {
errorMessage: '',
isLoaded: false,
livros: [],
};
}


async fetchBooks() {
return await api.get('/books/');

}


async componentDidMount() {
try {
const response = await this.fetchBooks();
//console.log(response)
if (response.status !== 200) {
throw Error(response.statusText);
}

const json = await response.data;

const sortedBooks = json.sort((bookA, bookB) => {
if(bookA.status === bookB.status){
if(bookA.title < bookB.title ){return -1;}
if(bookA.title > bookB.title ){return 1;}
return 0;
} else {
return bookA.status === bookB.status ? 0 : bookA.status? 1 : -1;
}
});

this.setState({
errorMessage: '',
isLoaded: true,
livros: sortedBooks
});

} catch (error) {

this.setState({
errorMessage: error.message,
isLoaded: false,
livros: []
});

console.log(error);
}

}



render() {
if(this.state.errorMessage != ''){
return <h3>{this.state.errorMessage}</h3>
}
if(!this.state.isLoaded){
//console.log(this.state.isLoaded)
return <LoadingSpinner/>
}

let booksCards = this.state.livros.map((book) => {
console.log("teste", book);
return (book.status === "true") ? (
<Grid item xs={12} sm={6} md={4}>
<BookCardAlugado book={book} />
</Grid>
) : (
<Grid item xs={12} sm={6} md={4}>
<BookCardDisponivel book={book} />
</Grid>
);
});


return (
<React.Fragment>
<CssBaseline />
<Container maxWidth="md">
<Grid
container
spacing={2}
style={{ marginTop: "24px", marginBottom: "24px" }}
>
{booksCards}
</Grid>
</Container>
</React.Fragment>
);
}
}
export default Books;
Loading