A virtual sommelier application that helps you find the perfect wine pairings for your meals.
SIP The Owl (Somm-in-Palm) is an AI-powered sommelier that analyzes your food and wine menu images to suggest optimal pairings. With a sassy, pretentious persona, SIP makes wine recommendations fun and accessible while providing expert advice.
- Image Analysis: Upload photos of your food and wine menus
- AI-Powered Recommendations: Get personalized wine pairing suggestions based on your dishes
- Chat Interface: Discuss and refine recommendations with SIP
- Token Management: Efficiently tracks API usage
- Persistent Conversations: Return to previous discussions
- Frontend: Next.js 15, React 19, TypeScript, Tailwind CSS
- State Management: Redux Toolkit with Redux Persist
- AI Integration: OpenAI API
- UI Components: Custom components with shadcn/ui
- Node.js v18
- npm
- OpenAI API Key
-
Clone the repository:
git clone https://github.com/yourusername/sip-the-somm.git cd sip-the-somm
-
Install dependencies:
npm install
-
Create a
.env.local
file in the root directory with your OpenAI API key:OPENAI_API_KEY=your_openai_api_key_here
Start the development server:
npm run dev
The application will be available at http://localhost:3001.
npm run build
npm start
sip-the-somm/
├── public/ # Static assets
│ ├── sipTheOwl.svg # Owl logo
│ └── wineLoader.gif # Loading animation
├── src/
│ ├── actions/ # Server actions
│ ├── app/ # Next.js app router pages
│ ├── components/ # UI components
│ │ ├── chat/ # Chat-specific components
│ │ └── ui/ # Reusable UI components
│ ├── lib/ # Utility functions
│ ├── store/ # Redux store configuration
│ └── types/ # TypeScript type definitions
└── ...configuration files
The application includes a token management system to:
- Track token usage within conversations
- Warn users when approaching token limits
- Prevent exceeding OpenAI API token limits