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
