Create stunning social media banners showcasing your tech stack with an intuitive drag-and-drop canvas interface.
🎯 Live Demo • 🎥 Video Demo
Best experienced on Desktop
This project was inspired by Manu Arora's tweet about showcasing tech stacks visually. We've transformed that inspiration into a fully functional drag-and-drop canvas for creating professional social media banners.
- 🎨 Drag & Drop Canvas: Intuitive interface for arranging tech icons on realistic device mockups
- 📱 Device Templates: Beautiful tablet mockup with precise scaling and positioning
- 🔧 26+ Tech Icons: Comprehensive library covering AI, development, design, and productivity tools
- 📤 Social Media Export: One-click export to PNG optimized for Twitter (1500×500) and LinkedIn (1584×396)
- 🌙 Modern UI: Clean, dark-themed interface with professional styling
- ↩️ Undo/Redo: Full history management with keyboard shortcuts (Ctrl/Cmd+Z/Y)
- 🔍 Smart Search: Real-time icon filtering with availability tracking
- 👆 Touch Support: Native touch interactions for mobile and tablet users
- ⚡ High Performance: Smooth interactions with efficient re-rendering
- Node.js 18+
- npm or yarn
# Clone the repository
git clone https://github.com/jatin33/tech-toolkit-sm-banner.git
cd tech-toolkit-sm-banner
# Install dependencies
npm install
# Start development server
npm run devThe application will be available at http://localhost:5173
# Build the project
npm run build
# Preview the production build
npm run preview- Browse Icons: Search through 26+ tech tool icons in the left sidebar
- Drag & Drop: Drag icons from the sidebar onto the tablet mockup canvas
- Arrange: Reposition icons within the grid by dragging them around
- Replace: Drop new icons on existing positions to replace them instantly
- Undo/Redo: Use Ctrl+Z/Y (Cmd+Z/Y on Mac) or footer buttons for history navigation
- Export: Click Twitter or LinkedIn buttons to download your professional banner
- Frontend: React 19.1.0 + TypeScript 5.8.3
- Build Tool: Vite 7.0.4 (Lightning fast!)
- Styling: Tailwind CSS 4.1.11 with custom design tokens
- Icons: High-quality SVG assets for crisp rendering
- Export: HTML5 Canvas API for high-quality image generation
- State Management: React hooks with useReducer pattern for complex state
src/
├── components/
│ ├── Canvas/ # Main canvas and grid components
│ │ ├── DropZoneGrid.tsx
│ │ ├── GridCell.tsx
│ │ ├── tabletTemplates.ts
│ │ └── TabletPlaceholder.tsx
│ ├── Footer/ # Export and undo/redo controls
│ │ ├── Footer.tsx
│ │ ├── DownloadTwitter.tsx
│ │ └── DownloadLinkedIn.tsx
│ ├── Preview/ # Canvas wrapper component
│ │ └── Canvas.tsx
│ └── ThemeProvider.tsx # Theme management
├── hooks/
│ ├── useIconHistory.ts # Undo/redo functionality
│ └── useTheme.ts # Theme state management
├── utils/
│ ├── canvasExport.ts # Image export functionality
│ ├── iconActions.ts # Icon manipulation actions
│ └── iconReducer.ts # State management reducer
└── App.tsx # Main application component
- OpenAI, Claude, Gemini, Grok, Mistral, Perplexity
- Hugging Face, Ollama, OpenRouter, DeepSeek
- GitHub, GitHub Copilot, Cursor, Cline, Replit
- AWS, Cloudflare, n8n, Make
- Figma, Notion, NotebookLM, v0, Midjourney, ElevenLabs
- Twitter: 1500×500px (3:1 aspect ratio) - Perfect for Twitter headers
- LinkedIn: 1584×396px (4:1 aspect ratio) - Optimized for LinkedIn banners
- Format: PNG with 2x scaling for crisp, high-quality output
- Background: Solid backgrounds optimized for social media platforms
Ctrl+Z/Cmd+Z: Undo last actionCtrl+Y/Cmd+Y: Redo last actionCtrl+Shift+Z/Cmd+Shift+Z: Alternative redo
- Multi-source dragging: Icons from sidebar + repositioning within grid
- Smart replacements: Drop icons on occupied cells to replace them instantly
- Visual feedback: Hover states, drag indicators, and smooth animations
- Touch support: Works seamlessly on touch devices
- History tracking: 50-action undo/redo buffer with command pattern
- Real-time updates: Sidebar automatically updates with available icons
- Type safety: Full TypeScript coverage for bulletproof state operations
- Canvas rendering: HTML5 Canvas for pixel-perfect output
- Platform optimization: Different dimensions optimized for each social platform
- Error handling: Comprehensive error management for image operations
- Automatic download: Files save with descriptive, platform-specific names
npm run dev # Start development server with HMR
npm run build # Build for production with optimizations
npm run preview # Preview production build locally
npm run lint # Run ESLint for code quality checks- TypeScript: Strict type checking for reliability
- ESLint: React and TypeScript specific linting rules
- Component Architecture: Modular, reusable, and maintainable components
- Performance: Optimized re-rendering with React.memo and useCallback
The project is configured for seamless deployment:
npm i -g vercel && vercelnpm run build
# Deploy the dist/ folder to NetlifyAlready deployed at: https://main.d1of3vfbkkw17d.amplifyapp.com/
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Additional device templates (iPhone, MacBook, desktop setups)
- Custom icon upload functionality
- Save/load project configurations
- More export formats (JPG, SVG, PDF)
- Social media integration for direct sharing
- Batch export multiple formats simultaneously
- Custom text/branding overlay options
- Mobile-optimized interface improvements
Love this project? 😀
- ⭐ Star the repository
- 🐛 Report bugs
- 💡 Request features
- 🎥 Share your creations on social media
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspiration: Manu Arora (@mannupaaji) for the original tech stack visualization idea
- Tech Icons: All tech company logos and icons are property of their respective owners
- Community: Built with ❤️ for builders who want to showcase their tech stack beautifully
Made with ❤️ for the tech community
🚀 Live Demo • 🎥 Video Demo • 🐛 Report Bug • 💡 Request Feature
