A multi-agent AI platform that helps remote workers discover ideal workspaces like cafes, coworking spaces, and libraries based on WiFi quality, power outlets, noise levels, and more.
- Founder & CTO: Satyam Pandey
Automated contributor tracking synced directly via the GitHub API:
- Features
- Tech Stack
- Architecture
- Getting Started
- Environment Variables
- Testing
- Pages
- API Routes
- Multi-Agent System
- Project Structure
- Future Improvements
- Contributing
- License
- Natural Language Queries: "Find a quiet cafe with good WiFi near me"
- Smart Intent Understanding: Extracts work type, amenities, location preferences
- Intelligent Scoring: Ranks venues based on work-friendliness criteria
- Dark Theme: Beautiful CartoDB Dark Matter tiles
- Real-time Markers: Purple glowing venue markers with venue photos
- Green Route Lines: Real road routing with OSRM (not straight lines)
- User Location: Custom marker with Clerk user avatar
- Auto-centering: Map adjusts to show search results
- Dark Popups: Styled popups matching the theme
- Server-Sent Events (SSE): Live venue data pushed from server to client
- Live Ratings: See new reviews appear instantly without refreshing
- Availability Updates: Crowd levels update in real-time
- Stable Connections: Smart reconnect logic prevents connection spam
- Pexels Integration: High-quality venue photos via Pexels API
- Server-side Proxy: API key never exposed to the browser
- DB Caching: Each venue fetched once, then served from cache
- Lazy Loading: Skeleton shimmer while photo loads, graceful fallback on error
- Free tier: 20,000 requests/month, no billing required
- OpenStreetMap Integration: Real venue data from OSM Overpass API
- Amenities Display: WiFi, outdoor seating, accessibility from OSM
- Opening Hours: Real business hours when available
- No Credit Card Required: All APIs are completely free
- OSRM Integration: Actual road paths instead of straight lines
- Turn-by-turn Geometry: Realistic routes on the map
- Distance Calculation: Accurate road distance to venues
- Multiple Profiles: Walking, driving, cycling routes
- 5 Specialized AI Agents working together:
- Orchestrator โ Context โ Data โ Reasoning โ Action
- Transparent Reasoning: See each agent's thought process
- Parallel Processing: Efficient query handling
- Favorites System: Save frequently visited spots
- Crowdsourced Ratings: Rate venues on WiFi quality, outlets, noise levels, quietness
- Rating Dialog: Beautiful modal with 5-star ratings for each amenity
- Conversation History: Resume previous searches
- Venue Suggestions: Submit new venues via modal form
- Profile Dashboard: Complete analytics dashboard showing booking history
- "NEURAL LEDGER": Futuristic booking history with confirmation IDs, dates, venue details
- Download Receipts: PDF receipts for each booking with automatic download
- View on Map: External link button to view booked venues on the interactive map
- Booking Status: Visual status badges (Confirmed, Pending, Cancelled)
- Clerk Integration: Secure sign-in/sign-up
- User Profiles: Personalized experience
- Webhook Sync: Real-time user data updates
- Serverless-Compatible: Uses pdf-lib (not PDFKit) for AWS Lambda compatibility
- Instant Generation: PDF receipts generated on-demand for confirmed bookings
- Professional Format: Includes venue details, booking info, confirmation ID, timestamps
- Embedded Fonts: Helvetica and HelveticaBold loaded from pdf-lib (no filesystem dependencies)
- Direct Download: One-click download with loading states and error handling
- Fixed Build Issues: Resolved Buffer/Uint8Array compatibility and cuid ID string handling
- Installable: Add to home screen on mobile/desktop
- Offline Support: IndexedDB storage for venues and favorites
- Service Worker: Caches static assets for fast loading
- Background Sync: Queue actions when offline
- Rate Limiting: API protection with configurable limits
- Data Caching: Multi-layer caching with TTL support
- Error Boundaries: Graceful error handling prevents crashes
- Loading Skeletons: Smooth loading states for better UX
- Event Tracking: Track searches, venue interactions, agent performance
- Agent Metrics: Monitor AI pipeline execution times
- Search Patterns: Understand user behavior and preferences
- 57 Unit Tests: Full coverage with Jest & React Testing Library
- E2E Testing: Playwright configuration for end-to-end tests
- API Tests: Route handler testing
- Component Tests: UI component validation
| Category | Technology |
|---|---|
| Framework | Next.js 15.5 (App Router) |
| Language | TypeScript 5.0 |
| Styling | Tailwind CSS 4.0, Custom UI Components |
| AI/LLM | Groq SDK (Llama 3.3 70B) |
| Database | Neon PostgreSQL + Prisma 7.2 ORM (with @prisma/adapter-pg) |
| Authentication | Clerk |
| Maps | React Leaflet + OpenStreetMap |
| Venue Data | OpenStreetMap (Overpass API) - FREE |
| Venue Photos | Pexels API - FREE (20k req/mo) |
| Real-time | Server-Sent Events (SSE) |
| Routing | OSRM (Open Source Routing Machine) - FREE |
| PDF Generation | pdf-lib 2.x (serverless-compatible) |
| Testing | Jest 29, React Testing Library, Playwright |
| PWA | Service Workers + IndexedDB |
| Deployment | Vercel |
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ USER INTERFACE โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Map (70%) โ โ Chat (30%) โ โ
โ โ - Venue Markers โ โ - Natural Language Input โ โ
โ โ - User Location โ โ - Agent Transparency โ โ
โ โ - Route Polylines โ โ - Venue Cards โ โ
โ โ - Auto-centering โ โ - Action Buttons โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MULTI-AGENT PIPELINE โ
โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ Orchestrator โ -> โ Context โ -> โ Data โ โ
โ โ Agent โ โ Agent โ โ Agent โ โ
โ โ โ โ โ โ โ โ
โ โ Routes query โ โ Extracts โ โ Fetches โ โ
โ โ to agents โ โ intent & โ โ venues via โ โ
โ โ โ โ parameters โ โ Overpass API โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ Action โ <- โ Reasoning โ โ
โ โ Agent โ โ Agent โ โ
โ โ โ โ โ โ
โ โ Updates UI, โ โ Scores & โ โ
โ โ map, chat โ โ ranks venues โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ DATA LAYER โ
โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ โ
โ โ Neon Postgres โ โ OpenStreetMap โ โ Clerk โ โ
โ โ โ โ โ โ โ โ
โ โ - Users โ โ - Overpass API โ โ - Auth โ โ
โ โ - Venues โ โ - Cafes โ โ - User Sync โ โ
โ โ - Ratings โ โ - Libraries โ โ - Sessions โ โ
โ โ - Favorites โ โ - Coworking โ โ โ โ
โ โ - Conversations โ โ โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โ โ Pexels API โ โ OSRM API โ โ
โ โ โ โ โ โ
โ โ - Venue Photos โ โ - Road Routing โ โ
โ โ - 20k/mo FREE โ โ - Polylines โ โ
โ โ - Server Proxy โ โ - FREE โ โ
โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
- Node.js 18+
- npm or yarn
- Git
-
Clone the repository
git clone https://github.com/SatyamPandey-07/WorkSphere.git cd WorkSphere -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env.local # Edit .env.local with your credentials -
Set up the database
# Prisma 7 uses driver adapters - ensure DATABASE_URL is set npx prisma generate npx prisma db push -
Run the development server
npm run dev
-
Open in browser
http://localhost:3000
npm testnpm run test:watchnpm run test:e2e
npm run test:e2e:ui # With UI- 57 Unit Tests covering:
- API Route Handlers
- React Components
- Utility Functions
- Rate Limiting
- Analytics
Create a .env.local file in the root directory:
# Database (Neon PostgreSQL)
DATABASE_URL="postgresql://user:password@host/database?sslmode=require"
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_...
CLERK_SECRET_KEY=sk_test_...
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
# AI (Groq)
GROQ_API_KEY=gsk_...
# Pexels (for venue photos - free at pexels.com/api)
PEXELS_API_KEY=your_pexels_key_here| Service | URL | Free Tier | Required |
|---|---|---|---|
| Neon | neon.tech | 0.5GB storage | โ Yes |
| Clerk | clerk.com | 10,000 MAU | โ Yes |
| Groq | console.groq.com | Free API access | โ Yes |
| Pexels | pexels.com/api | 20,000 req/month | โ No (has fallback) |
| OSM/OSRM | N/A | Unlimited | โ No (public API) |
| Route | Page | Description |
|---|---|---|
/ |
Landing Page | Hero section with product mockup, features showcase, CTAs |
/ai |
AI Workspace Finder | Main app with 70/30 map/chat split, dark theme |
/dashboard |
User Dashboard | Personal dashboard for authenticated users |
/offline |
Offline Page | PWA fallback when network unavailable |
/sign-in |
Sign In | Clerk authentication sign-in page |
/sign-up |
Sign Up | Clerk authentication sign-up page |
| Method | Route | Description |
|---|---|---|
POST |
/api/chat |
Main chat endpoint with agent pipeline |
GET |
/api/venues |
Search venues |
POST |
/api/venues |
Add crowdsourced venue |
GET |
/api/venues/enrich |
Enrich venue with OSM + Pexels data |
POST |
/api/venues/[id]/rate |
Rate a venue |
POST |
/api/venues/updates |
Bulk update venue photos |
GET |
/api/favorites |
Get user's favorites |
POST |
/api/favorites |
Add favorite |
DELETE |
/api/favorites |
Remove favorite |
GET |
/api/conversations |
List conversations |
POST |
/api/conversations |
Create conversation |
GET |
/api/conversations/[id] |
Get conversation |
DELETE |
/api/conversations/[id] |
Delete conversation |
GET |
/api/location |
IP-based location fallback |
POST |
/api/webhook |
Clerk webhook for user sync |
User Query: "Find a quiet cafe with WiFi near me"
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ORCHESTRATOR AGENT โ
โ โข Analyzes query type โ
โ โข Determines: Context โ Data โ Reasoning โ
โ โข Output: agentsToUse[], reasoning โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ CONTEXT AGENT โ
โ โข Extracts intent: workType = "focus" โ
โ โข Parameters: amenities = [wifi, quiet] โ
โ โข Output: structured intent object โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ DATA AGENT โ
โ โข Queries Overpass API for cafes โ
โ โข Filters by location radius โ
โ โข Output: venues[], conditions, meta โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ REASONING AGENT โ
โ โข Scores: WiFi(30%), Noise(25%), โ
โ Outlets(20%), Rating(15%), Distance(10%) โ
โ โข Ranks top venues with explanations โ
โ โข Output: rankedVenues[], reasoning โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ACTION AGENT โ
โ โข Updates map markers โ
โ โข Sets map view/zoom โ
โ โข Generates chat response โ
โ โข Output: UI updates, message โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
The UI shows each agent's contribution:
๐ง Agent Pipeline (5 steps)
โโ ๐ฏ Orchestrator: Routing to Context, Data, Reasoning agents
โโ ๐ Context: Extracted intent - focus work, needs WiFi
โโ ๐ Data: Found 12 cafes within 2km radius
โโ ๐ก Reasoning: Top pick - Blue Bottle Coffee (score: 8.5/10)
โโ โก Action: Updated map with 5 markers
worksphere/
โโโ prisma/
โ โโโ schema.prisma # Database schema
โโโ public/
โ โโโ sw.js # Service worker for PWA
โ โโโ manifest.json # PWA manifest
โโโ src/
โ โโโ __tests__/ # Test files
โ โ โโโ api/ # API route tests
โ โ โโโ components/ # Component tests
โ โ โโโ lib/ # Utility tests
โ โโโ agents/ # AI Agent implementations
โ โ โโโ Orchestrator.tsx # Routes queries to agents
โ โ โโโ ContextAgent.tsx # Extracts user intent
โ โ โโโ DataAgent.tsx # Fetches venue data
โ โ โโโ ReasoningAgent.tsx # Scores and ranks venues
โ โ โโโ ActionAgent.tsx # Updates UI
โ โโโ app/
โ โ โโโ api/ # API routes
โ โ โ โโโ chat/ # Agent pipeline endpoint
โ โ โ โโโ venues/ # Venue CRUD
โ โ โ โ โโโ enrich/ # OSM + Pexels enrichment
โ โ โ โโโ favorites/ # User favorites
โ โ โ โโโ conversations/ # Chat history
โ โ โโโ ai/ # Main app page
โ โ โโโ sign-in/ # Auth pages
โ โ โโโ sign-up/
โ โ โโโ offline/ # Offline fallback
โ โ โโโ layout.tsx # Root layout
โ โโโ components/
โ โ โโโ ai-elements/ # Reusable AI UI components
โ โ โโโ ui/ # UI components
โ โ โโโ EnhancedChatbot.tsx
โ โ โโโ Map.tsx
โ โ โโโ VenueCard.tsx # Enhanced with photos, amenities
โ โ โโโ VenueRatingDialog.tsx
โ โ โโโ VenueSubmissionModal.tsx
โ โ โโโ ErrorBoundary.tsx
โ โโโ hooks/
โ โ โโโ usePWA.tsx # PWA installation hook
โ โ โโโ useRealTime.tsx # Real-time updates hook
โ โโโ lib/
โ โ โโโ prisma.ts # Database client
โ โ โโโ utils.ts # Utilities
โ โ โโโ rateLimit.ts # Rate limiting
โ โ โโโ analytics.ts # Event tracking
โ โ โโโ validations.ts # Zod schemas
โ โ โโโ venues.ts # OSM + Pexels integration (NEW)
โ โ โโโ routing.ts # OSRM routing (NEW)
โ โ โโโ offlineStorage.ts # IndexedDB for PWA
โ โโโ tools/ # AI Agent tools
โ โโโ types/ # TypeScript types
โโโ e2e/ # Playwright E2E tests
โโโ jest.config.js # Jest configuration
โโโ playwright.config.ts # Playwright configuration
โโโ package.json
- Open the app at
http://localhost:3000 - Allow location access when prompted
- Start chatting with the AI assistant!
Try these natural language queries:
- "Find a quiet cafe with good WiFi near me"
- "Show me coworking spaces within 2km"
- "I need a library to study"
- Sign in with Clerk
- Click heart icon on venue cards to favorite
- Click "Rate" to submit ratings
- Desktop: Click install icon in browser
- Mobile: "Add to Home Screen"
- Push to GitHub
- Connect repository to Vercel
- Add environment variables
- Deploy!
| Priority | Feature | Description |
|---|---|---|
| ๐ด High | Analytics Dashboard | Admin page to view search patterns, popular venues, user metrics |
| ๏ฟฝ Medium | Mobile App | React Native version sharing the same API backend |
| ๐ก Medium | AI Memory | Cross-conversation learning for personalized recommendations |
| ๐ก Medium | Social Features | Share favorite workspaces, follow other remote workers |
| ๐ข Low | Booking Integration | Reserve desks at coworking spaces via API |
| ๐ข Low | Noise Level API | Real-time noise monitoring hardware integration |
Contributions are welcome! Please refer to our comprehensive Contributing Guide for details on:
- Coding standards and styling.
- Testing guidelines (Jest unit tests and Playwright E2E integration).
- Required pre-commit quality checks to ensure Vercel build compatibility.
To get started quickly:
- Fork the repository and create your feature branch (
git checkout -b feature/amazing-feature). - Implement your changes.
- Make sure all pre-commit checks pass (
npm run lint,npx tsc --noEmit, andnpm test). - Commit your changes (
git commit -m 'feat: Add amazing feature') and push to your branch. - Open a Pull Request against the
mainbranch.
This project is licensed under the MIT License.
Satyam Pandey
- GitHub: @SatyamPandey-07
โญ Star this repo if you find it helpful!
Made with โค๏ธ by Satyam Pandey