Angelo LorenoSoftware Developer | Technical Support

03 / Project Management Tool

OPPA / Progress Tracker

A project tracker designed to preserve context — not just tasks.

Built around activity history, pause/resume context, and a deterministic recommendation engine that helps surface what to work on next.

Role
Personal Project
Type
Project Management Tool
Maturity
Functional MVP · Active Development
Stack
Next.js 16 · Supabase · PostgreSQL
OPPA project progress dashboard interface

The Problem

Resuming work is often harder than starting it.

Projects become difficult to resume when the useful context lives outside the tracker: what changed, why work paused, and what would be reasonable to do next.

A normal task list can show what exists. OPPA is built around preserving the surrounding project state, so active work does not restart from memory every time.

Context OPPA keeps visible

  • What was last worked on
  • Why a project was paused
  • What changed in recent activity
  • What the next action might be

Core Loop

A workflow for continuity.

  1. 01

    Create project

  2. 02

    Log activity

  3. 03

    Work progresses

  4. 04

    Pause with context

  5. 05

    Resume later

  6. 06

    Evaluate recent state

  7. 07

    Surface What's Next

Verified Capabilities

Small pieces, connected as a product loop.

Project state

Project CRUD, activity logging, and pause/resume are treated as one working loop rather than separate record-keeping screens.

Domain rules

Pause reason is required at the database layer through a PostgreSQL CHECK constraint, so the rule survives UI changes or regressions.

Next-work guidance

A deterministic scoring engine evaluates project state and produces inspectable suggestions without a network call or LLM dependency.

Guest sharing

Read-only share links expose a narrow shared dashboard view without granting anonymous users direct table access.

Engineering Focus

The recommendation layer is deterministic on purpose.

The project's lib/scoring.ts module is a pure scoring function. It evaluates project state and returns next-work suggestions without calling a network service or depending on an LLM.

That makes the output predictable, inspectable, fast, and easier to reason about than opaque recommendation output.

The optional narration layer exists as a future extension; it is currently a stub.

01Project state
02Recent activity
03Pause context
04Deterministic scoring
05What's Next

Safe Guest Sharing

Public sharing uses a narrow database function.

Guest

  1. 1Share link
  2. 2get_shared_dashboard()
  3. 3Filtered project view

Authenticated Owner

  1. 1Supabase Auth
  2. 2RLS-protected tables
  3. 3Full private workspace

Instead of opening tables to anonymous reads, OPPA exposes a PostgreSQL SECURITY DEFINER RPC designed specifically for the shared dashboard use case. The function returns only appropriate shared data and strips private fields.

Data Boundary

Protection lives at the data layer.

OPPA uses Supabase, PostgreSQL, Supabase Auth, and Row Level Security. Data access is ultimately enforced through PostgreSQL Row Level Security, rather than relying solely on client-side route handling.

Pause reason is also enforced through a database CHECK constraint. Application validation can be bypassed or regress; the database keeps that domain rule intact.

Architecture

A compact full-stack system.

Next.js application

Auth

Supabase Auth

Data

PostgreSQL + Row Level Security

Sharing

SECURITY DEFINER get_shared_dashboard RPC

Local application logic

deterministic scoring engine

  • Next.js 16
  • TypeScript
  • Supabase
  • PostgreSQL
  • Supabase Auth
  • Row Level Security

Current Scope

Functional core, honest boundaries.

Currently implemented

  • projects
  • activity logging
  • pause/resume
  • deterministic suggestions
  • guest sharing
  • auth/RLS protection

Being developed or refined

  • epics/tasks exist in the database schema but have no UI
  • optional AI narration is currently only a stub
  • suggestion_cache and /api/suggestions/refresh exist but are not wired into the active product flow
  • automated test suite has not yet been introduced
  • CI has not yet been introduced

Reflection

Context became part of the product state.

OPPA became an exercise in treating context as product data. The most useful parts of the implementation are not necessarily the largest features: deterministic recommendations, database-enforced domain rules, and a deliberately narrow guest-sharing boundary make the application easier to reason about.