Reshape is a modern, minimalist image compression application built with Astro and Electron. It provides a streamlined workflow for compressing multiple images simultaneously with advanced format conversion and quality control.
- π Drag & Drop Interface - Simple and intuitive file upload
- β‘ Fast Processing - Client-side compression using Canvas API
- π― Format Conversion - Support for WebP and AVIF formats
- π Smart Resizing - Automatic width optimization with aspect ratio preservation
- πΎ Batch Download - Single ZIP file with all compressed images
- π¨ Dark Theme - Modern black & white interface with green accents
- π± Responsive Design - Optimized for desktop use (500Γ500px)
- Frontend: Astro + TypeScript + Tailwind CSS v4
- Desktop: Electron
- Image Processing: Canvas API + JSZip
- Build Tool: Vite
- Package Manager: npm
Before running this application, make sure you have:
- Node.js (v18 or higher)
- npm (v8 or higher)
- Git (for cloning the repository)
git clone <your-repo-url>
cd reshapenpm installnpm run devThe application will be available at http://localhost:4321/
npm run electron# Build web version
npm run build
# Build desktop version
npm run electron:build- Drag and drop your image files onto the upload area
- Supported formats: JPEG, PNG, GIF, WebP, AVIF, SVG
- Output Format: Choose between WebP or AVIF
- Compression Quality: Adjust from 1% to 100%
- Maximum Width: Set the maximum width (maintains aspect ratio)
- Click "Transform" to start compression
- Images are processed automatically
- Download starts immediately as a ZIP file
- Stay on the config screen for multiple batches
- Use "Back" button to return to upload screen
- All settings are preserved between sessions
reshape/
βββ public/ # Static assets
β βββ icons/ # Application icons
β βββ favicon.svg # Website favicon
β βββ reshape.png # Logo files
βββ src/
β βββ components/ # Astro components
β β βββ ImageCompressor/
β β βββ ImageCompressor.astro
β β βββ ImageCompressor.css
β β βββ ImageCompressor.ts
β βββ layouts/ # Page layouts
β βββ pages/ # Application pages
β βββ styles/ # Global styles
βββ main.cjs # Electron main process
βββ package.json # Dependencies and scripts
βββ README.md # This file
No environment variables are required for local development.
The application is configured through:
astro.config.ts- Astro and Vite configurationmain.cjs- Electron window settingspackage.json- Build scripts and dependencies
| Script | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Build for production |
npm run preview |
Preview production build |
npm run electron |
Start Electron app |
npm run electron:build |
Build Electron app |
Port already in use
# Kill process using port 4321
lsof -ti:4321 | xargs kill -9Electron won't start
# Clear Electron cache
rm -rf ~/Library/Application\ Support/reshapeBuild errors
# Clear dependencies and reinstall
rm -rf node_modules package-lock.json
npm install- Astro team for the amazing framework
- Electron team for desktop app capabilities
- Tailwind CSS for the utility-first CSS framework
- JSZip for ZIP file creation
Built with β€οΈ using modern web technologies
Reshape - Transform your images, simplify your workflow