Back to My Work

Case Study

Casita School

Casita School is a web app designed for homeschooling families to manage their day-to-day educational tasks. It lets users plan lessons, track student attendance, and keep homeschool records organized in a single, streamlined workspace.

Overview

Casita School is a homeschool management platform that helps parents plan lessons, track progress, and coordinate caregivers for multiple students. I designed and built the full stack Vue frontend, Laravel API, PostgreSQL, Docker based deployment, and a touch-first household kiosk for shared devices.

What was included

  • Parent authentication and multi-student profiles with role-based caregiver access (guardian/editor)
  • Weekly lesson planner, subjects, attendance, grades, writing, certificates, and progress charts
  • Manage hub for school profile, billing/plan gates, notifications, and household settings
  • Installable PWA for mobile and tablet use
  • Household kiosk mode for shared touchscreens: device pairing, student PIN unlock, on-screen keypad, and adjustable UI scale for readability
  • Production deployment with Docker Compose, reverse proxy, and a rebuildable static frontend pipeline
  • Native Raspberry Pi kiosk shell that opens the hosted kiosk experience fullscreen

Challenge

Homeschool workflows span planning, compliance records, and day to day student access often across parents, caregivers, and shared devices. The hard part was keeping one coherent product that felt calm for parents while remaining secure for students: shared kiosks needed touch-friendly auth without email logins, plan features needed clear gating, and production deploys had to keep API auth, frontend assets, and device sessions isolated so a kiosk session never broke parent accounts or leaked credentials.

Approach

I structured the system as a Laravel Sanctum API plus a Vue 3 SPA, with clear separation between parent sessions and kiosk device/session tokens. Kiosk flows use short-lived pairing codes, hashed PINs, and rate-limited claim endpoints; the UI favors large touch targets and an on screen PIN pad so devices work without a physical keyboard. Deployment is containerized, with the frontend built into static assets served behind a reverse proxy, so production picks up UI changes only after an intentional rebuild keeping local development fast while making production releases deliberate and repeatable.

Next step

Want this level of thinking for your product?

I can help shape the strategy, design the UX, and ship the build.