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.
- π 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
| 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) |
Hereβs a visual representation of Imagify's high-level architecture:
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
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={...}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_keyPOST /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)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)cd server
npm install
npm run devcd client
npm install
npm run devVisit: http://localhost:5173
1. Backend Dockerfile:
FROM node:18
WORKDIR /app
COPY ./server ./
RUN npm install
CMD ["npm","run","dev"]
EXPOSE 50002. 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 51733. 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:
- backend4. Bring it up:
docker-compose up --buildThis project is licensed under the MIT License. See the LICENSE file for more details.
Built with β€οΈ using the MERN Stack, Tailwind CSS, Firebase, Cloudinary, and Docker
