Skip to content

Latest commit

ย 

History

1,804 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

WorkSphere Logo

WorkSphere

The Intelligent Multi-Agent Workspace Discovery & Real-Time Booking Engine

ECSoC 2026 - Elite Coders Summer of Code ย ย ย ย ย ย ย ย  OSCI 2026 - Open Source Contribution India

๐ŸŒŸ Official Selected Project for ECSoC 2026 (Elite Coders Summer of Code) & OSCI 2026 (Open Source Contribution India) ๐ŸŒŸ

Next.js React TypeScript Tailwind CSS Prisma ORM PostgreSQL PartyKit PWA


License PRs Welcome Contributors ECSoC 2026 OSCI 2026 CI Status Live Demo

WorkSphere is an autonomous multi-agent ecosystem engineered for remote professionals, digital nomads, and distributed teams.
Discover top-tier cafes, coworking spaces, and quiet libraries dynamically ranked on WiFi speeds, power outlet density, real-time noise metrics, and live seating occupancy.

๐Ÿš€ Launch Live Demo โ€ข โœจ Features โ€ข ๐Ÿ—๏ธ Architecture โ€ข โšก Quickstart โ€ข ๐Ÿ‘ฅ Contributors (99) โ€ข ๐Ÿ› Report Issue


๐Ÿ‘‘ Project Leadership & Authorship

Role Leader GitHub Badges
๐Ÿš€ Founder & Lead Architect / CTO Satyam Pandey @SatyamPandey-07 GitHub Profile Pair Extraordinaire

Tip

Issue Claiming & Auto-Merge Workflow:

  • Post /claim on any open issue to auto-assign it to yourself (limit: up to 10 active issues, 6-day completion window).
  • Post /unclaim on an issue to unassign yourself if you need to release it for other contributors!
  • When opening a PR, link the issue (e.g. Closes #123). Our CI will automatically approve and squash-merge your PR with co-author credit!

๐Ÿš€ Contributors (99 Active Rockstars)

A massive thank you to all 99 brilliant contributors and bots building WorkSphere! ๐ŸŒŸ

SatyamPandey-07
SatyamPandey-07
๐Ÿ‘‘ Creator
jasonjose007
jasonjose007
Ayush-0918
Ayush-0918
SanjanaTech19
SanjanaTech19
ErebAsh
ErebAsh
zainabhina05-png
zainabhina05-png
Pratyush-Panda-2006
Pratyush-Panda-2006
Babin123456
Babin123456
sanskarcoder29
sanskarcoder29
prasiddhi-105
prasiddhi-105
sanjana2505006
sanjana2505006
harshit-kumar-dev
harshit-kumar-dev
Vachhani-Tapan
Vachhani-Tapan
Jivan-Patel
Jivan-Patel
leenacags
leenacags
Chirag1724
Chirag1724
Jidnyasa-P
Jidnyasa-P
Jashvanthan
Jashvanthan
diksha78dev
diksha78dev
MILAN-123865
MILAN-123865
Prathvikmehra
Prathvikmehra
rishab11250
rishab11250
gauri9368gupta-maker
gauri9368gupta-maker
sumittiwari1302
sumittiwari1302
Shruti070107
Shruti070107
shahkhushi0307
shahkhushi0307
Huzaifaahmedbhutto
Huzaifaahmedbhutto
Aditya8369
Aditya8369
hemnath-hub
hemnath-hub
Tanishkkkkk
Tanishkkkkk
Aryanbuha890
Aryanbuha890
Kushal-prime
Kushal-prime
vigneshwaran484
vigneshwaran484
Diwakar-odds
Diwakar-odds
revatikadam0607
revatikadam0607
marisa-mmm
marisa-mmm
anushkanikam05
anushkanikam05
khushimalani16
khushimalani16
varshu55
varshu55
Ruchira807
Ruchira807
Janvi-kapoor
Janvi-kapoor
anshika-guleria
anshika-guleria
Aakansha-saroj-05
Aakansha-saroj-05
csxark
csxark
shadab-6718
shadab-6718
harshith7002
harshith7002
Aakif-Kohari
Aakif-Kohari
nithinoffizial
nithinoffizial
Kadaliswarna
Kadaliswarna
SoumalyaSaha
SoumalyaSaha
Senthil455
Senthil455
pranav28042007-boop
pranav28042007-boop
Sahan20030814
Sahan20030814
khedkaravani-rgb
khedkaravani-rgb
Komal290106
Komal290106
hirthicksundar1980-debug
hirthicksundar1980-debug
rudreshborle
rudreshborle
Vishvapatel2047
Vishvapatel2047
Yuva-Deekshitha-N
Yuva-Deekshitha-N
yashvi-3106
yashvi-3106
afifasyed123
afifasyed123
itsaditi05
itsaditi05
SpiliosDimakopoulos
SpiliosDimakopoulos
panditshubham766-dotcom
panditshubham766-dotcom
HimanshuPathak2725
HimanshuPathak2725
Daksh7785
Daksh7785
badshahaditya57-sketch
badshahaditya57-sketch
SujalKamate
SujalKamate
RitikaSen27
RitikaSen27
Parshant-12
Parshant-12
punithkumar-060308
punithkumar-060308
Bheemeswari497
Bheemeswari497
AndrewJefrin
AndrewJefrin
onitshubham14
onitshubham14
nishthagupta09
nishthagupta09
karrisanthoshigayatri
karrisanthoshigayatri
jenniferramesh423-cmyk
jenniferramesh423-cmyk
VarunikaShreeS
VarunikaShreeS
Aditya90456
Aditya90456
Suprita736
Suprita736
saurabhwagh01
saurabhwagh01
sagar-18-07-2006
sagar-18-07-2006
s-reeshma
s-reeshma
RajD2910
RajD2910
piush365
piush365
prajapati-pankaj-31
prajapati-pankaj-31
Gautam-Bharadwaj
Gautam-Bharadwaj
keshav33450
keshav33450
Keerthi-10-05
Keerthi-10-05
Jaswanth1617
Jaswanth1617
jiahshifana08
jiahshifana08
Gunjan10-droid
Gunjan10-droid
Gabyee17
Gabyee17
Falguni-105
Falguni-105
Kruthica
Kruthica
Prathibha-ui
Prathibha-ui
codinggujarat
codinggujarat
dependabot[bot]
dependabot[bot]
๐Ÿค– Bot
github-actions[bot]
github-actions[bot]
๐Ÿค– Bot

๐Ÿ“‹ Table of Contents


โœจ Features

๐Ÿค– AI-Powered Search

  • 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

๐ŸŽ™๏ธ Voice Input (Browser Support)

The chatbot supports voice-to-text via the Web Speech API:

Browser Voice Input
Chrome 33+ โœ… Supported
Edge 79+ โœ… Supported
Safari (desktop/mobile) โœ… Supported (webkit prefix)
Firefox Stable โš ๏ธ Not supported by default
Firefox Nightly โš ๏ธ Requires flag โ€” see below

Firefox users: The Web Speech API is disabled by default. To enable it:

  1. Navigate to about:config in Firefox.
  2. Search for media.webspeech.recognition.enable and set it to true.
  3. Reload the application.

When voice input is unavailable, a clear warning banner is displayed and the feature degrades gracefully โ€” the text input remains fully functional.

๐Ÿ—บ๏ธ Interactive Dark Theme Map

  • 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

๐Ÿ“ก Real-time Venue Updates (NEW)

  • 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

๐Ÿ“ธ Venue Photos (NEW)

  • 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

๐Ÿข Venue Enrichment (100% FREE APIs)

  • 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

๐Ÿ›ฃ๏ธ Real Road Routing

  • 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

๐ŸŽฏ Multi-Agent Architecture

  • 5 Specialized AI Agents working together:
    • Orchestrator โ†’ Context โ†’ Data โ†’ Reasoning โ†’ Action
  • Transparent Reasoning: See each agent's thought process
  • Parallel Processing: Efficient query handling

โญ User Features

  • 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)

๐Ÿ” Authentication

  • Clerk Integration: Secure sign-in/sign-up
  • User Profiles: Personalized experience
  • Webhook Sync: Real-time user data updates

๐Ÿงพ PDF Receipt System

  • 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

๐Ÿ“ฑ Progressive Web App (PWA)

  • 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

๐Ÿš€ Performance & Reliability

  • 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

See docs/NEXTJS_PERFORMANCE_PLAYBOOK.md for a full guide on rendering strategies, bundle optimization, image optimization, caching, and Core Web Vitals measurement.

๐Ÿ“Š Analytics & Monitoring

  • Event Tracking: Track searches, venue interactions, agent performance
  • Agent Metrics: Monitor AI pipeline execution times
  • Search Patterns: Understand user behavior and preferences

๐Ÿงช Comprehensive Testing

  • 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

๐ŸŒŸ Core Platform Capabilities

WorkSphere brings together geospatial data, ambient intelligence, and real-time collaboration into a unified, responsive interface:

Capability Experience Technical Highlight
๐Ÿ—บ๏ธ Interactive Geospatial Map Dynamic CartoDB Dark Matter tiles with color-coded venue noise markers (green=quiet, amber=moderate, red=busy). Real road routing with OSRM, Haversine proximity, custom Clerk user pins.
๐Ÿค– Autonomous Multi-Agent AI Conversational discovery agent that reasons across amenities, seating availability, and workspace preferences. 5-agent pipeline (Orchestrator โ†’ Context โ†’ Data โ†’ Reasoning โ†’ Action) with transparent thought telemetry.
๐Ÿ“ก Live Presence & Telemetry Real-time seat occupancy badges (Quiet, Moderate, Busy) and collaborative workspace notes. Sub-50ms WebSocket synchronization powered by PartyKit mesh network.
๐Ÿ”‹ Battery Panic Mode Automatically re-ranks search results when battery drops below 20%, prioritizing verified desk outlets. Web Battery API integration with graceful degradation on non-supported viewports.
๐Ÿ“ด Offline-First PWA Browse cached venues, view floor plans, and queue check-ins completely offline. Service Worker background sync + IndexedDB storage + Web Locks API synchronization.
๐Ÿงพ Cryptographic PDF Invoicing Instant one-click PDF receipts generated for verified bookings. 100% serverless, zero-filesystem execution via pdf-lib with embedded Helvetica glyphs.
๐ŸŽ“ Zero-Knowledge Student Perks Claim verified student discounts without revealing personal academic credentials. Client-side WASM ZKP proof generation with offline localStorage verification caching.

๐Ÿ› ๏ธ Tech Stack

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

๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                         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          โ”‚                      โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿš€ Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn
  • Git
  • Docker and Docker Compose (Optional, but highly recommended for local Postgres & Redis)

Installation & Setup

  1. Clone the repository

    git clone https://github.com/SatyamPandey-07/WorkSphere.git
    cd WorkSphere
  2. Install dependencies

    npm install
  3. Choose your environment setup path:

    Option A: Docker Compose (Recommended)

    This starts a local PostgreSQL instance (with the pgvector extension) and Redis automatically.

    # Start database and Redis container services
    docker compose up -d
    
    # Copy local environment example
    cp .env.example .env.local
    # Fill out any missing external API keys in .env.local (e.g. Clerk, Groq)

    Option B: Manual Setup

    If you prefer not to use Docker:

    1. Setup a PostgreSQL 15+ database with the pgvector extension enabled.
    2. Optionally setup an Upstash Redis database.
    3. Copy environment config and fill in Neon and Upstash URLs:
      cp .env.example .env.local
  4. Initialize Database Schema

    npx prisma generate
    npx prisma db push
  5. Run the development server

    npm run dev
  6. Open in browser

    http://localhost:3000
    

๐Ÿงช Testing

Run All Tests

npm test

Watch Mode

npm run test:watch

End-to-End Tests

npm run test:e2e
npm run test:e2e:ui  # With UI

For a full guide on writing, running, and debugging Playwright tests, see docs/PLAYWRIGHT_TESTING_GUIDE.md.

Test Coverage

  • 57 Unit Tests covering:
    • API Route Handlers
    • React Components
    • Utility Functions
    • Rate Limiting
    • Analytics

๐Ÿ” Environment Variables

Create a .env.local file in the root directory by copying the template:

cp .env.example .env.local

Fill in the following values. Variables marked (required) must be set for the app to start; (optional) ones have local fallbacks.

# โ”€โ”€ Database โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
# (required) Neon PostgreSQL connection string โ€” get from neon.tech
DATABASE_URL="postgresql://user:password@host/database?sslmode=require"

# โ”€โ”€ Authentication โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
# (required) Clerk keys โ€” get from clerk.com > your app > API keys
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 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
# (required) Groq API key โ€” free at console.groq.com
GROQ_API_KEY=gsk_...

# (optional) Gemini API key โ€” used for server-side venue summaries
GEMINI_API_KEY=your_gemini_key_here

# โ”€โ”€ Venue Photos โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
# (optional) Pexels API key โ€” falls back to placeholder images
PEXELS_API_KEY=your_pexels_key_here

# โ”€โ”€ Rate Limiting โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
# (optional) Upstash Redis โ€” falls back to in-memory rate limiter
UPSTASH_REDIS_REST_URL=https://your-upstash-redis-endpoint.upstash.io
UPSTASH_REDIS_REST_TOKEN=your-upstash-redis-token

Full reference: See docs/ENV_VARS.md for a complete list of every variable with detailed descriptions.

You can obtain the Upstash Redis credentials from your Upstash Redis database dashboard.

The Upstash Redis variables are optional for local development. If UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN are omitted, the application falls back to an in-memory rate limiter. This allows the application to run locally without an Upstash Redis configuration, but rate-limit state is stored only in the local application memory and is not shared across multiple instances or processes.

For production or multi-instance deployments, configuring Upstash Redis is recommended to ensure consistent rate limiting across application instances.

Getting API Keys

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)

Pages

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

๐Ÿ”Œ API Routes

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

๐Ÿค– Multi-Agent System

Agent Pipeline Flow

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              โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Agent Transparency

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

The venue summary endpoint sends its prompt to Gemini rather than the chat models. See docs/GEMINI_INTEGRATION.md for the client contract, model choice, error handling, and test setup.


๐Ÿ“ Project Structure

The repository is a Next.js monorepo. Below is the top-level layout followed by a plain-English description of every major directory.

worksphere/
โ”œโ”€โ”€ prisma/                    # Database schema, migrations, and seed script
โ”œโ”€โ”€ party/                     # PartyKit real-time collaboration server
โ”œโ”€โ”€ docs/                      # Extended developer guides and reference docs
โ”œโ”€โ”€ e2e/                       # Playwright end-to-end tests
โ”œโ”€โ”€ public/                    # Static assets: PWA manifest, service worker, icons
โ”œโ”€โ”€ scripts/                   # Build and utility scripts
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ __tests__/             # Jest unit and integration tests
โ”‚   โ”‚   โ”œโ”€โ”€ api/               # API route tests
โ”‚   โ”‚   โ”œโ”€โ”€ components/        # Component tests
โ”‚   โ”‚   โ””โ”€โ”€ lib/               # Utility tests
โ”‚   โ”œโ”€โ”€ app/                   # Next.js App Router pages, layouts, and API routes
โ”‚   โ”‚   โ”œโ”€โ”€ api/               # API route handlers
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ chat/          # Multi-agent pipeline endpoint
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ venues/        # Venue CRUD + OSM/Pexels enrichment
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ favorites/     # User favorites
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ conversations/ # Chat history
โ”‚   โ”‚   โ”œโ”€โ”€ ai/                # Main workspace-finder page
โ”‚   โ”‚   โ”œโ”€โ”€ dashboard/         # User profile and booking dashboard
โ”‚   โ”‚   โ”œโ”€โ”€ sign-in/           # Clerk authentication pages
โ”‚   โ”‚   โ”œโ”€โ”€ sign-up/
โ”‚   โ”‚   โ”œโ”€โ”€ offline/           # PWA offline fallback
โ”‚   โ”‚   โ””โ”€โ”€ layout.tsx         # Root layout and global providers
โ”‚   โ”œโ”€โ”€ components/            # Reusable React UI components
โ”‚   โ”‚   โ”œโ”€โ”€ ai-elements/       # Agent-transparency and AI-specific UI pieces
โ”‚   โ”‚   โ””โ”€โ”€ ui/                # General design-system components
โ”‚   โ”œโ”€โ”€ context/               # React context providers for global client state
โ”‚   โ”œโ”€โ”€ core/                  # Core business logic and domain services
โ”‚   โ”œโ”€โ”€ hooks/                 # Custom React hooks (PWA, real-time, speech)
โ”‚   โ”œโ”€โ”€ lib/                   # Shared utilities, database client, rate limiting, analytics
โ”‚   โ”œโ”€โ”€ locales/               # Internationalisation (i18n) string files
โ”‚   โ”œโ”€โ”€ shaders/               # WebGL/GLSL shader source files
โ”‚   โ”œโ”€โ”€ types/                 # Shared TypeScript type definitions
โ”‚   โ”œโ”€โ”€ utils/                 # General-purpose helper functions
โ”‚   โ”œโ”€โ”€ wasm/                  # WebAssembly modules used in the browser
โ”‚   โ”œโ”€โ”€ worker/                # Service worker and background-sync logic
โ”‚   โ””โ”€โ”€ workers/               # Additional web worker scripts
โ”œโ”€โ”€ jest.config.js             # Jest configuration
โ”œโ”€โ”€ playwright.config.ts       # Playwright configuration
โ””โ”€โ”€ package.json

Key directories at a glance

Directory What it contains
prisma/ schema.prisma (data model), auto-generated migrations, and a seed script for local development
party/ PartyKit server (server.ts, multiRegionServer.ts) that powers real-time collaborative features via WebSockets
docs/ Hundreds of developer-facing guides covering architecture, testing, deployment, security, and more
e2e/ Playwright end-to-end test suites for full browser flows
public/ Static files served directly: service worker (sw.js), PWA manifest, and app icons
scripts/ One-off and CI utility scripts (database seeding, asset generation, etc.)
src/app/ Next.js 15 App Router โ€” every page, layout, and API route handler lives here
src/components/ Reusable React components: map, chatbot, venue cards, rating dialog, error boundary, and design-system primitives
src/context/ React context providers that share global state (currency, events, etc.) across the component tree
src/core/ Framework-agnostic business logic and domain services, kept separate from Next.js specifics
src/hooks/ Custom React hooks: usePWA, useRealTime (SSE), and useSpeechRecognition
src/lib/ Shared back-end helpers: Prisma client, Zod validation schemas, rate limiter, analytics, OSM/Pexels integration, and OSRM routing
src/locales/ Translation JSON files used by the i18n layer
src/shaders/ GLSL/WebGL shader programs for any GPU-accelerated rendering
src/types/ Project-wide TypeScript interfaces and enums
src/utils/ Lightweight, stateless helper functions shared across the codebase
src/wasm/ Compiled WebAssembly modules (e.g. FFT, noise filtering, SQLite FTS)
src/worker/ Service worker source and offline/background-sync logic
src/workers/ Additional dedicated web worker scripts (heavy computation off the main thread)
src/__tests__/ Unit and integration tests mirroring the src/ directory layout

๐Ÿงช Testing the App (User Guide)

Quick Start Test

  1. Open the app at http://localhost:3000
  2. Allow location access when prompted
  3. Start chatting with the AI assistant!

Feature Testing Checklist

๐Ÿ” AI Search

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"

๐ŸŽ™๏ธ Voice Input

  1. Open the app in Chrome or Edge
  2. Click the microphone icon in the chat input bar
  3. Allow microphone permission when prompted
  4. Speak your query โ€” it will populate the text input automatically
  5. Click Send or press Enter to submit

Testing the unsupported-browser warning (Firefox Nightly / DevTools simulation):

  1. Open Chrome DevTools (F12) โ†’ Console tab
  2. Paste: delete window.SpeechRecognition; delete window.webkitSpeechRecognition;
  3. Reload the page
  4. The mic button will appear dimmed/greyed out
  5. Click it โ†’ an amber warning banner appears explaining the limitation

โญ Favorites & Ratings (Requires Sign-in)

  1. Sign in with Clerk
  2. Click heart icon on venue cards to favorite
  3. Click "Rate" to submit ratings

๐Ÿ“ฑ PWA Installation

  • Desktop: Click install icon in browser
  • Mobile: "Add to Home Screen"

๐Ÿš€ Deployment

Deploy to Vercel

  1. Push to GitHub
  2. Connect repository to Vercel
  3. Add environment variables
  4. Deploy!

๐Ÿ”ฎ Future Improvements

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

๐Ÿค Contributing & Issue Workflow

Contributions are warmly welcomed! We aim to make contributing as smooth and rewarding as possible.

โšก Automated Issue Assignment

  1. Find an Issue: Explore our Open Issues.
  2. Claim with /claim: Drop a comment containing /claim on any unassigned issue. The automation will assign it to you instantly!
    • You can hold up to 10 active assigned issues at once.
    • Recommended completion window is 6 days.
  3. Release with /unclaim: If you need to step away from an issue, simply comment /unclaim to release it for other contributors.
  4. Auto-Merge on PR: Include Closes #<issue_number> in your PR description. When opened, CI checks the issue link and automatically squash-merges your PR with co-author credit!

Please refer to our Contributing Guide and Code of Conduct.


๐Ÿ“„ License

This project is licensed under the MIT License.


๐Ÿ‘จโ€๐Ÿ’ป Author

Satyam Pandey


โญ Star this repo if you find it helpful!

Made with โค๏ธ by Satyam Pandey

About

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

21 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages