Skip to content

Imagify is a modern full-stack image management web application that allows users to effortlessly upload, transform, manage, and share images across various platforms. Designed with scalability, speed, and user-friendliness in mind, Imagify leverages cloud storage, Firebase.

Notifications You must be signed in to change notification settings

amanpoddar-dev12/Imagify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

58 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“Έ Imagify β€” Your Ultimate Image Upload & Sharing Platform

Imagify is a modern full-stack image management web application that allows users to effortlessly upload, transform, manage, and share images across various platforms. Designed with scalability, speed, and user-friendliness in mind, Imagify leverages cloud storage, Firebase, and modern UI/UX principles to deliver a seamless experience.


πŸš€ Features

πŸ‘€ User-Side

  • πŸ” Signup/Login with Email, Google, GitHub OAuth via Firebase
  • ☁️ Drag-and-drop image uploading
  • ✨ Resize, crop, compress, apply filters
  • 🏷️ Add descriptions, tags, titles
  • πŸ“€ One-click social sharing
  • πŸ” Search & filter by tags, name, date
  • πŸ—‚οΈ Organize with albums/folders
  • πŸ”— Copy image URL & download
  • πŸ’³ Razorpay integration for credit purchase

🧠 Tech Stack

Category Tools & Libraries
Frontend React.js, Tailwind CSS, React Router, Axios, React Query, Toastify, Framer Motion
Backend Node.js, Express.js, Multer, JWT
Database MongoDB + Mongoose
Image Hosting Cloudinary
Auth JWT, Google OAuth2, Firebase (Email, Google & GitHub sign-in)

🧬 System Design Overview

Here’s a visual representation of Imagify's high-level architecture:

Low Level Design

πŸ“ Project Structure

imagify/
β”œβ”€β”€ client/              # React frontend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”œβ”€β”€ stores/
β”‚   β”‚   β”œβ”€β”€ auth/         # Firebase auth integration (Email, Google, GitHub)
β”‚   β”‚   β”œβ”€β”€ ui/           # UI-specific components
β”‚   β”‚   └── App.jsx
β”‚   └── index.html
β”œβ”€β”€ server/              # Express backend
β”‚   β”œβ”€β”€ config/           # Firebase service key + DB config
β”‚   β”œβ”€β”€ controllers/
β”‚   β”œβ”€β”€ middleware/
β”‚   β”œβ”€β”€ models/
β”‚   β”œβ”€β”€ routes/
β”‚   β”œβ”€β”€ utils/
β”‚   └── index.js
β”œβ”€β”€ README.md
└── package.json

πŸ”‘ Environment Variables

Backend (/server/.env)

PORT=5000
MONGODB_URL=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
CLIPDROP_API=your_clipdrop_api_key
RAZORPAY_KEY_ID=your_razorpay_key_id
RAZORPAY_KEY_SECRET=your_razorpay_secret
CURRENCY=INR
CLOUDINARY_CLOUD_NAME=your_cloudinary_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret

# Firebase Admin SDK
# βœ… Option 1: Local dev using file path
VITE_FIREBASE_ADMIN_KEY_PATH=./config/firebaseServiceKey.json

# πŸ” Option 2: Production environment, paste minified JSON
FIREBASE_SERVICE_ACCOUNT={...}

Frontend (/client/.env)

VITE_BACKEND_URL=http://localhost:5000
VITE_FIREBASE_API_KEY=your_firebase_api_key
VITE_FIREBASE_AUTH_DOMAIN=your_auth_domain
VITE_FIREBASE_PROJECT_ID=your_project_id
VITE_FIREBASE_STORAGE_BUCKET=your_storage_bucket
VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
VITE_FIREBASE_APP_ID=your_app_id
VITE_RAZORPAY_KEY_ID=your_razorpay_key_id
VITE_API_KEY=your_custom_api_key

🌐 API Endpoints

πŸ” Auth & User (/user)

POST   /register          β†’ registerUser
POST   /login             β†’ loginUser
POST   /forget-password   β†’ forgetPassword
POST   /social-login      β†’ social login via Firebase (Google/GitHub)
POST   /update-user       β†’ updateUser
GET    /credits           β†’ userCredits (protected)
POST   /pay-razor         β†’ paymentRazorPay (protected)
POST   /verify-razor      β†’ verifyRazorPay (protected)
GET    /saved-images      β†’ getSavedImages (protected)
POST   /save-image        β†’ saveImage (protected)
GET    /all-users         β†’ getAllUsers (protected/admin)
GET    /all-transactions  β†’ getAllTransaction (protected/admin)

πŸ–ΌοΈ Image Processing (/image)

POST   /generate-image        β†’ generateImage (protected)
POST   /reImagine             β†’ reImagine (protected, multipart)
POST   /removebackground      β†’ removeBackGround (protected, multipart)
POST   /productphotography    β†’ productPhotography (protected, multipart)
POST   /removetext            β†’ removeText (protected, multipart)
POST   /upscaling             β†’ upscaling (protected, multipart)
POST   /replace-background    β†’ replaceBackground (protected, multipart)
POST   /cleanup               β†’ cleanup (protected, multipart with mask + image)

▢️ Running the App Locally

Backend

cd server
npm install
npm run dev

Frontend

cd client
npm install
npm run dev

Visit: http://localhost:5173


🐳 Dockerize Imagify

1. Backend Dockerfile:

FROM node:18
WORKDIR /app
COPY ./server ./
RUN npm install
CMD ["npm","run","dev"]
EXPOSE 5000

2. Frontend Dockerfile:

FROM node:18
WORKDIR /app
COPY ./client ./
RUN npm install && npm run build
RUN npm install -g serve
CMD ["serve","-s","dist"]
EXPOSE 5173

3. docker-compose.yml:

version: "3.9"
services:
  backend:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "5000:5000"
    environment:
      - MONGODB_URL=${MONGODB_URL}
      - JWT_SECRET=${JWT_SECRET}
      # include all backend env vars

  frontend:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "5173:5173"
    depends_on:
      - backend

4. Bring it up:

docker-compose up --build

πŸ“„ License

This project is licensed under the MIT License. See the LICENSE file for more details.


🌐 Connect with Me


Built with ❀️ using the MERN Stack, Tailwind CSS, Firebase, Cloudinary, and Docker

About

Imagify is a modern full-stack image management web application that allows users to effortlessly upload, transform, manage, and share images across various platforms. Designed with scalability, speed, and user-friendliness in mind, Imagify leverages cloud storage, Firebase.

Resources

Stars

Watchers

Forks

Languages