Git Product home page Git Product logo

bellybrains's Introduction

Belly Brains - A ReactJS Learning Journey

Welcome to Belly Brains, a personal project documenting my journey into the exciting world of ReactJS. This repository serves as a log for my progress, featuring the implementation of various ReactJS concepts and the continuous evolution of a food recipe center.

Project Overview

Belly Brains is more than just a recipe center; it's a dynamic platform that showcases my journey in ReactJS, continually incorporating new features and best practices.

Features Implemented

  1. Client-Side Routing: Navigate seamlessly through different sections of the project with smooth client-side routing, providing a more dynamic user experience.

  2. Authentication with Firebase: Secure your experience using Firebase authentication, ensuring that only authorized users can access specific functionalities within the project.

  3. State Management with Redux Toolkit: Efficiently manage the state of the application using Redux Toolkit, providing a centralized store for seamless data flow.

  4. Styling with Styled Components: Enhance the visual appeal of the project with Styled Components, allowing for modular and dynamic styling of React components.

  5. Image Lazy Loading: Improve page loading performance by implementing image lazy loading, ensuring that images are loaded only when they come into the viewport.

  6. Light/Dark Mode Toggle: Provide users with the flexibility to choose between light and dark modes, enhancing the overall user experience.

  7. Page Lazy Loading: Optimize performance by implementing page lazy loading, ensuring that only the necessary components are loaded when navigating through different sections of the project.

  8. Cart with FireStore: Implement a cart functionality with Firestore, enabling users to add and manage their selected recipes for ordering.

  9. Meme and useCallback for Performance: Utilize React.memo and useCallback for optimized performance in rendering components and handling callbacks.

  10. Animations with Framer Motion: Enhance user interactions with smooth animations using Framer Motion library.

  11. Illustrations: Integrate illustrations to add visual appeal and enhance the overall aesthetic of the project.

  12. Responsiveness: Ensure a seamless experience across various devices with a responsive design.

  13. Debounce Searching: Implement debounce searching for an improved and efficient search functionality.

React Hooks Utilized

  • useRef
  • useState
  • useReducer
  • useEffect
  • useLayoutEffect
  • useContext
  • useCallback

React APIs Used

  • createContext
  • lazy
  • memo

React Inbuilt Components

  • Fragment
  • StrictMode
  • Suspense

Learning Progress

Milestones

  • Milestone 1: Mastered Basic React Concepts and Components
  • Milestone 2: Implemented Advanced Routing with React Router
  • Milestone 3: Integrated Firebase Authentication for User Security
  • Milestone 4: Enhanced State Management with Redux Toolkit
  • Milestone 5: Explored Styled Components for Dynamic Styling
  • Milestone 6: Optimized Performance with Image Lazy Loading
  • Milestone 7: Introduced Light/Dark Mode Toggle for User Flexibility
  • Milestone 8: Achieved Page Optimization with Lazy Loading
  • Milestone 9: Established Cart Functionality with Firestore
  • Milestone 10: Implemented React.memo and useCallback for Performance
  • Milestone 11: Added Smooth Animations with Framer Motion
  • Milestone 12: Integrated Illustrations for Visual Appeal
  • Milestone 13: Ensured Responsiveness Across Various Devices
  • Milestone 14: Implemented Efficient Debounce Searching

Lessons Learned

  • Lesson 1: Understanding React Component Lifecycle
  • Lesson 2: State Management with React Hooks
  • Lesson 3: Optimizing Performance with React.memo()
  • Lesson 4: Firebase Authentication Setup and Configuration
  • Lesson 5: Leveraging Redux Toolkit for Efficient State Handling
  • Lesson 6: Mastering Styled Components for Stylish UI Development
  • Lesson 7: Implementing Image Lazy Loading Techniques
  • Lesson 8: Creating a Seamless Light/Dark Mode Toggle
  • Lesson 9: Enhancing User Experience with Page Lazy Loading
  • Lesson 10: Integrating and Debugging External APIs for Ordering Functionality
  • Lesson 11: Fine-tuning Performance with React.useCallback
  • Lesson 12: Crafting Engaging Animations with Framer Motion
  • Lesson 13: Design Principles for Effective Illustration Integration
  • Lesson 14: Ensuring Cross-Device Compatibility and Responsiveness
  • Lesson 15: Improving Search Functionality with Debounce

Future Plans

As of now, this marks the final version of the Belly Brains project for me. However, the journey doesn't end here! I invite the community to contribute, suggest improvements, and make this project even better.

How to Contribute

  1. Fork the repository to your GitHub account.
  2. Create a new branch for your feature or bug fix: git checkout -b feature-name.
  3. Implement your changes and commit them: git commit -m 'Description of the change'.
  4. Push your changes to your forked repository: git push origin feature-name.
  5. Open a pull request from your forked repository to the main project repository.

Your contributions, whether big or small, are highly appreciated. Let's collaborate and continue enhancing Belly Brains together!

Acknowledgments

I want to express my appreciation, to the ReactJS community for the resources and support they have provided me with during this learning process. Special thanks to Muhammad Imtiaz Hussain

Feel free to explore, learn, and join me on this exciting adventure into the world of ReactJS!

Happy coding! ๐Ÿš€

bellybrains's People

Contributors

zain-khoso avatar

Watchers

 avatar

bellybrains's Issues

Json Server For Development

Right now in Development Belly Brains fetchs json data from a file. But we should do that with json server.
also simulate as if you are fetching from an actual server with setTimeout.

useRef

Go through the code base and see if there is need for useRef, and if there is then use that instead of the regular variables

Fetch Error

Use try catch statements in useEffect to catch an error if the server does not return the intended data.
Also use useState to store an error message and display it in the UI for the user to see that things didnt went well.

Axios

Use Axios to fetch data instead of the regular fetch api. and aslo create a cusstom hook to reuse the datafetching logic over many components

JSX Refactor

Refactor all of JSX code present.
All Restructure the file structure.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.