A web application that processes CSV files containing words and downloads relevant icons for each word. Built with Node.js and Express, deployed on Vercel.
Visit the live application at: https://icons-downloader.vercel.app/
- CSV file upload and processing
- Automated icon search and download
- Multithreaded processing using Worker Threads
- Organized folder structure for downloaded icons
- Automatic ZIP file creation
- Progress tracking and error handling
- Responsive web interface
- Drag and drop file upload
- Serverless deployment on Vercel
- Node.js (v14 or higher)
- npm (v6 or higher)
- Clone the repository:
git clone <repository-url>
cd IconDownloader
- Install dependencies:
npm install
- For local development:
npm run dev
This application is deployed on Vercel. To deploy your own instance:
- Install Vercel CLI:
npm install -g vercel
- Login to Vercel:
vercel login
- Deploy:
vercel
- Visit https://icons-downloader.vercel.app/ or your local development server
- Upload a CSV file containing words (one word per column)
- The application will:
- Process the CSV file
- Search for icons for each word
- Download the first two icons found for each word
- Organize icons in folders named after each word
- Create a ZIP file containing all downloaded icons
- Download the ZIP file when processing is complete
IconDownloader/
├── api/
│ └── index.js # Serverless API endpoint
├── public/
│ ├── index.html
│ ├── styles.css
│ ├── script.js
│ └── upload-icon.svg
├── worker.js
├── vercel.json # Vercel configuration
├── package.json
└── README.md
POST /api/upload
: Accepts CSV file upload and returns download URL for the ZIP file- Request: multipart/form-data with 'file' field containing CSV
- Response: JSON with download URL and processing statistics
The application includes comprehensive error handling for:
- Invalid file types
- Network issues during icon downloads
- Processing errors
- API rate limits
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the ISC License.