Navigation map
Where every surface lives in Sajt, its URL, and how a user reaches it.
This page maps Sajt's surfaces so you can tell a user exactly where to go. URLs and reachability are grounded in the route table; see Routes for the full list.
Terminology: the UI says "company" ("företag") and "hemsida" (website). The word "workspace" is the hidden billing/account container — never surface it. One company == one website today. The URL segment under
/dashboard/websites/is the company's slug (e.g./dashboard/websites/acme-bakery), not the raw id; bare-id URLs canonical-redirect to the slug form.
How a user moves around (the shell)
The signed-in app is framed around the company. A persistent shell is mounted
once around all /dashboard/** pages:
- Desktop: a left sidebar.
- Mobile: a bottom tab bar.
The shell steps aside (renders the page full-screen) for the editor and
for routes with no company in the path. Navigation items either route to a page or
open a settings tab via the URL hash (see Settings below). A company
switcher lists the user's companies and offers "+ Nytt företag" → /onboarding.
Authenticated surfaces (Clerk sign-in required)
| Surface | URL | How to reach it |
|---|---|---|
| Dashboard resolver | /dashboard | Thin router: 0 companies → /onboarding; otherwise redirects to the last-used company home. |
| Onboarding wizard | /onboarding | New-company setup; from the company switcher's "+ Nytt företag". |
| Company home | /dashboard/websites/<company> | The landing for a company: status, the loud primary Redigera hemsidan button, module shortcuts, insights, bookings. Reached from the resolver, switcher, or sidebar. |
| Editor | /dashboard/websites/<company>/editor | Full-screen visual editor. Reached from the company-home Redigera hemsidan button or the sidebar. |
| Appearance ("Utseende") | /dashboard/websites/<company>/utseende | Theme / palette / fonts page (Swedish "utseende"). Same constrained controls as the editor's style panel. |
| Inbox | /dashboard/websites/<company>/inbox | Leads + bookings in one stream. Sidebar / bottom-bar / a company-home shortcut. |
| Payments ("Betalningar") | /dashboard/websites/<company>/payments | Get-paid overview: amount awaiting payment, links to offers + invoices, the invoicing profile, online-pay setup. |
| Offers ("Offert") | /dashboard/websites/<company>/payments/offers | Create/send/convert quotes. Reached from the Payments page. |
| Invoices | /dashboard/websites/<company>/invoices | Invoice management (now grouped under Payments in nav). |
| Services | /dashboard/websites/<company>/services | The catalogue: name, price, duration, customer action, bookable. |
| Domain settings | /dashboard/websites/<company>/settings/domain | Connect/manage a custom web address + DNS. Live-credential gated. |
| Image Studio | /dashboard/images | AI image generate/edit, collections, library. Workspace-scoped — shared across all the user's companies, not one company. |
| Billing | /dashboard/billing | Subscription + add-ons (Stripe checkout target). Live Stripe gated. |
The legacy /dashboard/websites/<company>/settings route only redirects into
the company-home settings modal.
Settings (a modal, not a page)
Per-company settings is a modal mounted once around the company pages, so it overlays both the company home and the editor. It opens via the URL hash:
#settings— open the modal.#settings/<tab>— open a specific tab.
Any trigger (the editor or company-home gear, the publish dialog) opens it;
arriving from another route with #settings in the URL opens it on mount. This is
where account/site configuration lives that is not its own page.
Preview surfaces (read the draft, not the live site)
| Surface | URL | Access |
|---|---|---|
| Owner draft preview | /preview/<websiteId>/<path?> | Clerk-gated; the owner's live draft. |
| Shareable preview link | /p/<token>/<path?> | A link anyone can open — public or password-gated; 30-day expiry; noindex. Created by the owner. |
Both render the draft through the same renderer as the editor and the public site. They never expose the published path.
Public surfaces (no account)
| Surface | URL | Notes |
|---|---|---|
| Published site | /site/<slug>/<path?> | Served from the immutable snapshot only. Also reached by subdomain (<slug>.<sites-domain>) or a custom domain that the proxy rewrites to /site/<slug>. Secondary languages live under /site/<slug>/<locale>/…. |
| Marketing landing | / | Redirects signed-in users to /dashboard. |
| Accountless generator | /create | Describe a business → instant preview; sign up only to save. |
| Pricing | /pricing | Plan cards. |
| What's new | /whats-new | User-facing changelog. |
| Privacy / Terms | /privacy-policy, /terms | Bilingual legal pages. |
| Downloads | /download | Native app downloads. |
| Marketing blog | /blog, /blog/<slug> | A separate file/MDX blog. In-site news articles live under a published site's /news, not here. |
Auth pages: /sign-in, /sign-up, /sso-callback. The protected route matcher
covers /dashboard(.*), /onboarding(.*), and /preview(.*); see
Auth and permissions.
Customer-facing token pages (no account)
These are sent to a business's own customers and gate on a 256-bit opaque token:
| Page | URL | Purpose |
|---|---|---|
| Team invite | /invite/<token> | Accept access to a company (sign-in if the email differs). |
| Invoice | /invoice/<token> | Customer views + pays an invoice. |
| Offer | /offert/<token> | Customer accepts/declines a quote. |