Skip to content

Public website

Pages available without login (unless middleware redirects authenticated users on auth pages).

Home

Route: /

Sections driven by Admin → Settings → Home page:

  • Hero & CTA
  • Stats counters
  • Live exchange rates
  • Features grid
  • How it works steps
  • Testimonials
  • FAQ accordion
  • Newsletter signup
  • Footer links & social

Content is stored in the settings table (slug: home-page) and fetched via public API.


Blog

RouteDescription
/blogPost listing with pagination
/blog/{slug}Single post

Posts support HTML content and optional custom head script for structured data.


Route: /{slug} (dynamic)

Examples: /privacy, /terms — configured in admin legal pages.

WARNING

Avoid slug collisions with static routes like /blog or /contact.


Contact

Route: /contact

Public form → stored in contact_submissions → admin inbox.


Authentication pages

RouteLayout
/signinAuth layout
/signupAuth layout
/forgot-passwordAuth layout
/reset-passwordAuth layout

Exchange preview

Route: /preview

Authenticated users can preview exchange UI (used for home page editor preview flow).


SEO & metadata

Global SEO from Admin → Settings → SEO:

  • Meta description
  • Open Graph title/description/image
  • Twitter card fields

Loaded via useSiteSeo() in app.vue for all pages.

Sitemap & robots:

  • /sitemap.xml — Nuxt server route
  • /robots.txt — Nuxt server route

Configured in admin sitemap/robots settings.


Custom CSS

CSS from Admin → Settings → Custom CSS is injected globally in app.vue (with </style> escaping for safety).


Public API endpoints (no auth)

EndpointPurpose
GET /api/settings/{slug}Public settings (SEO, home page partials, etc.)
GET /api/public/rates-showcaseRates for homepage
GET /api/public/currencies-converterConverter data
GET /api/public/latest-exchangesRecent approved exchanges
GET /api/public/blogsBlog list
GET /api/public/blogs/{slug}Blog post
GET /api/legal-pagesLegal page list
GET /api/legal-pages/slug/{slug}Legal page body
POST /api/subscribersNewsletter subscribe
POST /api/contact-submissionsContact form
POST /api/report-featuresAnonymous feature reports (throttled)

Rate limits apply on several POST/GET routes (see routes/api/index.php).


Newsletter

Home page newsletter form posts to POST /api/subscribers. Admin manages list under Subscribers.

Need help? support@xorinlab.com · Website: xorinlab.com