DevRoutine
DevRoutine
Automate your daily dev workflows, conquer context switching.
Solo developers and indie hackers often juggle multiple small projects, leading to constant context switching and forgotten operational tasks. Imagine a developer who has 3-5 micro-SaaS products. Each product requires routine checks: monitoring logs, updating dependencies, checking analytics dashboards, renewing SSL certificates, sending out monthly updates, or even just checking email support queues. These seemingly small tasks, when scattered across projects and contexts, lead to significant mental overhead and wasted time. There's no centralized system to define and consistently execute these crucial 'maintenance' or 'operational' routines. This results in missed deadlines, security vulnerabilities from outdated dependencies, decreased efficiency, and overall burnout, costing hours each week in re-learning context for each project's operational tasks.
DevRoutine provides a focused platform for solo developers to define, manage, and execute custom 'Playbooks' for their recurring operational tasks. Users can create playbooks for specific routines (e.g., 'Daily Project Health Check', 'Weekly SaaS Maintenance', 'New Project Onboarding'). Each playbook consists of ordered steps, allowing developers to list specific actions, attach relevant links (e.g., 'Check Vercel logs for Project X', 'Update dependencies for Repo Y'), and track their progress. The unique angle is the 'routine-first' approach, guiding users through their defined operational sequences project-by-project, minimizing context switching, and ensuring consistency. Features include scheduling, progress tracking, and reminders, making sure no critical operational task is ever forgotten again. It's a structured way to ensure the 'invisible' work of maintaining a dev portfolio gets done efficiently.
Tech Stack
System Architecture
βββββββββββββββββββββ βββββββββββββββββββ
β Client (Browser) ββββββHTTPSββββββΆβ Vercel Hosting β
β (Next.js App) β β (Next.js Server) β
βββββββββββ¬ββββββββββ βββββββββββ¬ββββββββββ
β β
β HTTPS (API Calls) β HTTPS (Database, APIs)
βΌ βΌ
βββββββββββββββββββββ βββββββββββββββββββ
β Next.js API Routes βββββββAuthββββββΆβ Supabase (Auth, DB)β
β (Backend Services)β β (PostgreSQL) β
βββββββββββ¬ββββββββββ βββββββββββββββββββ
β
β HTTPS (External Services)
βΌ
βββββββββββ΄ββββββββββ βββββββββββββ
β Stripe (Payments) β β Resend β
βββββββββββββββββββββ β (Emails) β
βββββββββββββDatabase Schema
-- Users table for authentication and user profiles
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
email VARCHAR(255) UNIQUE NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Projects table to categorize playbooks (optional, for shared routines)
CREATE TABLE projects (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
name VARCHAR(255) NOT NULL,
description TEXT,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Playbooks table to define routines
CREATE TABLE playbooks (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
project_id UUID REFERENCES projects(id) ON DELETE SET NULL, -- Nullable for general routines
name VARCHAR(255) NOT NULL,
description TEXT,
frequency VARCHAR(50) NOT NULL, -- e.g., 'daily', 'weekly', 'monthly', 'custom'
is_archived BOOLEAN DEFAULT FALSE,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_playbooks_user_id ON playbooks(user_id);
-- Playbook steps table for individual actions within a playbook
CREATE TABLE playbook_steps (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
playbook_id UUID REFERENCES playbooks(id) ON DELETE CASCADE,
order_index INTEGER NOT NULL, -- Order of steps within a playbook
description TEXT NOT NULL,
tool_link VARCHAR(2048), -- Optional link to external tool/resource
expected_duration_minutes INTEGER, -- Optional estimate for step completion
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW(),
CONSTRAINT unique_playbook_order UNIQUE (playbook_id, order_index)
);
CREATE INDEX idx_playbook_steps_playbook_id ON playbook_steps(playbook_id);
-- Routine executions table to track instances of a playbook being run
CREATE TABLE routine_executions (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
playbook_id UUID REFERENCES playbooks(id) ON DELETE CASCADE,
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
scheduled_at TIMESTAMPTZ NOT NULL, -- When the routine was expected to run
started_at TIMESTAMPTZ, -- When the user actually started it
completed_at TIMESTAMPTZ, -- When all steps were completed
status VARCHAR(50) NOT NULL DEFAULT 'pending', -- 'pending', 'in_progress', 'completed', 'skipped'
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_routine_executions_user_id ON routine_executions(user_id);
CREATE INDEX idx_routine_executions_scheduled_at ON routine_executions(scheduled_at);
-- Step completions table to track individual step progress for an execution
CREATE TABLE step_completions (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
routine_execution_id UUID REFERENCES routine_executions(id) ON DELETE CASCADE,
playbook_step_id UUID REFERENCES playbook_steps(id) ON DELETE CASCADE,
completed_at TIMESTAMPTZ,
is_completed BOOLEAN DEFAULT FALSE,
notes TEXT,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW(),
CONSTRAINT unique_step_completion UNIQUE (routine_execution_id, playbook_step_id)
);
CREATE INDEX idx_step_completions_routine_execution_id ON step_completions(routine_execution_id);
-- Subscriptions table for Stripe integration
CREATE TABLE subscriptions (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
user_id UUID REFERENCES users(id) ON DELETE CASCADE,
stripe_customer_id VARCHAR(255) UNIQUE NOT NULL,
stripe_subscription_id VARCHAR(255) UNIQUE NOT NULL,
plan_id VARCHAR(255) NOT NULL,
status VARCHAR(50) NOT NULL, -- e.g., 'active', 'canceled', 'trialing'
current_period_end TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_subscriptions_user_id ON subscriptions(user_id);API Endpoints
/api/auth/signupRegister a new user./api/auth/signinSign in an existing user./api/userGet current user's profile./api/projectsList all projects for the authenticated user./api/projectsCreate a new project./api/playbooksList all playbooks for the authenticated user, optionally filtered by project./api/playbooksCreate a new playbook with initial steps./api/playbooks/[id]Get a specific playbook and its steps by ID./api/playbooks/[id]Update an existing playbook's details./api/playbooks/[id]Delete a playbook and all its associated steps/executions./api/playbooks/[id]/stepsAdd a new step to an existing playbook./api/playbooks/[id]/steps/[step_id]Update a specific step within a playbook./api/playbooks/[id]/steps/[step_id]Delete a step from a playbook./api/routines/todayGet all routine executions scheduled for today for the user./api/routines/[id]Get a specific routine execution with its steps and completion status./api/routines/[id]/startMark a routine execution as 'in_progress'./api/routines/[routine_id]/steps/[step_id]/completeMark a specific step within a routine execution as 'completed'./api/routines/[id]/completeMark an entire routine execution as 'completed'./api/routines/[id]/skipMark a routine execution as 'skipped'./api/webhook/stripeStripe webhook endpoint for subscription updates.Start Building with AI
Copy this prompt for Cursor, v0, Bolt, or any AI coding assistant
BuilderDaily Team
VerifiedIndie hackers and full-stack engineers creating validated Micro-SaaS blueprints with production-ready tech stacks.
Related Blueprints
More Micro-SaaS ideas you might like to build
API CostPilot
Real-time API expense tracking, forecasting, and optimization for developers.
EcoContent Auditor
Analyze and reduce the digital carbon footprint of your website content.
ClientFlow Metrics
Custom client progress tracking for health & wellness practitioners.
Gap Alert
Today's gap expires in ~14 hours
Get tomorrow's blueprint delivered to your inbox so you never miss a profitable idea.
(Email delivery launching soon β sign up to be first!)