STACK

Next JS, TypeScript, Tailwind CSS, Supabase, PostgreSQL

TYPE

Productivity Tool

STATUS

Completed

Plitrak's screenshot
Plitrak's screenshot

Plitrak was born from a real personal problem: managing dozens of simultaneous scholarship, internship, fellowship, and job applications with no single place to track them all. Most people rely on scattered spreadsheets or mental notes, losing opportunities to missed deadlines or forgotten follow-ups. Built as a fullstack Next.js application with Supabase as the backend, Plitrak provides a centralized workspace where each application is logged with its opportunity type, deadline, current status, and relevant notes. Users can also import an existing record of applications from a CSV file, and the system automatically parses the file and creates the records for them. Deadline heatmaps surface urgency at a glance, showing which applications need attention today versus next week. Smart email reminders, interview rate analytics, and global timezone synchronization ensure no deadline slips and users can understand their own conversion rates across different opportunity types. Supabase handles authentication, PostgreSQL data storage, and, critically, SQL functions and database triggers that automate server-side actions like reminder scheduling and status transitions directly at the database level.

GOALS

Plitrak pushed me significantly deeper into Supabase's advanced capabilities, writing PostgreSQL functions and triggers directly within the database to drive application behaviour reframed how I think about backend architecture. Sometimes the most elegant and performant solution lives at the database layer, not in application code. Building a tool I actively use myself also sharpened my instinct for UX decisions: when you feel the friction firsthand, you fix it faster. This project cemented Supabase as a go-to for fullstack Next.js projects where speed of development and scalability both matter.

Plitrak's screenshot
Plitrak's screenshot

CHALLENGES

The central technical challenge was making Supabase's BaaS capabilities work seamlessly within a fullstack Next.js App Router application. I leaned into Supabase's SQL functions and database triggers to drive application behaviour at the database level, keeping automation logic where the data lives rather than in application-layer code. Bridging this Supabase-native approach with Next.js Server Actions and maintaining consistent session state between Supabase Auth and Next.js middleware required careful architecture decisions, particularly around when to trust the client versus always revalidating through the server.

Plitrak's screenshot
Plitrak's screenshot

Contact

Interested in working with me?