Skip to main content

Router configuration

File: src/router.js
  • Mode: History (clean URLs, requires server-side fallback)
  • Code splitting: Every route is lazy-loaded with Webpack chunk names
  • Scroll behavior: Smooth scroll to hash anchors, remembers saved position

Route metadata

Every route has two metadata flags:
FlagTypePurpose
showHFbooleanShow the marketing Header/Footer chrome
noindexbooleanInject <meta name="robots" content="noindex">

All routes

Marketing pages (no Header/Footer)

PathViewDescription
/Home.vueLanding page
/pricingPricing.vuePricing page
/aboutAbout.vueAbout page
/apply or /requestRequest.vueTutor application form (324KB — largest view)
/authAuth.vueAuthentication entry
/account-verifiedAccountVerified.vuePost-verification page

Marketing pages (with Header/Footer)

PathViewnoindex
/faqsfaq.vueYes
/libraryLibrary.vueYes
/upgradeUpgrade.vueYes
/LinksLinks.vueYes
/legal/termsLegal/Terms.vueYes
/legal/privacyLegal/Privacy.vueYes
/blogBlog/Blog.vueNo
/blog/how-to-start-a-tutoring-businessBlog/HowToStart.vueNo
/blog/updates-to-our-pricing-and-product-strategyBlog/PricingUpdate.vueNo
/features/buildFeatures/Build.vueNo
/features/earnFeatures/Earn.vueNo
/features/teachFeatures/Teach.vueNo

Registration flow (backend workflow)

PathViewDescription
/registerRegister.vueMulti-step registration orchestrator
/register/successRegister/Success.vueRegistration success
/register/success-iosRegister/Success-iOS.vueiOS-specific success
/register/waitlistRegister/Android.vueAndroid waitlist
All under /s/:id — the :id is the tutor’s username or ID.
PathViewDescription
/s/:idUser/Profile.vuePublic tutor profile
/s/:id/calendarUser/Calendar.vueBooking calendar
/s/:id/bookingUser/Booking.vueBooking confirmation
/s/:id/mobileUser/Mobile.vueMobile account menu
/s/:id/loginUser/Login.vueLogin/password
/s/:id/detailsUser/Details.vueProfile details
/s/:id/emailUser/Email.vueEmail management
/s/:id/messageUser/Message.vueMessage preferences
/s/:id/paymentUser/Payment.vuePayment methods

Booking management (backend workflow)

PathViewDescription
/booking/:id/calendarUser/Actions/Calendar.vueBook a lesson
/booking/:id/updateUser/Actions/Reschedule/Update.vueReschedule overview
/booking/:id/update/rescheduleReschedule/UpdateDate.vuePick new date
/booking/:id/update/reschedule/submittedReschedule/UpdateComplete.vueReschedule confirmation
/booking/:id/update/cancelReschedule/Cancel.vueCancel lesson
/booking/:id/update/cancel/submittedReschedule/CancelComplete.vueCancellation confirmation
/booking/:id/statusReschedule/Status.vueReschedule/cancel status

Dashboard (admin)

PathViewDescription
/dashboardDashboard.vueDashboard login
/dashboard/homeDashboardHome.vueDashboard home (tutor search)

Catch-all

PathView
*Redirects to Home.vue (404 fallback)

SEO configuration

robots.txt

User-agent: *
Disallow: /faqs
Disallow: /library
Disallow: /upgrade
Disallow: /legal/terms
Disallow: /legal/privacy
Disallow: /s/
Allow: /

Sitemap: https://tutorbloc.com/sitemap.xml
All /s/ paths (tutor profiles, user accounts) are blocked from crawling. Marketing pages are open.

sitemap.xml

16 URLs indexed with priority weighting:
PriorityPages
1.0Homepage
0.9Features (build, teach, earn), pricing
0.8Register, apply
0.7About, links
0.5Blog posts

Dynamic noindex

The router’s beforeEach guard injects/removes <meta name="robots" content="noindex"> based on the route’s noindex metadata flag. Pages like FAQs, Library, Legal pages, and Links are noindexed.
router.beforeEach((to, from, next) => {
  if (to.meta.noindex) {
    // Add <meta name="robots" content="noindex">
  } else {
    // Remove noindex meta if present
  }
  next();
});
No auth guards on routes — authentication is handled at the component level when making API calls.