Project Info
Inspiration
The inspiration for Orbit came from a simple frustration we all face daily: wasting time planning our day. Whether it's figuring out the optimal order to run errands, scheduling meetings around travel time, or coordinating multiple tasks across different locations, manual planning is inefficient and time-consuming. The vision was to create something as simple as adding tasks and locations, then letting AI handle the rest - from intelligent prioritization to actual driving route optimization using real Google Maps data. What We Learned Technical Insights Google Routes API v2 provides incredibly detailed route data with actual driving distances, traffic-aware routing, and precise polyline data Claude AI excels at understanding context and constraints when planning tasks, considering factors like priority, location proximity, and time dependencies Voice input integration with Deepgram + Claude creates a seamless natural language interface for task creation GeoJSON LineString format provides the most accurate polyline rendering for complex routes How We Built It Architecture Frontend: Next.js 16 with React 19, Tailwind CSS, and shadcn/ui components Maps: Google Maps JavaScript API with Routes API v2 integration AI: Anthropic Claude API for intelligent task planning and voice parsing Voice: Deepgram Speech-to-Text API for natural language input Storage: Browser session storage Key Features Built Smart Task Management Voice input with AI parsing (Deepgram → Claude) Location-aware task creation Priority and duration settings Smart Task Management Voice input with AI parsing (Deepgram → Claude) Location-aware task creation Priority and duration settings AI Route Planning Claude AI analyzes tasks and creates optimal visit order Considers location proximity, priorities, and time constraints Provides reasoning for planning decisions AI Route Planning Claude AI analyzes tasks and creates optimal visit order Considers location proximity, priorities, and time constraints Provides reasoning for planning decisions Real Driving Routes Google Routes API v2 for accurate driving distances Traffic-aware routing with TRAFFIC_AWARE_OPTIMAL GeoJSON LineString polylines for precise route visualization Individual leg-by-leg route breakdown Real Driving Routes Google Routes API v2 for accurate driving distances Traffic-aware routing with TRAFFIC_AWARE_OPTIMAL GeoJSON LineString polylines for precise route visualization Individual leg-by-leg route breakdown Interactive Map Visualization Real-time route rendering with numbered waypoints Detailed route statistics (distance, duration, stops) Responsive design with mobile support Interactive Map Visualization Real-time route rendering with numbered waypoints Detailed route statistics (distance, duration, stops) Responsive design with mobile support Challenges We Faced 1. Google Routes API Migration Challenge: Migrating from Directions API to Routes API v2 required complete restructuring of request/response handling. Solution: Implemented geocoding preprocessing to convert addresses to coordinates Updated field names (waypoints → intermediates) Handled GeoJSON LineString format conversion Added comprehensive error handling for API limitations 2. Polyline Rendering Complexity Challenge: Routes API returns polylines in different formats (encoded strings vs GeoJSON arrays), causing rendering issues. Solution: Created robust polyline detection and conversion logic Implemented fallback rendering for different data formats Added extensive debugging logs to trace data flow Ensured coordinate format consistency ([lng, lat] → {lat, lng}) 3. Real-time Map Updates Challenge: New tasks weren't appearing on the map until page refresh. Solution: Implemented proper state management with onItemAdd callbacks Created reactive map updates triggered by task changes Added loading states and error handling for async operations 4. Voice Input Integration Challenge: Converting speech to structured task data required multiple API calls and error handling. Solution: Built a pipeline: Deepgram (speech → text) → Claude (text → structured data) Added loading states for each step Implemented fallback mechanisms for API failures Created intuitive UI feedback for voice input status 5. Performance Optimization Challenge: Multiple API calls and complex route calculations could cause UI lag. Solution: Implemented React useMemo for expensive calculations Added loading states and skeleton screens Optimized API calls with proper error boundaries Used session storage for data persistence Impact Orbit transforms daily planning from a time-consuming manual process into an intelligent, automated system. Users can: Save 2-3 hours per week on route planning and task organization Reduce travel time by 15-25% through AI-optimized routing Focus on execution rather than planning Make data-driven decisions about task prioritization Built with ❤️ for the calhacks. Stop planning. Start optimizing.
Orbit - Smart Route Planner
An AI-powered daily route planner that optimizes your schedule by combining calendar events and to-dos, then uses Claude AI for intelligent prioritization and Google Maps for route optimization.
Features
- AI-Powered Planning: Uses Claude AI to intelligently prioritize and order your tasks
- Real Driving Routes: Google Maps provides actual car driving distances and routes (not straight-line)
- Travel Time Estimates: Accurate driving time calculations with traffic considerations
- Calendar Events: Import and manage your daily calendar events
- To-Do Management: Add flexible tasks with priorities and locations
- Voice Input: Use voice commands to add tasks with AI-powered parsing
- Interactive Map: Visualize your optimized route with markers and directions
- Privacy-First: All data stored locally in your browser
- Demo Mode: Pre-loaded with sample data for immediate testing
Tech Stack
- Frontend: Next.js 16, React 19, Tailwind CSS
- UI Components: shadcn/ui
- Maps: Google Maps JavaScript API
- Routing: Google Routes API v2 (for accurate driving routes)
- AI: Anthropic Claude API
- Voice: Deepgram Speech-to-Text API
- Storage: Browser session storage (no database required)
Quick Start
1. Install Dependencies
npm install
2. Set Up Environment Variables
Create a .env.local file in the root directory:
# Claude API Key for AI planning
CLAUDE_API_KEY=your_claude_api_key_here
# Google Maps API Key (for both JavaScript API and Directions API)
NEXT_PUBLIC_GOOGLE_MAPS_API_KEY=your_google_maps_api_key_here
# Google Maps API Key for server-side API calls
GOOGLE_MAPS_API_KEY=your_google_maps_api_key_here
# Deepgram API Key for voice-to-text transcription
DEEPGRAM_API_KEY=your_deepgram_api_key_here
3. Get API Keys
Claude API Key:
- Go to console.anthropic.com
- Sign up or log in
- Create a new API key
- Copy the key to your
.env.localfile asCLAUDE_API_KEY
Google Maps API Key:
- Go to Google Cloud Console
- Create a new project or select existing
- Enable the following APIs:
- Maps JavaScript API
- Routes API (NEW - provides actual driving routes with polylines)
- Geocoding API
- Create credentials (API Key)
- Copy the key to your
.env.localfile
Deepgram & Claude API Keys (Optional - for AI voice input):
- Deepgram: Go to Deepgram Console, sign up, create an API key, and add to
.env.localasDEEPGRAM_API_KEY - Claude: Ensure your
CLAUDE_API_KEYis set (from step above) - Note: Voice input requires BOTH Deepgram (for transcription) and Claude (for intelligent parsing) API keys
4. Run the Development Server
npm run dev
Open http://localhost:3000 to see the application.
Demo Script
- Load the Application: Open http://localhost:3000
- Review Pre-loaded Data: The app comes with sample calendar events and to-dos
- Add Custom Tasks: Use the "To-Do List" tab to add your own tasks
- Type to add: Enter task title, location, and priority
- AI Voice input: Click "Voice Input" to speak your task - Deepgram transcribes it and Claude AI intelligently extracts task details, location, priority, and duration
- Plan Your Day: Switch to the "Plan" tab and click "Plan My Day"
- View Optimized Route: See the AI-generated itinerary with actual driving distances between each stop
- Test Re-routing: Click "Recalculate Route" to see different optimizations
- Mark Tasks Complete: Toggle tasks as done to see how it affects planning
Project Structure
src/
├── app/
│ ├── api/
│ │ ├── claude/plan/route.js # Claude AI planning endpoint
│ │ └── maps/
│ │ ├── directions/route.js # Google Maps Directions API
│ │ └── geocode/route.js # Address geocoding
│ ├── layout.js # Root layout with metadata
│ └── page.js # Main dashboard page
├── components/
│ ├── ui/ # shadcn/ui components
│ ├── CalendarEventsList.jsx # Calendar events management
│ ├── TodoList.jsx # To-do list management
│ ├── MapView.jsx # Google Maps integration
│ ├── PlannerPanel.jsx # AI planning interface
│ └── TaskCard.jsx # Reusable task component
├── hooks/
│ └── useGoogleMaps.js # Google Maps utilities
├── lib/
│ ├── storage.js # Session storage helpers
│ ├── seedData.js # Demo data generation
│ └── claudePrompt.js # AI prompt engineering
└── components.json # shadcn/ui configuration
API Endpoints
POST /api/claude/plan- AI route planningPOST /api/maps/directions- Google Maps route optimizationGET /api/maps/geocode- Address geocoding
Development
Adding New Features
- New Components: Add to
src/components/ - API Routes: Add to
src/app/api/ - Utilities: Add to
src/lib/ - Hooks: Add to
src/hooks/
Styling
The project uses Tailwind CSS with shadcn/ui components. All styling follows the design system defined in the shadcn configuration.
State Management
The app uses React's built-in state management with:
useStatefor local component stateuseEffectfor side effects- Session storage for data persistence
Deployment
Vercel (Recommended)
- Push your code to GitHub
- Connect your repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy
Other Platforms
The app can be deployed to any platform that supports Next.js:
- Netlify
- Railway
- Render
- AWS Amplify
Troubleshooting
Common Issues
- Maps not loading: Check your Google Maps API key and ensure the required APIs are enabled
- AI planning fails: Verify your Anthropic API key and check the console for errors
- Styling issues: Ensure Tailwind CSS is properly configured and shadcn components are installed
Debug Mode
Enable debug logging by adding ?debug=true to the URL to see additional console output.
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
License
MIT License - see LICENSE file for details.
Analysis
View
Metric
- 5
- 3
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- AnthropicIn code
- CSSIn code
- JavaScriptIn code
- Next.jsIn code
- ReactIn code
- Tailwind CSSIn code
6 of 6 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
178 KB
Source files
35
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Nishchal-007/orbit
49 files · 477 KB · @ bac86dc
Structure
Interface
18 files · 37%Screens, components and styles rendered to the user.
API & routing
7 files · 14%Request entry points: routes, handlers and controllers.
Application logic
8 files · 16%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- JavaScript86%
- Markdown9%
- CSS5%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 24- @anthropic-ai/sdk
- @deepgram/sdk
- @googlemaps/js-api-loader
- @googlemaps/polyline-codec
- @radix-ui/react-dialog
- @radix-ui/react-scroll-area
- @radix-ui/react-separator
- @radix-ui/react-slot
- @radix-ui/react-tabs
- @react-google-maps/api
- class-variance-authority
- clsx
- date-fns
- googleapis
- lucide-react
- next
- react
- react-dom
- +6 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.