arlagonix / quizzical-app

Quizzical App. Solution to a Scrimba challenge

Home Page:https://arlagonix.github.io/quizzical-app/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Quizzical

Made with HTML, CSS, TypeScript, ReactJS, styled-components, react-router, redux-toolkit
Bootstrapped with Create React App

GitHub last commit GitHub

πŸ–Ό Screenshots β€’ ℹ️ About β€’ βš™οΈ Tools β€’ πŸ”¨ How to Build Project β€’ πŸ“ File Structure

πŸ“¦ NPM Packages worth mentioning β€’ πŸ’‘ Details β€’ πŸ”— Useful resources β€’ πŸ‘€ Author

πŸ–Ό Screenshots

ℹ️ About

This is a solo challenge "Quizzical" from Scrimba React Course (link).

The challenge is to create from scratch a Quizzical application.

API: https://opentdb.com/api_config.php

I made my own Figma prototype and redesigned the whole application.

Figma prototype: https://www.figma.com/file/0SIScG6N67cgfIvsY5cQng/Quizzical-App

βš™οΈ Tools

  • HTML5
    • ReactJS
  • CSS
    • styled-components
  • TypeScript
    • ReactJS
    • Redux
    • Redux Toolkit
  • NodeJS
  • Create React App
  • Github Pages

πŸ”¨ Build project

Command Description
npm install Installs required npm packages. Run it before building the project
npm start Starts a local web server with HMR (Hot Module Replacement) for development
npm run predeploy Builds the project, and outputs to the folder ./build

πŸ“ File Structure

β”œβ”€β”€ πŸ“ docs                   Additional information, documentation 
β”‚   └── πŸ“ results            Screenshots of how the application works after being fully developed
|
β”œβ”€β”€ πŸ“ public                 Static assets: images, icons, favicons, index.html
|
β”œβ”€β”€ πŸ“ src                            Source files needed for application development
β”‚   β”œβ”€β”€ πŸ“ app                        Hooks for work with Redux store (Redux toolkit)
β”‚   β”œβ”€β”€ πŸ“ assets                     Static assets, referred to in src
β”‚   β”œβ”€β”€ πŸ“ components                 React components
|   |   └── πŸ“ Component Name
|   |       β”œβ”€β”€ πŸ“ index.tsx          Component logic
|   |       β”œβ”€β”€ πŸ“ index.styled.tsx   Component styles
|   |       └── πŸ“ index.types.tsx    Component types (optional)
β”‚   β”œβ”€β”€ πŸ“ features                   Redux slices (Redux toolkit)
β”‚   β”œβ”€β”€ πŸ“ pages                      React page components
|   |   └── πŸ“ Page Name
|   |       β”œβ”€β”€ πŸ“ index.tsx          Page logic
|   |       β”œβ”€β”€ πŸ“ index.styled.tsx   Page styles
|   |       └── πŸ“ index.types.tsx    Page types (optional)
β”‚   β”œβ”€β”€ πŸ“ styles                     Global styles
β”‚   β”œβ”€β”€ πŸ“ App.tsx                    App React component
β”‚   β”œβ”€β”€ πŸ“ index.tsx                  Entry point for the module bundler
β”‚   └── πŸ“ react-app-env.d.ts         Some Typescript stuff for Create React App
|
β”œβ”€β”€ πŸ“ .gitignore             Instructions for Git about what files to ignore
β”œβ”€β”€ πŸ“ LICENSE                MIT License. Basically you can do whatever you want with the code
β”œβ”€β”€ πŸ“ README.md              Project description
β”œβ”€β”€ πŸ“ package-lock.json      Keeps track of the exact version of every package that is installed
β”œβ”€β”€ πŸ“ package.json           Various metadata relevant to the project, scripts, dependencies
└── πŸ“ tsconfig.json          TypeScript configuration file

πŸ“¦ NPM Packages worth mentioning

react-detect-offline Used it to display a component that is shown only when the user is offline
react-loading-skeleton Used it to show skeletons while fetching new data
react-toastify Used it to display notifications that disappear over time
react-outside-click-handler Used it to close options list in select component when clicking outside
@reduxjs/toolkit, react-redux Used them to store state in one place
react-router-dom Used it to route user between pages

πŸ’‘ Details

My first ReactJS project with Create React App.

  • First time using Redux, Redux toolkit
  • Made custom select components
  • Made a custom modal window (React Portal). Changing settings will change query params for API
  • Made API requests using RTK Query
  • Custom skeleton components. They rely on a react-loading-skeleton library
  • Made routing with React Router

This was quite a big project. The description is quite short, but well... I spent about 2 weeks on this project, and it wasn't easy at all.

πŸ”— Useful resources

πŸ‘€ Author

About

Quizzical App. Solution to a Scrimba challenge

https://arlagonix.github.io/quizzical-app/

License:MIT License


Languages

Language:TypeScript 96.3%Language:HTML 3.7%