This is the capstone project of the third module in the Microverse program.
Check the below contents for further details about this project.
This project displays a simple list of all world countries with some details for each countries.
Project implemented with ReactJS
framework.
It applies Components
and Hooks
along with GitFlow
workflow.
State management is implemeneted using Redux
& Redux Toolkit
.
External data fetching is done with Thunk
api.
Navigation inside the app is implemented using React Router
.
Styling inside the project is done with CSS Modules
.
Unit testing is handles with Jest
framework.
All project dynamic files are contained in src
directory while static assets are in public
directory.
The live build is generated inside the build
directory.
Also config linters for (CSS3
/ JavaScript
) in the .github
folder.
📌 Live Demo:
📌 Tech Stack:
- Framework used is
ReactJS
- State management by
Redux Toolkit
- Page structure is built with
JSX
- Styling is built with
CSS3
- Dynamic content is built with
ES6 JavaScript
- Bundling is done with
WebPack
- Uint testing with
Jest
📌 Key Features:
- Single page app with all content loaded dynamically
- Responsive layout with all screen sizes
- Data list is persistent & fetched from remote server
- Filtering countries list by region names
- Displays individual country details
- Transition effect between routed pages
- Back navigation to main page
You can easily download or fork this repository and work on it immadiately!
📌 Prerequisites:
NodeJS
for installing & running all packages
📌 Installation:
- Install all dependencies with
npm
npm install
📌 Development:
- For live development on
localhost:3000
run:
npm run start
📌 Testing:
- Unit testing is done with:
npm run test
📌 Deployment:
- You can deploy this project by uploading files in the
build
folder to a live server. - Create the distribution build using this command:
npm run build
📌 Mahammad:
Some additional features I may implement in the project:
- Using
CSS
preprocessors and their relevant loaders - Implement advanced
Hooks
features likeuseMemo
Wish to contribute to this project?
Contributions, issues, and feature requests are more than welcome!
Feel free to check the issues page too.
Like this project? Show your support by starring!
I thank everyone at Microverse for guiding me through this project.
Special thanks to Nelson Sakwa who built the reference design.
This project is MIT licensed.