Convertify is a comprehensive file conversion web application inspired by CloudConvert, allowing users to convert files between various formats including documents, images, audio, video, and compressed archives with an intuitive and user-friendly interface.
- Multiple Format Support: Convert between common file formats (DOCX, PDF, JPG, PNG, MP3, WAV, MP4, ZIP, etc.)
- Intuitive Interface: Drag-and-drop file uploads with progress indicators
- Responsive Design: Works across desktop and mobile devices
- Conversion Options: Format-specific settings for optimized output
- User Authentication: Optional account creation for conversion history tracking
- Secure Processing: Files are encrypted during transfer and automatically deleted
- Containerized: Easy deployment using Docker
- Frontend: Next.js, React, TypeScript, Tailwind CSS, shadcn/ui
- File Processing: FFmpeg, ImageMagick, LibreOffice, ExifTool
- Storage: AWS S3 (or compatible services like MinIO)
- Caching/Queues: Redis
- Deployment: Docker, Docker Compose
- Node.js 18+ and npm
- Docker and Docker Compose (for containerized deployment)
- Clone the repository:
git clone https://github.com/Rutherford/convertify.git
cd convertify- Install dependencies:
npm install- Run the development server:
npm run dev- Open http://localhost:3000 in your browser
- Create a
.envfile with your environment variables:
S3_ENDPOINT=http://minio:9000
S3_ACCESS_KEY=minioadmin
S3_SECRET_KEY=minioadmin
S3_BUCKET=convertify
S3_REGION=us-east-1
- Build and start the containers:
docker-compose up -d- Access the application at http://localhost:3000
├── src/
│ ├── app/ # Next.js app directory
│ │ ├── about/ # About page
│ │ ├── auth/ # Authentication pages
│ │ ├── convert/ # File conversion interface
│ │ ├── dashboard/ # User dashboard
│ │ ├── formats/ # Supported formats page
│ │ ├── pricing/ # Pricing plans page
│ │ ├── api/ # API routes
│ ├── components/ # React components
│ │ ├── ui/ # UI components from shadcn/ui
│ │ ├── auth/ # Authentication components
│ ├── lib/ # Utility functions and libraries
│ │ ├── stores/ # Global state management
├── public/ # Static assets
├── Dockerfile # Docker configuration
├── docker-compose.yml # Docker Compose configuration
- User uploads a file via drag-and-drop or file browser
- The file is validated for format and size
- User selects the target format and conversion options
- The conversion job is queued and processed
- The converted file is made available for download
- Files are encrypted during transfer and storage
- Automatic file deletion after user-specified duration
- User authentication with secure password handling
- Rate limiting to prevent abuse
MIT