An elegant web app for designers and marketing coordinators to visualize product packaging and hardware concepts across multiple physical and digital mediums β with strict visual, color, and thematic cohesion.
Built with React (Vite), Tailwind CSS, and Express, with real-time prompt calibration powered by the Google Gen AI SDK (gemini-2.5-flash-image, a.k.a. Nano-Banana).
- Demo
- Core Features
- Architecture Highlights
- Tech Stack
- Getting Started
- Project Structure
- Troubleshooting
- Roadmap
- Contributing
- License
Add a GIF or screenshot here once available.
./docs/preview.gif
Generates synchronized mockups across three standard channels simultaneously, so a single concept is rendered consistently across every surface a marketing team needs:
| Channel | Aspect Ratio | Use Case |
|---|---|---|
| πͺ§ Roadside Billboard Display | 16:9 Landscape | Out-of-home advertising |
| π± Social Media Feed Post | 1:1 Square | Instagram, LinkedIn, Facebook |
| π° Print Newspaper Feature | 4:3 Classic Plate | Editorial and print spreads |
- Guided Form Mode β A multi-step configurator covering product dimensions, industry vertical, and physical surface descriptions. Great for structured briefs.
- Freeform Open-Ended Mode β Unlimited conceptual typing. Describe devices (advanced gamepads, wearables, audio equipment, anything) with complete artistic freedom.
A highly interactive SVG controller and vector blueprint render engine displays exact conceptual alignments when API quota limits or safety filters are triggered β the app never shows a broken state.
Clickable overlays reveal raw JSON API error logs, prompt variables, and runtime configuration β useful during prompt engineering and debugging.
- Zero-Flicker Full-Stack Proxy β All API requests are routed through the Node/Express backend (
server.ts), keeping yourGEMINI_API_KEYsafe and invisible to browser inspection. - Safe Fallback Vector Engine β When running without an active key or when quotas are hit, the app renders clean, themed SVGs (custom Gamepad with OLED cute-eye loops, AR Glasses, Audio Headphones, and more) so the UI stays demoable offline.
- Single-Command Dev Loop β
npm run devboots both the Express backend and the Vite frontend concurrently, with hot reload on both sides.
Frontend
- React 18 + Vite
- Tailwind CSS
- Lucide Icons
- Framer Motion
Backend
- Node.js + Express
- TSX (TypeScript execution)
Generative AI
- Official
@google/genaiTypeScript SDK - Model:
gemini-2.5-flash-image(Nano-Banana)
- Node.js v18 or higher
- A Gemini API key
git clone https://github.com/<your-username>/platestudio.git
cd platestudioCreate a .env file in the project root:
GEMINI_API_KEY=your_actual_gemini_api_key_here
β οΈ Never commit.envto version control. It is already listed in.gitignore.
npm installnpm run devThis launches the Express backend and the Vite frontend together. Open http://localhost:3000 to access the interface.
| Command | Description |
|---|---|
npm run dev |
Start backend + frontend in development mode |
npm run build |
Production build of the frontend |
npm start |
Run the production server |
npm run lint |
Lint the codebase |
platestudio/
βββ src/ # React frontend (components, hooks, styles)
βββ server.ts # Express API proxy
βββ public/ # Static assets
βββ docs/ # Screenshots, GIFs, design notes
βββ .env # Local secrets (not committed)
βββ package.json
GEMINI_API_KEY is undefined
Make sure .env exists in the project root and that you've restarted npm run dev after creating it.
Port 3000 already in use
Either stop the conflicting process or set a new port via PORT=3001 npm run dev.
API quota or safety-filter errors This is expected behavior under heavy use. The Safe Fallback Vector Engine will take over and render themed SVGs so you can keep demoing the UI.
Windows-specific install issues Run your terminal as Administrator and ensure your Node version is 18+. The TSX runtime requires modern Node internals.
- Export mockups as a single PDF brief
- User-uploadable reference images
- Brand-kit presets (color palette + typography lock)
- Additional channels (mobile app screen, packaging die-line, OOH bus-stop)
- Persisted history of generated concepts
Contributions, bug reports, and feature requests are welcome. To contribute:
- Fork the repo and create a feature branch (
git checkout -b feat/your-feature) - Commit your changes (
git commit -m "feat: add your feature") - Push to your fork (
git push origin feat/your-feature) - Open a Pull Request
Please follow the existing code style and include a clear description of what your change does.
Released under the MIT License.