Projects
Orbit
Orbit is a household-first coordination app for shared day-to-day to-dos and recurring monthly obligations. Users work inside Spaces with role-based access (Owner, Editor or Read-only), system Daily and Monthlies sections, custom task/notes/mixed Sections, and a read-only Upcoming view that aggregates due work across the Active Space. Auth covers email/password with verification plus Google and Microsoft OAuth. Invites are email-based with hashed tokens and a safe post-auth continuation flow. This project includes a dual API surface (Next.js Server Actions for web and a versioned /api/v1 for mobile-ready CRUD) over one shared domain-service layer, Postgres-enforced multi-tenant invariants via Drizzle on Neon, an idempotent Reminder send path (advisory locks + notification_log + Resend). Quality is production-shaped with around 50 Vitest tests against a dedicated Neon branch (schema drop/migrate, advisory run locks), Playwright end to end on a second isolated branch, an authorization-contract completeness net for service entrypoints, and GitHub Actions CI that runs lint, typecheck, build, unit, and E2E in parallel-safe concurrency groups.
Evoludent
NewClinicalHistories is a full-stack clinical patient management system for dental clinics. It provides patient profiles, a visual odontogram (dental chart), and a clinical evolution history log, with AI-powered assistance via Google Gemini — dentists can type keywords and get a fully written clinical note, or generate a summary from all evolutions at once. Standout features include a Docker multi-stage deployment (backend Alpine + nginx frontend) with a GitHub Actions CI/CD pipeline that builds, pushes to ECR, and auto-deploys to EC2, plus Arcjet for API security (rate limiting, bot detection), Zustand for lightweight state management, JWT httpOnly cookie auth, and few-shot prompting (temperature 0.0) for deterministic AI output. A demo is available on the live site or on request.
MaxApp
MaxApp is a full-stack job-search management platform built with Next.js 16 (App Router) and React 19. It features a Kanban-style pipeline for tracking job applications and AI-powered resume analysis via Google Gemini 2.5 Flash. This is what I am currently using to keep track of my submitted job applications. I wanted to create something that would be of use to me and have done so, tailored to what I need and want in terms of a job-search management system. Standout features include the AI-powered resume and job application analysis pipeline: users upload PDFs, which are parsed server-side via pdf-parse, analyzed by Google Gemini 2.5 Flash (temperature 0.0 for deterministic JSON output), and stored in Cloudinary — all within a single Server Action. The Kanban dashboard uses a MongoDB $facet aggregation to fetch filtered items and counts across all 5 statuses in one query, while optimistic UI with useOptimistic + useTransition provides instant status update feedback with automatic rollback on failure. The architecture follows Next.js App Router best practices, server components by default, client components only for interactivity, and Server Actions for all mutations, with a clean separation into models, actions, data access, and auth layers. A demo is available on the live site or on request.