ClinSpark Master Schedule

Role: Solo Developer Timeline: 2025–Present Platform: Web (Netlify + Render + Neon)

A full-stack clinical trial master schedule (v2.1.0) built for coordinators to track study milestones in one place. It offers five views — Dashboard, Table, Calendar, Gantt, and Workload — with real-time presence, inline editing, color-coded date chips, workload analytics, and a complete audit trail, replacing a fragmented collection of spreadsheets.

The Problem

Clinical trial E-Source Builders manage dozens of overlapping studies simultaneously, each with a sequence of critical milestones (screening, admission, dosing, UAT, build test, etc.) that must be tracked for multiple cohorts and study events. The existing process relied on shared Excel spreadsheets:

Solution Overview

Study & Milestone Management

  • Create and edit studies with protocol number, sponsor, PI, and phase
  • 7 milestone rows per study: Screening, Admission, Dosing, Change Log, UAT, Build Test, Procedure Log
  • Per-milestone: date, status, priority, assignee, and notes fields
  • Archive and restore studies to keep the active view focused
  • Inline editing with DD-MMM-YYYY date auto-formatting and visual save feedback

Gantt Chart View

  • Timeline visualization spanning all active studies and their milestone dates
  • Color-coded by milestone type for at-a-glance cross-study scheduling
  • Zoomable and scrollable date axis
  • Tooltip details on hover: study name, milestone, date, status, assignee
  • Filterable by study, milestone type, and date range

Real-Time Presence

  • Heartbeat polling tracks which users are currently active
  • Active users bar shows who is online across the entire platform
  • Presence state expires automatically when heartbeats stop
  • 30-second polling keeps the UI current without WebSocket infrastructure

Security & Access Control

  • JWT authentication with access and refresh tokens, PBKDF2-SHA256 password hashing
  • JTI-based session revocation: logout immediately invalidates the session server-side
  • Refresh token rotation on every renewal cycle
  • Brute-force rate limiting on login (5 attempts / 5 min)
  • Admin panel for user CRUD, role assignment, and password reset
  • Forward-only schema migrations applied automatically on backend startup

Export & Audit

  • One-click Excel export of the full schedule, formatted for distribution
  • Complete audit trail: every create, edit, and delete is logged with user and timestamp
  • Audit log viewer with date-range filtering and export
  • Change-tracker banner alerts users when another user has modified the schedule

User Experience

  • Five coordinated views: Dashboard, Table, Calendar, Gantt, and Workload
  • Dashboard color-coded chips: red (≤14 days), yellow (≤30 days), green (>30 days), gray (past/no date)
  • Workload bar chart + line graph with milestone-name filter
  • Always-editable milestone table with DD-MMM-YYYY date auto-formatting
  • Account settings for self-service username and password changes
  • Responsive layout that works on tablets and wide monitors

Architecture

The application follows a clean separation between a React SPA frontend and a Python FastAPI backend, communicating over a REST API with JSON. Neon serverless PostgreSQL handles all persistent state. The frontend is served as a static site from Netlify; the backend runs on Render's managed container platform.

Tech Stack

React 18 TypeScript TailwindCSS Zustand FastAPI Python PostgreSQL psycopg (async) JWT / HttpOnly Cookies Netlify Render Neon Axios Vite

Screenshots

Challenges & Solutions

Outcomes & Impact

Lessons Learned

Future Improvements