Files
neta/docs/database/0002-freelancer-os-core-tables.md
T

1.9 KiB

0002 Freelancer OS Core Tables

SQL file: supabase/migrations/0002_add_freelancer_os_core_tables.sql

Purpose

Adds the database model required for the Freelancer OS MVP.

This migration keeps the existing baseline from supabase/schema.sql and extends it instead of replacing it. The existing tasks table is reused and enriched with freelancer-specific fields.

What It Creates

  • clients
  • projects
  • calendar_events
  • finance_transactions
  • daily_logs
  • app_settings
  • set_updated_at() trigger function
  • updated-at triggers for the new tables
  • indexes for common dashboard/report queries
  • RLS policies for every new table

What It Changes

The existing tasks table gets these additional columns:

  • client_id
  • project_id
  • priority
  • due_at
  • estimated_minutes
  • actual_minutes

This lets a task belong to a client and/or project while preserving the earlier journal/task prototype schema.

MVP Coverage

This migration supports:

  • client management
  • client projects
  • side projects
  • task planning
  • calendar planning
  • income and expense tracking
  • daily mood/energy logging
  • app and AI provider settings

RLS Model

Every new table has user_id.

Policies follow the same pattern:

  • users can select their own rows
  • users can insert rows only for themselves
  • users can update their own rows
  • users can delete their own rows

Notes

app_settings.api_key exists for compatibility with the current prototype flow. For production-grade use, provider credentials should be encrypted or moved to a safer secret-management strategy.

daily_logs is the new MVP-oriented replacement for the earlier journals concept. The old journals table remains available until the UI migration is complete.

Execution

Run this after supabase/schema.sql.

Do not add this file to query-log.md until it has actually been executed against a database.