VibeCal is a high-fidelity, AI-powered scheduling application built for the Google Vibe Coding Competition. It eliminates the friction of traditional calendar apps by allowing users to schedule events using natural language (Indonesian/English) via text or voice.
- Natural Language Parsing: Powered by Google Gemini 1.5 Flash to extract complex scheduling intent.
- Zero-Friction Onboarding: Guest-session based system using UUIDs stored in
localStorage. - Fluid UI/UX: Built with Next.js, Tailwind CSS, and Framer Motion for a "Neon Cyber-Minimalism" aesthetic.
- Interactive Calendar: FullCalendar integration with Day, Week, and Month views.
- Voice-to-Schedule: Integrated Web Speech API for hands-free scheduling.
- Dynamic Categorization: Automatically maps events to Work, Social, Health, or Me-Time.
- Frontend: Next.js 14, Tailwind CSS, Lucide React, Framer Motion, FullCalendar.
- Backend: Node.js, Express, Morgan, Cors.
- AI: Google Generative AI SDK (Gemini 1.5 Flash).
- Database: Supabase (PostgreSQL).
- Deployment: Docker, Google Cloud Run (Back-end).
- Node.js 18+
- A Supabase account and project.
- A Google Cloud API Key for Gemini.
Run the following SQL in your Supabase SQL Editor to create the necessary table:
CREATE TABLE events (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id VARCHAR(255) NOT NULL,
title VARCHAR(255) NOT NULL,
start_time TIMESTAMP WITH TIME ZONE NOT NULL,
end_time TIMESTAMP WITH TIME ZONE NOT NULL,
vibe_category VARCHAR(50) NOT NULL,
raw_prompt TEXT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
CREATE INDEX idx_events_user_id ON events(user_id);
CREATE INDEX idx_events_time_range ON events(start_time, end_time);Create a .env file in the backend directory:
PORT=8080
SUPABASE_URL=your_supabase_url
SUPABASE_KEY=your_supabase_anon_key
GEMINI_API_KEY=your_gemini_api_keyCreate a .env.local file in the frontend directory:
NEXT_PUBLIC_API_URL=http://localhost:8080From the root directory:
# Install all dependencies
npm run install:all
# Run both backend and frontend concurrently
npm run devThe frontend will be available at http://localhost:3000 and the backend at http://localhost:8080.
To deploy the backend to Cloud Run:
cd backend
gcloud run deploy vibecal-backend \
--source . \
--allow-unauthenticated \
--region asia-southeast1 \
--port 8080 \
--update-env-vars SUPABASE_URL=your_url,SUPABASE_KEY=your_key,GEMINI_API_KEY=your_keyISC