A production-ready Instagram Grid Carousel Maker with a Pinterest-inspired aesthetic. Create stunning carousel posts with prebuilt collage templates, drag-and-drop functionality, and AI-powered features.
- Template System: JSON-based prebuilt collage templates with Pinterest-style masonry grid gallery
- Canvas Editor: 3050x1350 canvas with drag-and-drop image placement
- Image Editing: Scale, crop, position images with snap-to-grid functionality
- Export System: Slice into 3 equal 1080x1350 images, download as PNG or ZIP
- Project Management: Save and load projects with autosave and backend sync
- AI Features: Face detection auto-crop, background removal, smart layout suggestions
- Cross-Platform: Web app and desktop application (Tauri)
- Next.js 14 (App Router)
- TailwindCSS
- Framer Motion
- react-konva (canvas editor)
- Zustand (state management)
- Python FastAPI
- PostgreSQL
- OpenCV (face detection)
- rembg (background removal)
- Rust + Tauri
carousify/
├── web/ # Next.js frontend
│ ├── app/ # App router pages
│ ├── components/ # React components
│ ├── lib/ # Utilities and helpers
│ ├── store/ # Zustand stores
│ └── styles/ # Global styles
├── backend/ # FastAPI backend
│ ├── app/ # Application code
│ ├── services/ # Business logic
│ ├── models/ # Database models
│ └── routes/ # API routes
├── desktop/ # Rust Tauri app
│ ├── src/ # Rust source
│ └── tauri.conf.json # Tauri config
├── shared/
│ ├── templates/ # JSON templates
│ └── types/ # TypeScript types
├── README.md
├── LICENSE
└── .gitignore
- Node.js 18+
- Python 3.10+
- PostgreSQL 14+
- Rust (for desktop app)
cd web
npm install
npm run devCreate .env.local:
NEXT_PUBLIC_API_URL=http://localhost:8000
NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_keycd backend
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
uvicorn app.main:app --reloadCreate .env:
DATABASE_URL=postgresql://user:password@localhost:5432/carousify
SUPABASE_URL=your_supabase_url
SUPABASE_KEY=your_supabase_key
SECRET_KEY=your_secret_keycd desktop
cargo install tauri-cli
cargo tauri devPOST /api/auth/register- User registrationPOST /api/auth/login- User loginGET /api/auth/me- Get current user
GET /api/projects- List user projectsPOST /api/projects- Create new projectGET /api/projects/{id}- Get project by IDPUT /api/projects/{id}- Update projectDELETE /api/projects/{id}- Delete project
GET /api/templates- List all templatesGET /api/templates/{id}- Get template by ID
POST /api/export/slice- Slice image into carousel formatPOST /api/export/zip- Export as ZIP file
POST /api/ai/auto-crop- Face detection auto-cropPOST /api/ai/remove-bg- Background removal
Templates are defined in JSON format:
{
"id": "template-001",
"name": "3 Panel Grid",
"layout": "3-panel",
"slots": [
{"x": 0, "y": 0, "width": 1016, "height": 1350},
{"x": 1017, "y": 0, "width": 1016, "height": 1350},
{"x": 2034, "y": 0, "width": 1016, "height": 1350}
]
}- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
MIT License - Copyright (c) 2026 Manav Arya
Manav Arya