Skip to main content
← Selected work

Full-Stack Project Reporting & Analytics

NODAL

Turn project activity into actionable reports, metrics and exports.

Full-Stack Developer · Aug–Oct 2025

TASKS · TIME2.5h1.0h4.0h0.5h3.0h—ANALYTICS83%REPORTPDFXLSXRAW ACTIVITYPOSTGRES AGGREGATIONSECURED EXPORT

Summary

NODAL is a collaborative task-management platform designed to help teams coordinate work across departments. It brings shared task assignments, project tracking, schedules, and reporting into one application, giving employees visibility into their responsibilities while enabling administrators to monitor progress and performance.

Built with Next.js, React, TypeScript, and Supabase, the platform combines role-based access control with a centralised PostgreSQL database. My primary contribution focused on engineering the reporting system, including task and time-tracking analytics, PDF/XLSX exports, automated testing, and CI/CD workflows.

Problem

Work often spans multiple departments, but traditional task-management workflows can fragment responsibility and visibility. When teams maintain separate records of the same task, assignments, progress, and ownership can become inconsistent. A shared task model must support cross-department collaboration without duplicating the underlying work.

Turning that shared activity into meaningful reports introduces another challenge. Completion rates, time-tracking metrics, and deadline indicators must remain accurate across projects, users, and date ranges, including edge cases such as incomplete records and overdue tasks.

The platform must also enforce access boundaries so users only see authorised project information, while providing reliable, independently testable reporting workflows without risking production data.

Architecture

↳ Hover or focus any component to see what it connects to.

NODAL's runtime is a project team member using a Reporting UI built with Next.js and React, which also exports PDF and XLSX reports in the browser. The UI sends requests to a Reporting backend hosted on Vercel, which combines the API handlers, the service layer and the data access layer, and receives responses. The backend queries Supabase and PostgreSQL, which provide authentication and Row-Level Security so users only see authorised records, and which hold the shared task records and the assignments linking each task to its assignees. A small set of scheduled jobs, Supabase Cron invoking Edge Functions that send email, reads from the same database. The CI/CD pipeline is separate. A GitHub repository deploys to Vercel and triggers GitHub Actions, which run automated Vitest, Deno and Playwright tests against an isolated local Supabase that is started for each run and removed afterwards.

Project team memberReporting UINext.js and React, PDFand XLSX exportReporting backendAPI handlers, servicelayer, data accessSupabase andPostgreSQLAuth, Row-Level Security,shared task records andassignmentsScheduled jobsSupabase Cron, EdgeFunctions, emailVerceldeploymentGitHub repositoryGitHub Actionspush and pull requestIsolated localSupabasestarted per run, thenremovedAutomated testsVitest, Deno, Playwright
Fig. 01 — NODAL, system architecture

The Next.js application separates reporting into API handlers, business logic, and database access layers. User requests are validated and filtered before task and time-tracking data is retrieved from Supabase, with reporting calculations powering interactive analytics and PDF/XLSX exports.

Supabase provides authentication and PostgreSQL persistence, with role-based access control and Row-Level Security (RLS) enforcing permissions at the data layer. Shared task records and separate assignment relationships allow users across departments to collaborate without duplicating underlying tasks.

For automation and delivery, Supabase Cron triggers scheduled backend operations, while GitHub Actions runs linting and automated tests using Vitest and Playwright. Integration and end-to-end tests run against disposable local Supabase instances, isolating test data from hosted environments before deployment to Vercel.

My Contributions

  • Built full-stack reporting workflows across interactive React views, RESTful API access, calculations, filtering and report exports.
  • Structured backend services around API handlers, business logic and database access, for a clearer separation of concerns.
  • Implemented PostgreSQL aggregation queries for task completion and time-tracking metrics, backed by role-based access rules and Row-Level Security.
  • Added scheduled background processing with Supabase Cron.
  • Built automated validation with Vitest, Playwright, GitHub Actions and isolated local Supabase instances to protect hosted data during testing.

Engineering Decisions

Model shared tasks through relationships. Tasks are stored as single PostgreSQL records, with separate assignment relationships supporting multiple users across departments. This avoids duplicating task data and preserves a consistent source of truth for collaboration and reporting.

Centralise reporting logic. Reporting calculations are separated from UI components and handled through dedicated backend services, ensuring consistent metric definitions across charts and exports. This improves testability and maintainability at the cost of additional application-layer abstraction.

Enforce access at the data boundary. Application-level role checks are complemented by PostgreSQL Row-Level Security (RLS), ensuring data access is governed by database policies rather than relying solely on frontend restrictions.

Isolate test environments. Integration and end-to-end tests use disposable local Supabase instances, allowing database fixtures to be created and deleted without affecting hosted data. This adds environment setup overhead but makes destructive testing safer and repeatable.

Automate code verification. GitHub Actions runs linting and automated tests to detect regressions before changes are integrated. Vercel handles application deployment, reducing manual release steps and keeping build and test workflows reproducible.

Results & Validation

  • Delivered a deployed project-management application with interactive analytics, date-based reporting, and PDF/XLSX export capabilities.
  • Validated reporting calculations through automated unit tests covering empty datasets, deadline boundary conditions, and project-level aggregations.
  • Established isolated integration and end-to-end testing workflows using Vitest, Playwright, and disposable local Supabase environments to verify application behaviour without modifying hosted data.
  • Implemented GitHub Actions workflows for automated code validation and continuous deployment through Vercel.

Stack

  • Next.js
  • React
  • TypeScript
  • Supabase
  • PostgreSQL
  • Row-Level Security
  • Tailwind CSS
  • Recharts
  • Vitest
  • Playwright
  • GitHub Actions
  • Vercel
  • Supabase Cron