Skip to content

Commit

Permalink
Prueba técnica completada
Browse files Browse the repository at this point in the history
  • Loading branch information
Fredy Amaya committed Jan 16, 2024
1 parent c9d87e0 commit 9c1e1a8
Show file tree
Hide file tree
Showing 90 changed files with 7,074 additions and 0 deletions.
34 changes: 34 additions & 0 deletions pruebas/01-reading-list/feat0429/.eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
module.exports = {
env: {
browser: true,
es2021: true
},
extends: [
'standard-with-typescript',
'plugin:react/recommended'
],
overrides: [
{
env: {
node: true
},
files: [
'.eslintrc.{js,cjs}'
],
parserOptions: {
sourceType: 'script'
}
}
],
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module'
},
plugins: [
'react'
],
rules: {
'react/react-in-jsx-scope': 'off',
'@typescript-eslint/explicit-function-return-type': 'off'
}
}
24 changes: 24 additions & 0 deletions pruebas/01-reading-list/feat0429/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
42 changes: 42 additions & 0 deletions pruebas/01-reading-list/feat0429/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
This web application was developed to solve the code test provided by Spanish Twitch streamer Midudev. The test code consists of making a reading list application and is based on a real code test for junior developers.

To get more details about the guidelines, the link is provided: https://github.com/midudev/pruebas-tecnicas/tree/main/pruebas/01-reading-list

💻Run the following scripts to run the appplication:

1-cd ./reading-list
2-npm install (only if it has not been done before)
3-npm run dev
4-Open the link displayed on the terminal (http://localhost:5173/). The port can change so it can be different from 5173.

⚙ Run the following scripts to test the appplication:

1-cd ./reading-list
2-npm install (only if it has not been done before)
3-npm run test

📝 The application requirements are the following:

✔ The application shows a list of available books that the user can check.

✔ The user is able to create a reading list from the available books. It should be clear when a book has been added to the reading list and when it is not. It should be possible to move a book from the reading list to the list of available books.

✔ Users should be able to filter the list of available books by genre. Besides, there should be a counter to display the number of available books, books in the reading list and the available books of the selected genre.

✔ There should be a synchronization of the global state to display the number of books in the reading list and the available books that are still available. If a book is moved from the available books list to the reading list, both counters should be updated respectively.

✔ Reading list data should be persisted in the browser's localStorage. After reloading the page, the reading list shoud persist.


✔ Reading list data should be persisted in the browser's localStorage. After reloading the page, the reading list should persist.

✔ If the user opens the application in two different browser tabs, the changes made in one tab should be reflected in the other one as well.

✨ Additional Features

✔Available books search by title, author or ISBN

✔Filter book by pages

✔Pagination

14 changes: 14 additions & 0 deletions pruebas/01-reading-list/feat0429/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/book-stack.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>BookStack</title>
<meta name="description" content="Encuentra tu nueva aventura en nuestra estantería." />
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
40 changes: 40 additions & 0 deletions pruebas/01-reading-list/feat0429/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{
"name": "reading-list",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
"test": "vitest",
"preview": "vite preview"
},
"dependencies": {
"@react-spring/web": "9.7.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"zustand": "4.4.7"
},
"devDependencies": {
"@testing-library/react": "^14.1.2",
"@testing-library/user-event": "^14.5.2",
"@types/react": "^18.2.43",
"@types/react-dom": "^18.2.17",
"@typescript-eslint/eslint-plugin": "^6.15.0",
"@typescript-eslint/parser": "^6.14.0",
"@vitejs/plugin-react-swc": "^3.5.0",
"eslint": "^8.56.0",
"eslint-config-standard-with-typescript": "^43.0.0",
"eslint-plugin-import": "^2.25.2",
"eslint-plugin-n": "^15.0.0 || ^16.0.0 ",
"eslint-plugin-promise": "^6.0.0",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.5",
"happy-dom": "12.10.3",
"typescript": "^5.3.3",
"vite": "^5.0.8",
"vitest": "1.1.1"
}
}
Loading

0 comments on commit 9c1e1a8

Please sign in to comment.