[C03] Public Landing — Pre-Auth Marketing Page
Summary
The pre-auth page that anonymous visitors see before they log in. Bold dark Vercel-flavoured marketing surface — distinct from the cool-neutral Linear/Vercel-style admin shell the user enters after authenticating. Extracted from C01-structure/ in the 2026-04-27 design pass so the marketing surface can iterate without touching the in-app shell.
Single page. No flow. Primary call-to-action: Log in to your portal. Secondary: Book a demo. "Self-serve registration coming soon" line is a placeholder.
Actor & Context
Actor: anonymous visitor. May be:
-
An existing customer arriving at the portal URL with intent to log in.
-
A prospect referred from a sales conversation, ad campaign, or word of mouth.
-
A search-engine visitor (low volume).
Frequency: typically 1–2 visits per user before authentication; minimal repeat.
Precondition: none. URL is publicly accessible.
Entry point: bare portal URL https://admin.event.idealogic.co.za/ (or marketing URL if a separate domain is set up — TBD in WS7 deployment).
Main Flow
-
Visitor navigates to the portal URL.
-
Page renders the bold-dark hero with the headline, supporting copy, primary CTA "Log in to your portal", secondary CTA "Book a demo", and a tilted "ProductShot" mini admin window showing Tour du Worcester · Participants.
-
Visitor can scroll: features strip (3-up) → audience segments (3-up) → footer (Product / Company / Legal columns + Cape Town origin + © 2026).
-
Visitor clicks Log in to your portal in the top nav (or the hero CTA). They are redirected to the OIDC flow (OIDC Token Exchange).
-
After successful login, the OIDC callback returns the user to the in-app shell (C01) at their last context.
Alternative Flows
-
AF-1 — Already authenticated. A visitor with a valid session lands on the bare portal URL. Decision: redirect straight into C01, or render the public landing with a "Continue to portal" CTA replacing "Log in"? Recommendation: redirect to C01 by default; the public landing is for anonymous traffic. Open question, see below.
-
AF-2 — Click "Register". Top-nav has "Register" with a
Soonchip. Currently inert. Once self-serve registration ships, this becomes a live link to the registration flow. Open question (design): dedicated flow page vs modal off the landing. -
AF-3 — Click "Book a demo". Secondary CTA. v1: opens a
mailto:or external Calendly-style link. Defer. -
AF-4 — i18n. Currently English-only. SA market may want Afrikaans. Open question.
Acceptance Criteria
-
Page renders pixel-faithful to the design at the canonical viewport (1280×1200).
-
Top nav: Entrykit logo + name on the left; Product · Use cases · Pricing · Docs centred (placeholder links — none have destinations yet); "Register · Soon" + "Log in" on the right.
-
Hero: status pill ("Now powering 180+ events across South Africa"), large balanced headline ("Event & membership management, built for the way you actually run events."), supporting copy, primary "Log in to your portal" + secondary "Book a demo" CTAs, "Self-serve registration coming soon" line below.
-
ProductShot mini admin window renders inside the hero with a slight tilt — reuses the real shell vocabulary (sidebar, topbar, Participants table content).
-
Features strip: 3-up — Run events end-to-end / Manage memberships / Multi-tenant by design.
-
Built-for: 3-up audience segments — Event organisers / Federations / Membership orgs.
-
Footer: Product / Company / Legal columns; Cape Town origin attribution; © 2026.
-
Background: near-black
#0a0a0awith the indigo glow + grid pattern from the design. -
Indigo accent:
#818cf8for foreground use,#4f46e5for fills — kept consistent with the in-app indigo so the visual transition pre→post auth feels continuous. -
Responsive (mobile + tablet + desktop) — TBD design follow-up.
-
Page is statically renderable (no auth dependency); cacheable at the CDN.
API Surface
None. Public landing is fully static — no admin-service calls, no JWT, no session.
-
The page itself is a single HTML/JS bundle served by the gateway with
Cache-Control: public, max-age=N(N is hours, not seconds). -
The "Log in to your portal" CTA is a navigation to
/oauth2/authorization/<idp>— handled by Spring Security on the gateway. -
"Book a demo" is an external link or mailto.
This makes the page CDN-friendly: serve from edge, never invalidate beyond a deploy boundary.
Out of Scope
-
Self-serve registration flow (the destination behind the
Register · Soonchip when it ships). Future use case. -
Per-audience sub-pages (Federations / Organisers / Membership orgs). Open question.
-
Pricing page. Open question (when, what tiers).
-
Case studies / customer logos. Open question.
-
Documentation site (
Docslink). Out of admin-portal scope; the docs site is its own deployment (docs.idealogic.co.za). -
Auth flows themselves (OIDC Token Exchange).
Design Anchors
-
C01 Application Structure — what the visitor enters after login.
-
UI Design Principles — visual baseline for in-app; C03 deliberately deviates with the bold-dark direction.
-
SPA Cache & CDN Strategy — public landing benefits the most from this.
Open Questions
-
Authenticated visitor handling. Redirect straight into C01, or render the landing with a "Continue to portal" CTA replacing "Log in"? Recommendation: redirect.
-
Register-when-it-ships. Dedicated flow page or modal off the landing? Defer until self-serve is on the roadmap.
-
Per-audience sub-pages.
Federations / Organisers / Membership orgs— sub-pages or just the segments strip? Marketing-driven; defer to first concrete ask. -
Pricing page. When and at what tier structure?
-
Case studies / customer logos. When prominent?
-
i18n. English only at launch, or also Afrikaans for SA market?
-
Marketing surface domain. Same domain as admin-portal (e.g.
admin.event.idealogic.co.zaserves the public landing at/) or a separate marketing domain (e.g.entrykit.com)? Affects WS7 deployment.
Implementation Notes
-
The public landing is the root path of the gateway before authentication. Spring Security’s filter chain order matters: the static landing must be reachable without auth; everything else under
/api/,/services/, etc. requires auth. -
In Angular, render via a separate route guard / module so the bundle isn’t pulled into the authenticated SPA’s main bundle. Code-splitting recommended.
-
The ProductShot mini admin window is JSX in the design. Implementation choice: render as a static SVG/PNG screenshot (cheaper, more controllable) or as actual HTML inside an iframe-style container (more authentic). Lean static asset for v1.
-
CDN caching: this page is the longest-cacheable surface in the portal.
Cache-Control: public, max-age=3600, stale-while-revalidate=86400is reasonable; revisit when content changes.