A room-based "home desktop" web app inspired by Microsoft Bob. Navigate rooms, click objects, and let an AI assistant help you manage your digital life.
- Room Navigation: Move between Living Room, Office, and Kitchen
- Interactive Objects: Click objects to open apps (Calendar, Notes, To-Dos, Photos, Contacts)
- AI Assistant: BobBot helps you create notes, add tasks, and schedule events
- Accessibility: High contrast mode, large text, reduced motion, simplified mode
- OAuth Authentication: Sign in with Google or Facebook
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- UI Components: Radix UI / shadcn/ui
- Database: PostgreSQL with Prisma ORM
- Authentication: NextAuth.js v5
- AI: OpenAI API
- State Management: Zustand
- Node.js 18+
- PostgreSQL database
- Google OAuth credentials
- Facebook OAuth credentials (optional)
- OpenAI API key
-
Clone the repository:
git clone https://github.com/yourusername/bobweb.git cd bobweb -
Install dependencies:
npm install
-
Copy the environment file and configure:
cp .env.example .env
-
Configure your
.envfile with:- Database connection string
- OAuth credentials
- OpenAI API key
- Auth secret
-
Generate Prisma client and run migrations:
npx prisma generate npx prisma db push
-
Start the development server:
npm run dev
| Variable | Description |
|---|---|
DATABASE_URL |
PostgreSQL connection string |
AUTH_SECRET |
NextAuth secret key |
AUTH_URL |
Application URL |
GOOGLE_CLIENT_ID |
Google OAuth client ID |
GOOGLE_CLIENT_SECRET |
Google OAuth client secret |
FACEBOOK_CLIENT_ID |
Facebook OAuth client ID |
FACEBOOK_CLIENT_SECRET |
Facebook OAuth client secret |
OPENAI_API_KEY |
OpenAI API key for AI assistant |
src/
├── app/ # Next.js App Router pages
│ ├── (protected)/ # Authenticated routes
│ │ ├── home/ # Home/room selector
│ │ ├── rooms/[roomId]/ # Individual room view
│ │ └── settings/ # User settings
│ ├── api/ # API routes
│ │ ├── ai/ # AI chat and tools
│ │ ├── auth/ # NextAuth handlers
│ │ ├── notes/ # Notes CRUD
│ │ ├── todos/ # Todos CRUD
│ │ ├── events/ # Calendar events CRUD
│ │ ├── photos/ # Photos CRUD
│ │ └── contacts/ # Contacts CRUD
│ └── auth/signin/ # Sign-in page
├── components/
│ ├── ai/ # AI assistant components
│ ├── objects/ # Object/app components
│ ├── rooms/ # Room view components
│ ├── providers/ # Context providers
│ └── ui/ # Reusable UI components
├── lib/ # Utility functions
├── store/ # Zustand store
└── types/ # TypeScript types
BobBot can:
- Create notes (
create_note) - Create to-do items (
create_todo) - Create calendar events (
create_calendar_event) - Get upcoming events (
get_upcoming_events) - Get to-do items (
get_todos)
- High Contrast Mode: Increased color contrast
- Large Text Mode: Larger text throughout the app
- Reduced Motion: Minimized animations
- Simplified Mode: Fewer objects per room
- Keyboard Navigation: Full keyboard support
- Screen Reader Support: ARIA labels and landmarks
MIT