Changelog

What's new.

Everything that's shipped on tutor., in reverse chronological order. Expect this page to grow as we get closer to launch.

  1. infra

    Email design now lives in Resend

    • Booking confirmation emails are now sent via a Resend-hosted template (alias: session-confirmation).
    • Design edits happen in Resend's UI — no redeploy needed for copy or layout tweaks.
    • Server sends only the eight variables the template expects: student_name, teacher_name, date_label, time_label, duration_minutes, address, cancel_url, site_url.
  2. shipped

    Booking confirmation emails via Resend

    • Every confirmed booking now fires a branded HTML email: session time, duration, where, and a link back to the dashboard.
    • Lime-and-ink system carried over into the email so the brand stays consistent. Table-based layout with inline styles, renders everywhere from Gmail to Outlook.
    • Fire-and-forget: if the email fails to send, the booking still succeeds. The DB is the source of truth, not the email.
    • While the custom sending domain (mail.tutoring.aradrsk.com) verifies with DNS, we're sending from Resend's shared onboarding@resend.dev. Flip the EMAIL_FROM env once verification completes.
    • Preview the template live at /dev/email/booking.
  3. shipped

    Dashboard shows your real bookings

    • The /account/bookings page now reads from the database instead of showing a placeholder.
    • Upcoming sessions appear in a chunky card list with date, time, and duration. Past sessions collapse into a muted list below.
    • Students can cancel upcoming sessions more than 24 hours out. Closer than that, the cancel button is hidden and a note explains why. Teachers can cancel any session (emergencies happen).
    • Teachers see every confirmed booking with the student's name and email, not just their own.
  4. design

    Booking step 2 is now a calendar

    • The long vertical list of days in the booking wizard is gone.
    • New month-calendar grid: green = open (shows how many start times), grey = no availability, red = blocked.
    • Tap a date → open times appear in a panel below. Much faster than scrolling a list.
    • Works across month boundaries with prev/next arrows when the 30-day horizon crosses a month.
  5. design

    Teacher has a name: Theepa Jeyapalan

    • The landing page 'Your teacher' card now reads Theepa Jeyapalan. Bio copy updated too.
  6. shipped

    Booking flow is live

    • The /book route is a three-step wizard: pick length (30/45/60), pick a start time, review & confirm.
    • The server double-checks every booking against live availability before inserting, and catches the Postgres exclusion-violation cleanly when two people try to grab the same slot.
    • Dashboard empty-state now points straight to /book.
  7. shipped

    Teacher availability editor + public preview

    • Teachers now have /dashboard/availability: add weekly windows, block specific dates, and a 14-day preview that overlays 30/45/60-minute valid start times.
    • Landing page shows real availability for the next 15 days, with a green/grey/red legend. No more fake placeholder school logos.
    • The whole slot-generation engine is shared across teacher preview, landing page, and booking — so all three stay in sync automatically.
  8. design

    Full UX rehaul + /updates page

    • Introduced a shared Nav + Footer across every page — logged-in users now see a Dashboard link, logged-out users see Log in + Book a session.
    • Redesigned /signup and /login in the lime + ink system: chunky card, inline hints, proper error states, a value-prop list on signup.
    • Dashboard at /account/bookings got stat cards, an empty-state with clear next steps, and an account-details card that reads live from the session.
    • This /updates page is new. You're reading it.
  9. shipped

    Live at tutoring.aradrsk.com

    • Deployed to Vercel production with a custom domain.
    • Cloudflare DNS A record → Vercel edge. SSL auto-provisioned.
    • Environment variables moved out of local dev; production now reads DATABASE_URL, BETTER_AUTH_SECRET, and the site URLs from Vercel.
  10. infra

    Migrated to Neon Postgres

    • Swapped local SQLite for Neon serverless Postgres so the app works on Vercel's ephemeral filesystem.
    • Schema ported to pg-core with real enums (user_role, booking_status), timestamptz, checks, and proper indexes.
    • Bookings overlap exclusion constraint restored via btree_gist + a trigger-maintained end_at column — prevents a 30-min booking at 4:30 pm from colliding with a 60-min booking at 4 pm at the DB layer.
  11. design

    Landing page redesign

    • New visual system: lime #B9FF66 + ink #191A23 on white.
    • Chunky rounded cards with offset drop-shadows, section headers in lime pills, inline SVG illustrations for sessions and the hero.
    • Added a 4-card sessions grid (30 / 45 / 60 / free trial), 3-step how-it-works, a teacher profile card, and a dark pricing panel.
  12. shipped

    Auth + schema for signup / login / verify flow

    • Users can create accounts with name, age, email, and password.
    • Session cookies via better-auth. Dashboard redirects unauthenticated visitors to /login.
    • Email verification is currently off in dev; it comes back on when Resend is wired in TU-9.
  13. infra

    Project scaffold

    • Next.js 16 (App Router, Turbopack) on React 19, TypeScript 5, Tailwind 4, ESLint 9.
    • drizzle-orm + drizzle-kit for schema and migrations.
    • better-auth with a drizzle adapter. Pushed to github.com/aradrsk/tutoring.
  14. shipped

    PRD v1 locked

    • Resolved the five open product questions: public landing as home, teacher's home as fixed session location, configurable 30 / 45 / 60 min sessions, 24-hour cancellation window, and Vercel subdomain for v1 (later upgraded to tutoring.aradrsk.com).
    • Everything else in the PRD is downstream of those five decisions.

What's next

The remaining MVP backlog. Each row is a tracked issue; order is the critical path to launch.

  • TU-6

    Teacher sets weekly availability + date blocks

    Next up
  • TU-7

    Public landing page with visible availability

    Planned
  • TU-8

    Users can book a session with slot locking

    Planned
  • TU-9

    Email confirmations via Resend

    Planned
  • TU-10

    Teacher dashboard

    Planned
  • TU-11

    User dashboard with cancel

    Planned
  • TU-12

    Deploy to prod + onboard teacher

    Partial (prod live)