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
