Bulk Calendar Invitations. Personalized for each recipient. Privacy-first.
✅ Privacy-First: All processing happens in your browser. No backend, no data storage.
✅ Open Source: Full transparency. Audit the code yourself.
✅ Bulk Invites: Send to 50+ recipients simultaneously (unlimited, in theory).
✅ Personalization: Template with {firstName}, {lastName}, custom fields.
✅ Real-time Preview: See how each invitation looks.
✅ Google Calendar Native: Integrates directly with Google Calendar API and Google Workspace Directory API.
✅ No Setup Required: Works immediately after authentication.
- Node.js 18+ and npm
- A Google account with Calendar access
# Clone or download the project
git clone <repository-url>
cd spark
# Install dependencies
npm install
# Set up Google OAuth credentials
# See "Google OAuth Setup" section below
# Start development server
npm run devThe app opens at http://localhost:3000
npm run build
npm run preview- Go to Google Cloud Console
- Create a new project
- Enable the Google Calendar API
- Enable the Google People API
- Enable the Google Sheets API
- Create an OAuth 2.0 Client ID (Web application)
- Add authorized redirect URIs:
http://localhost:3000(development)https://yourdomain.com(production)
- Copy your Client ID
- Create a
.env.localfile in the project root:
VITE_GOOGLE_CLIENT_ID=your_client_id_here.apps.googleusercontent.com# Run all tests
npm test
# Run tests in watch mode
npm test -- --watch
# Run tests with UI
npm run test:ui
# Check test coverage
npm test -- --coveragenpm run type-check
npm run lint- No Backend: Everything happens in the browser
- No Data Storage: Invitee data never leaves your device
- No Third Parties: Direct Google Calendar API only
- Open Source: Full code transparency
- Local Auth: OAuth tokens stored securely in localStorage
- Chrome/Edge 90+
- Firefox 88+
- Safari 14+
Contributions welcome! This is an open-source project.
# Fork, make changes, and submit a PR
npm test # Ensure tests pass
npm run type-check # Ensure types are correct
npm run build # Ensure build succeeds- Team management (optional backend)
- Recurring invitations
- Available time slots checking
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Q: Where is my data stored?
A: Nowhere. Everything stays in your browser. No backend servers.
Q: Can I use this offline?
A: Template creation works offline. Sending requires Google Calendar access.
Q: How many invitations can I send?
A: As many as you want. Rate-limited by Google's API (reasonable limits).
Q: Can I undo sent invitations?
A: They're created as calendar events. Delete them directly in Google Calendar.
Q: Is this officially affiliated with Google?
A: No. It uses the public Google Calendar API.
Made with ❤️ for users who value privacy.