[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

  1. Visitor navigates to the portal URL.

  2. 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.

  3. Visitor can scroll: features strip (3-up) → audience segments (3-up) → footer (Product / Company / Legal columns + Cape Town origin + © 2026).

  4. 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).

  5. 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 Soon chip. 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 #0a0a0a with the indigo glow + grid pattern from the design.

  • Indigo accent: #818cf8 for foreground use, #4f46e5 for 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 · Soon chip 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 (Docs link). Out of admin-portal scope; the docs site is its own deployment (docs.idealogic.co.za).

  • Auth flows themselves (OIDC Token Exchange).

Design Anchors

Open Questions

  1. Authenticated visitor handling. Redirect straight into C01, or render the landing with a "Continue to portal" CTA replacing "Log in"? Recommendation: redirect.

  2. Register-when-it-ships. Dedicated flow page or modal off the landing? Defer until self-serve is on the roadmap.

  3. Per-audience sub-pages. Federations / Organisers / Membership orgs — sub-pages or just the segments strip? Marketing-driven; defer to first concrete ask.

  4. Pricing page. When and at what tier structure?

  5. Case studies / customer logos. When prominent?

  6. i18n. English only at launch, or also Afrikaans for SA market?

  7. Marketing surface domain. Same domain as admin-portal (e.g. admin.event.idealogic.co.za serves 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=86400 is reasonable; revisit when content changes.

Change History

Date Change

2026-04-27

Use case authored from the C03 Claude Design canvas (extracted from C01-structure/ in the same design pass). Status: handoff-ready — substantive design exists; remaining items are marketing/copy decisions, not structural blockers.