Transform your creative "vibes" into detailed AI prompts and technical specifications.
VibeShift is a web application that bridges the gap between intuitive, emotional ideas and concrete technical specifications. Whether you're a developer, designer, or product manager, VibeShift helps you convert vague "vibe" descriptions (like "I want a cozy coffee shop app that feels like warm autumn afternoons") into:
- Detailed AI prompts ready for code generation
- Structured Markdown specifications with sections for design, functionality, and technical considerations
- Intelligent Vibe Analysis - Extracts intent, emotions, colors, and requirements from natural language
- Dual Output Generation - Get both an AI-ready prompt and a comprehensive spec document
- Client-Side Processing - Works offline with no backend required (optional AI integration available)
- Dark/Light Mode - Beautiful, accessible themes with smooth transitions
- Persistent History - Saves your last 5 transformations locally
- One-Click Copy - Copy either output to clipboard instantly
- Download as Markdown - Export your specifications as
.mdfiles - Responsive Design - Works seamlessly on desktop, tablet, and mobile
- Multiple Backends - Support for Gemini, OpenRouter, Copilot CLI, or custom OpenAI-compatible APIs
- Environment Variables - Secure API key management
- Connection Testing - Verify your AI backend configuration before use
- Node.js 18+
- pnpm (recommended) or npm
# Clone the repository
git clone https://github.com/yourusername/vibeshift.git
cd vibeshift
# Install dependencies
pnpm install
# Copy environment configuration (optional, for AI features)
cp .env.example .env
# Edit .env and add your API keys if desired
# Start development server
pnpm dev
# Or use npm
npm install
npm run devThe app will be available at http://localhost:5173
pnpm build
pnpm preview-
Enter Your Vibe - Type a description of the feeling or aesthetic you want
Example: "A modern fitness tracker with a dark theme, neon accents, and energetic vibes" -
Transform - Click the "Transform" button (or press Ctrl+Enter)
- Wait for processing (simulated 1.5s delay or AI-generated)
- View two outputs:
- AI Prompt: Detailed instructions for an AI to build your project
- Markdown Spec: Structured specification document
-
Copy or Download - Use the copy buttons or download as a
.mdfile -
Access History - View and restore your recent transformations from the history panel
- Click the Settings (gear icon) in the header
- Select your AI backend:
- Client-side (no AI) - Uses built-in pattern matching
- Gemini API - Google's Gemini model
- OpenRouter - Access multiple AI models
- Custom - Any OpenAI-compatible endpoint
- Enter your API key (if required)
- Optionally customize endpoint and model
- Test the connection
- Save settings
For better security, set API keys in .env:
VITE_OPENROUTER_API_KEY=your_key_here
VITE_GEMINI_API_KEY=your_key_herevibeshift/
├── src/
│ ├── components/ # React components
│ │ ├── Header.jsx # App header with theme toggle
│ │ ├── VibeInput.jsx # Multi-line text input
│ │ ├── TransformButton.jsx # Action button with loading state
│ │ ├── OutputPanel.jsx # Display for AI prompt/spec
│ │ ├── History.jsx # Recent transformations
│ │ ├── MobileTabs.jsx # Mobile navigation tabs
│ │ ├── DownloadButton.jsx # Export functionality
│ │ └── SettingsModal.jsx # AI backend configuration
│ ├── utils/
│ │ ├── storage.js # localStorage utilities
│ │ ├── backends.js # AI backend adapters
│ │ ├── transform.js # Client-side transformation logic
│ │ └── debounce.js # Debounce utility
│ ├── App.jsx # Main application component
│ ├── main.jsx # React entry point
│ └── index.css # Global styles & CSS variables
├── docs/ # AI-ready project documentation
├── public/ # Static assets
├── .env.example # Environment variable template
├── vite.config.js # Vite configuration
├── tailwind.config.js # Tailwind CSS configuration
├── SPEC.md # Detailed project specification
└── package.json
For AI-assisted development and brownfield PRD workflows, see the docs/ folder:
- docs/index.md — Master documentation index
- docs/architecture.md — System architecture
- docs/source-tree-analysis.md — Source tree with annotations
- docs/component-inventory.md — UI component inventory
- docs/development-guide.md — Setup & development guide
- docs/project-overview.md — Project summary
- Framework: React 19
- Build Tool: Vite 7
- Styling: Tailwind CSS 4 with custom CSS variables
- Language: JavaScript (ES2022)
- Package Manager: pnpm (recommended)
| Variable | Description | Backend |
|---|---|---|
VITE_OPENROUTER_API_KEY |
OpenRouter API key | OpenRouter |
VITE_GEMINI_API_KEY |
Google AI Studio API key | Gemini |
vibeshift_history- Recent transformations (max 5)vibeshift_theme- User's theme preference (lightordark)vibeshift_backend_config- AI backend configuration
Edit src/index.css to customize the color palette:
@theme {
/* Light mode colors */
--color-bg-light: #FDFCF8;
--color-surface-light: #FFFFFF;
--color-primary: #6366F1;
/* Dark mode colors */
--color-bg-dark: #0F172A;
--color-surface-dark: #1E293B;
--color-primary-dark: #818CF8;
}- Add backend type to
BACKEND_TYPESinsrc/utils/backends.js - Create adapter implementing the
transform()andtestConnection()methods - Add configuration UI in
SettingsModal.jsx - Update
STORAGE_KEYSif needed
pnpm dev # Start development server (http://localhost:5173)
pnpm build # Build for production
pnpm preview # Preview production build
pnpm lint # Run ESLint- Formatting: Prettier (via editorconfig)
- Linting: ESLint with React-specific rules
- Components: Functional components with hooks
- Styling: Tailwind CSS classes + custom CSS variables
- Chrome/Edge 90+
- Firefox 88+
- Safari 14+
- Not supported: IE11 and older
- Client-side AI: The built-in transformation system is rule-based and less sophisticated than modern LLMs
- Storage: localStorage has a ~5-10MB limit; history is capped at 5 items
- API Keys: If stored in browser (not .env), they're accessible to any script on the page
- No Server: All processing is local or via third-party APIs
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
MIT License - see LICENSE for details
- Built with Vite + React
- Styled with Tailwind CSS
- Icons from Heroicons
- Fonts: Inter & Space Grotesk
Built with ❤️ using VibeShift — Transform your ideas into specifications