Skip to content

AbdusSattar-70/photo_gallery

Repository files navigation

Photo Gallery .

Screenshot

πŸ“— Table of Contents

πŸ“– Photo Gallery

Welcome to the Photo Gallery App! A fully responsive both mobile and desktop full-stack application built using React.js for the front-end and Node.js with Express.js for the back-end. It allows users to create and manage their photo galleries securely. This documentation provides insights into the project structure, key technologies used, and an overview of the application features.

πŸ›  Built With

Tech Stack

Client
Server
Database
  • Mongodb

Project Structure

The frontend of the Photo Gallery Web App is organized into a standard React project structure, including components, assets, and configuration files. The main folders and files in the project structure include:

  • .github/workflow/linters.yml: GitHub action CI/CD for automation build process.
  • src/: The source code for the React application.
    • assets/: Stores static assets such as images and styles.
    • layout/Root.jsx: The layout and entry point of the application.
    • main.js: Renders the React app and attaches it to the DOM.
    • pages/: Contains all React components used in the application.
    • pages/..: Contains about,Auth controll,errorpage, homepage, photo gallery, and all shared components .
    • routes/: Contains all Route declaration.
    • redux/: Contains all global state management logic.
  • package.json: Lists project dependencies and defines scripts for development and building.

Validation and Error Handling

  • The frontend employs validation and error handling to enhance the user experience:

  • Real-time validation of user input during registration to ensure data accuracy.

  • Comprehensive error handling for API requests, ensuring graceful responses to user interactions.

Google OAuth Integration

  • Google OAuth is seamlessly integrated into the app:
  • Users can register and log in using their Google accounts.
  • This integration ensures secure and straightforward access.

Key Features

  • User authentication with Firebase and JWT for secure access.
  • CRUD (Create, Read, Update, Delete) operations for photo galleries.

Drag-and-Drop Functionality

  • The app utilizes React-Beautiful-DnD to implement a smooth and intuitive drag-and-drop feature:
  • Drag-and-drop functionality for reordering images in galleries.
  • Simply drag an image and drop it in the desired position.
  • The updated order is immediately reflected.
  • Integration with Google OAuth for seamless user registration and login.
  • Real-time validation of user input for registration.
  • Logout functionality.

(back to top)

πŸš€ Live Demo

(back to top)

Usage

  • Sign up or log in using your Google account to access your photo galleries.
  • Create new galleries and add images to them.
  • Rearrange images within a gallery using drag-and-drop.
  • Delete galleries or individual images.
  • Enjoy seamless and secure access to your photo collections.

πŸ’» Getting Started

To get a local copy up and running, follow these steps.

Prerequisites

  • In order to run this project you need:

It would be best if you had some familiarity with Redux, CSS,JS, Vite-React and Tailwind.

  • A Computer (MAC or PC)
  • code editor (VSCode,Atom etc...)
  • A browser (Chrome,Mozilla,Safari etc...)
  • Version Control System (Git and Github)

Setup

Clone this repository to your desired folder:

       git clone https://github.com/AbdusSattar-70/photo_gallery.git
       cd photo_gallery

Install

Install this project with:

     npm install

Run tests and check errors

To run tests and check errors, run the following command:

  • To check Styelint error:-
   npx stylelint "\*_/_.{css,scss}"
  • To check Eslint error:-
  npx eslint "**/*.{js,jsx}"

Deployment

You can deploy this project using:

  • Render Hosting server or GitHub pages
   npm install
   npm run dev

(back to top)

πŸ‘₯ Authors

πŸ‘€ Abdus Sattar

(back to top)

πŸ”­ Future Features

  • Add Search functionality
  • Add web accessibility
  • Add about page and RBAC controll
  • Add test case using jest
  • Image Download and zoom options
  • Add Lazy loading

(back to top)

🀝 Contributing

Everybody is welcome to suggest, changes,Contributions, issues, and feature request in this project.

In order to do it, fork this repository, create a new branch and open a Pull Request from your branch.

Feel free to check the issues page.

(back to top)

⭐️ Show your support

If you like this project, Please give me ⭐️ and you can use it following MIT license.

(back to top)

πŸ™ Acknowledgments

I would like to thank Firebase, React, Mongodb, Netlify and Render team for the opportunity to learn and use their platform and services free to use.

(back to top)

πŸ“ License

This project is under MIT licensed.

(back to top)