-
Configure these environment variables in Render:
GOOGLE_CLIENT_ID
: Your Google OAuth client IDGOOGLE_CLIENT_SECRET
: Your Google OAuth client secretGOOGLE_REDIRECT_URI
: Set this tohttps://your-render-app.onrender.com/auth/google/callback
ELEVENLABS_API_KEY
: Your ElevenLabs API key
-
Once deployed, update your ElevenLabs agent with these endpoints:
GET https://your-render-app.onrender.com/api/calendar/availability POST https://your-render-app.onrender.com/api/calendar/schedule
An intelligent voice-enabled calendar assistant that uses ElevenLabs for voice synthesis and Google Calendar for appointment management.
- Voice interaction using browser's Speech Recognition API
- Natural language processing for understanding calendar-related requests
- Real-time Google Calendar integration
- ElevenLabs voice synthesis for natural-sounding responses
- Appointment scheduling and availability checking
- Node.js and npm installed
- Google Cloud Console account with Calendar API enabled
- ElevenLabs API key
-
Clone the repository
-
Install dependencies:
npm install
-
Copy
.env.example
to.env
and fill in your credentials:cp .env.example .env
-
Set up Google OAuth 2.0:
- Go to Google Cloud Console
- Create a new project
- Enable Google Calendar API
- Create OAuth 2.0 credentials
- Add authorized redirect URI:
http://localhost:3000/auth/google/callback
-
Get your ElevenLabs API key:
- Sign up at ElevenLabs
- Get your API key from the profile settings
-
Start the server:
npm start
-
Open your browser and navigate to
http://localhost:3000
- Click "Start Speaking" to begin voice interaction
- Speak your request (e.g., "What times are available tomorrow?" or "Schedule an appointment for 2 PM")
- Click "Stop Speaking" when finished
- Listen to the assistant's response
src/
config/
- Configuration filesservices/
- Business logic for calendar and conversationroutes/
- API route handlerspublic/
- Frontend assetscss/
- Stylesheetsjs/
- Frontend JavaScript
- Store sensitive credentials in
.env
file (not in version control) - Implement proper OAuth flow for production
- Add rate limiting for API endpoints
- Use HTTPS in production
MIT