# How to Vibe Code Your Own Focusmate (and Stop Paying for It)

> Virtual coworking for getting anything done

- Site: https://focusmate.com
- Category: Productivity & Remote Work
- Platforms: Web app
- Verdict: **Solid side project** (75/100 vibecodeable)
- Estimated effort: 2 weekends of focused coding

## Verdict

Build a personal subset for yourself and a few friends in a weekend, but keep paying if you want a global liquidity pool of strangers.

The core code for Focusmate is surprisingly straightforward: a relational database for slots, a simple time-slot matching query, calendar webhooks, and a managed video SDK like Daily.co. For a personal-use clone or a private accountability group, an AI coding agent will scaffold the entire Next.js stack in a couple of evenings. The only real engineering traps are timezone normalization bugs in the calendar picker and managing WebSocket or room lifecycle events. However, recreating the public business is pointless because its true moat is the 24/7 global user liquidity.

### What you can't replicate

- Global liquidity and 24/7 user availability for instant random matches
- Massive word-of-mouth community trust and brand equity

## What it does

Virtual coworking and body doubling platform that pairs remote workers on video for timed, structured focus sessions.

### Core features

- User authentication and profile management
- Session booking calendar for 25, 50, and 75-minute intervals
- Automated partner matching algorithm for overlapping time slots
- Embedded video and audio rooms via Daily.co API
- Favorite partners list and booking shortcuts
- Calendar integrations (Google Calendar OAuth sync)
- Session check-in and goal-sharing workflow

## The business

### Pricing

- Free: Free
- Focusmate Plus (Monthly): $12.00/mo
- Focusmate Plus (Annually): $8.00/mo

### Funding

$471K raised.
- 8 total historic angel/seed and micro-debt rounds
Investors: Angel investors, Micro-seed funds

Founded 2016.
Team size: 10-20.

## The hard parts

- Two-way calendar synchronization handling webhook event collisions and timezone offsets
- Coordinating precise session start and end sync states across video rooms
- Zero-latency partner matching state machine for concurrent bookings

## How to vibe code Focusmate

### Prerequisites

- Node.js (free): Required runtime for executing the Next.js development environment.
- GitHub (free): Version control repository and deployment hook source.
- Daily.co Account (free tier): Managed video API infrastructure for embedding 1:1 video rooms.

### Recommended AI tools

- Claude Code: Best-in-class terminal coding agent for multi-file scaffolding, API routes, and full-stack implementation.
- Cursor: Ideal AI code editor for inspecting frontend components and debugging layout edge cases.

### Stack

- Frontend: Next.js (App Router, Tailwind CSS)
- Backend: Next.js Server Actions & API Routes
- Database: Turso (SQLite at the edge)
- Auth: better-auth
- Payments: none
- Other: Daily.co (Video SDK), Resend (Transactional Email)

### Hosting

- Cloudflare (Hosting the Next.js frontend and edge API routes): $0/mo
- Turso (Managed edge SQLite database storage): $0/mo

### Build guide

1. **Project Scaffolding & Database Schema** — Initialize a Next.js project with Tailwind CSS, configure Turso SQLite with Drizzle ORM, and set up user authentication with better-auth.

```
Create a new Next.js 16 app with TypeScript and Tailwind CSS v4. Configure Drizzle ORM to connect to Turso SQLite. Define a database schema with tables for users, sessions (id, startTime, duration in [25, 50, 75], status, hostId, partnerId), and favorite_partners (userId, favoriteId). Integrate better-auth for email/password authentication with secure session handling. Implement layout wrappers with a clean, minimal UI inspired by Focusmate.
```

2. **Calendar Slot Booking & Time Slot Grid** — Build the interactive calendar booking interface where users can pick 25, 50, or 75-minute time slots across different timezones.

```
Build a responsive calendar booking dashboard in Next.js App Router. Users should be able to view an hourly schedule grid for the current day and upcoming week, select 25, 50, or 75-minute duration slots, and declare their session goal in a modal before confirming booking. Handle timezone normalization correctly between local time and UTC database storage using date-fns or Luxon. Save booked slots to the sessions table with a 'waiting' status.
```

3. **Partner Matching Engine** — Implement the matching algorithm that pairs two users who have booked overlapping time slots.

```
Implement a server action for session matching. When a user books a time slot, the backend queries the database for active unassigned sessions with the exact same start time and duration. If an unmatched session exists, assign the current user as the partner, update both session statuses to 'matched', and generate a shared unique room identifier. If no partner is found, keep the session status as 'waiting' until another user books or a timeout occurs.
```

4. **Embedded Video Room Integration** — Integrate Daily.co to embed 1:1 video and audio calling directly into the session room view.

```
Create a session room page at /sessions/[id] that integrates the Daily.co video calling SDK. Fetch the session details and room token from the backend API. Render a clean split-view video interface showing both participants' video feeds side by side, along with mute/unmute audio controls, camera toggle, and a side panel for sharing and checking off session goals. Ensure the room automatically disconnects or prompts when the session timer expires.
```

5. **Favorite Partners & Polish** — Add favorite partner tagging, post-session review check-ins, and polish the user dashboard experience.

```
Add a post-session check-in modal that appears when the timer ends, allowing users to mark their goals as completed and rate their accountability partner. Implement a 'Favorite Partners' list feature accessible from the dashboard, allowing users to star past partners and view their upcoming scheduled slots for quick-booking shortcuts. Add Polish UI touches, empty states, and toast notifications for matching alerts.
```

### Cost vs paying

**Starting costs (one-time):**

- Domain name (optional): $12 one-time
- Total: ~$12 one-time

**Ongoing costs (monthly):**

- Cloudflare / Turso / Daily.co free tiers: $0/mo
- Total: $0/mo

- Paying for the SaaS instead: $12.00/mo
- Build time: 12-16 hours
- AI tool credits: $20/mo
- Break-even: Never (built for personal use/fun)

## Sources

- [Focusmate Home & Features](https://focusmate.com)
- [Focusmate Pricing Page](https://www.focusmate.com/pricing)
- [Tracxn: Focusmate Company Profile & Funding Data](https://tracxn.com)
- [GetLatka: Focusmate Revenue & Metrics](https://getlatka.com)