← Back to projects

Project

Nauti Test Pro

Full-stack PWA for nautical exam preparation. Built, deployed, and operated solo — covering product design, backend, payments, and infrastructure from day one.

Founder & Engineer (Full Stack — Product, Backend, Infrastructure) Personal project Public

Personal project. Live in production at nautitestpro.com since February 2025.

Stack

Vue 3IonicTypeScriptViteFirebase HostingFirestoreFirebase AuthCloud FunctionsStripeResendWorkbox (PWA)GCP

Impact

  • Shipped and maintained a production SaaS platform solo, covering every layer from UI to cloud infrastructure.
  • Token-based monetization integrated with Stripe Checkout and webhooks, with full payment history per user.
  • PWA with Workbox service worker — installable on iOS and Android with no app store dependency.
  • SMS MFA (Firebase multi-factor auth) enforced at login, with per-user enrollment and bonus token incentive.
  • Encrypted question bank using pre-build AES scripts to protect proprietary exam content.
  • Admin dashboard with broadcast messaging, per-user read tracking, token management, and PWA adoption metrics.

What I did

  • Test engine with timed evaluations, randomized sets, per-question feedback, and result history.
  • Token economy: users earn free tokens via email and SMS verification, purchase more via Stripe.
  • Cloud Functions handle Stripe webhooks, token grants, MFA enrollment validation, and automated welcome messages.
  • Transactional emails (password reset, email verification) sent via Resend with branded HTML templates.
  • PWA install tracking per user (isPWA / hasEverUsedPWA / platform) stored in Firestore and visible in admin dashboard.
  • Custom domain (nautitestpro.com) with Firebase Hosting, Google Search Console, sitemap, and SEO meta tags.
  • Firestore security rules enforce admin-only writes on sensitive subcollections.

Architecture

  • Vue 3 + Ionic SPA, Vite build, deployed to Firebase Hosting with PWA (Workbox autoUpdate)
  • Firestore: members/{uid}, messages, tokenLogs, payments, userLogs subcollections
  • Firebase Auth with email/password + SMS MFA (multi-factor enrollment per user)
  • Cloud Functions (Node.js): Stripe webhook, token grants (email/phone bonus), member lifecycle triggers, Resend email dispatch
  • Stripe Checkout sessions created server-side; webhook fulfills token balance atomically via Firestore transaction
  • Pre-build encryption script (AES) bundles question bank as .encrypted.ts — decrypted client-side at runtime

Tags

PWASaaSFirebaseStripeEducationMobileFull Stack