A modern, web-based Universal File Converter that allows users to upload image files and convert them instantly to a chosen format with a beautiful glassmorphism-themed UI. Built with React and Node.js, featuring a fast and expandable backend powered by Sharp for image processing.
🔗 Frontend: https://u-c.vercel.app/
🔗 Backend API: https://uconvert-f2mv.onrender.com
- Project Overview
- Features (MVP)
- Tech Stack
- Project Structure
- Installation and Setup
- Usage
- Future Enhancements
- Showcase
- Contributing
The UConvert is a real-world utility application designed to simplify file format conversions, initially focusing on common image formats such as JPG, PNG, WEBP, and AVIF. Users can upload an image, select the desired output format, and download the converted file instantly. The project showcases key web development skills including backend file processing, API design, and responsive UI/UX with a modern themed interface.
- File Upload: Support for
.jpg,.png,.webp,.avifimage formats - File Conversion: Convert images to selected formats with high quality using Sharp
- Download Converted File: Instantly download the processed converted image
- Responsive Glassmorphism UI: Modern dark theme with centered card, pure CSS folder icon, and a glowing blur background
- Drag and Drop: Intuitive drag & drop file upload with visual drag state indicator
- Error Handling: Clear error feedback for unsupported formats or failed conversions
| Layer | Technology |
|---|---|
| Frontend | React.js with Vite (modern ultra-fast build tool) |
| Backend | Node.js, Express.js |
| File Upload | Multer middleware for handling multipart file uploads |
| Image Processing | Sharp - high-performance image processing |
| API Communication | Axios for frontend-backend REST API requests |
| Styling | CSS with glassmorphism effects and responsive media queries |
UConvert/
├── client/ # React frontend
│ ├── src/
│ │ ├── App.jsx # Main React component and UI logic
│ │ └── App.css # Styles for glassmorphism theme and responsiveness
│ ├── public/
│ │ └── ... # Static assets (e.g., favicon, fonts if any)
│ └── package.json # Frontend dependencies and scripts
├── server/ # Express backend
│ ├── controllers/
│ │ └── convertController.js # File conversion logic using Sharp
│ ├── routes/
│ │ └── files.js # API routes for file upload and conversion
│ ├── uploads/ # Temporary uploaded file storage
│ ├── index.js # Express server setup and middleware
│ └── package.json # Backend dependencies and scripts
└── README.md # Project documentation
- Node.js (v16 or newer recommended)
- npm or yarn package manager
- Navigate to the server directory:
cd server - Install dependencies:
npm install - Start the backend server (default port 5000):
npm run dev
-
Open a new terminal and navigate to the client directory:
cd client -
Install dependencies:
npm install -
Start the React development server (default port 5173):
npm run dev -
Open your browser at
http://localhost:5173to access the app.
- Upload an image file (
.jpg,.png,.webp,.avif) via drag-and-drop or file selector - Select the desired output format from the dropdown (
JPG,PNG,WEBP,AVIF) - Click Convert to upload and convert the file on the backend
- When conversion completes, a download link will appear — click to save your converted image locally
- If any issues occur, clear error messages guide you accordingly
- Batch Processing: Convert multiple files simultaneously
- Audio/Video Conversion: Support formats such as
.mp3↔.wav,.mp4↔.webm - Document Conversion: Support
.docx↔.pdffile conversions - Compression Level Selection: Allow users to adjust quality/compression settings
- Dark/Light Mode Toggle: User option to switch themes
- Conversion Preview: Show before/after image preview inside the app
- Authentication: Add user accounts and history of conversions
- The sleek glassmorphism UI with pure CSS folder icon and glowing background effectively demonstrates modern frontend design
- The backend uses
sharpfor efficient, high-quality image processing - Drag & drop and responsive layout enhance user experience across devices
- Easily deployable on platforms like Vercel (frontend) and Render or Heroku (backend) for live demos
Contributions, issues, and feature requests are welcome! Feel free to fork the repository and submit a pull request.
When contributing:
- Follow the coding style and directory organization
- Test new functionalities locally before submitting
- Provide clear commit messages and documentation updates
Made with love by Harsha Verma