B2BEA.org V1 Surface Specs
B2BEA.org V1 Surface Specs Source of record: RedKey Supabase Studio artifact. Project: B2BEA.org Rebuild Project ID: a820dd0c 6cef 4133 bfbd d802fd806e44 Artifact: surface specs Artifact ID: 77853042 e7a4 48bd 91a4 6e48d0484b1b Version: 11 Status: draft Updated: 2026 05 07T15:35:22.233+00:00 Purpose Define the concrete public, admin, member, vendor, company,...
Source of record: RedKey Supabase Studio artifact.
- Project:
B2BEA.org Rebuild - Project ID:
a820dd0c-6cef-4133-bfbd-d802fd806e44 - Artifact:
surface-specs - Artifact ID:
77853042-e7a4-48bd-91a4-6e48d0484b1b - Version:
11 - Status:
draft - Updated:
2026-05-07T15:35:22.233+00:00
Define the concrete public, admin, member, vendor, company, auth, and publishing surfaces that implementation must build against after the current-site reverse-engineering and hardening specs.
draft
- Current-state research artifact maps existing Eleventy/Nunjucks layouts, partials, routes, and surface roles.
- Capability map identifies carry-forward and gap capabilities across public, admin, member, vendor, and company workflows.
- Design-system spec uses Lovable as the initial foundation/reference, while the hardened B2BEA design system is the V1 authority for non-excluded surfaces.
- Publishing, data, entitlement, and company-workspace specs define source-of-truth and lifecycle boundaries.
Linked draft survey-system-spec artifact.
| id | topic | decision | | --- | --- | --- | | SURF-DEC-001 | Surface separation | Public, auth/account, B2BEA admin, publishing/studio, member, vendor, and practitioner company workspace are separate surfaces sharing foundations, not one large page set. | | SURF-DEC-002 | Company public presence | Practitioner company accounts are private workspace only in V1. Do not build public practitioner company profiles or a public practitioner company directory. | | SURF-DEC-003 | Vendor public presence | Vendor public profiles and vendor directory remain V1 public surfaces. Vendor-authored/profile changes require B2BEA review before changing the public projection. | | SURF-DEC-004 | Design language | All in-scope surfaces use hardened B2BEA design-system component contracts. Home, intentionally editorial blog/resource pages, and approved custom HTML imports may be exceptions but still require accessibility, metadata, responsive, and QA compliance. | | SURF-DEC-005 | Source of truth | Sanity owns editorial/public page content; B2BEA Supabase owns application and operational data; HubSpot owns CRM/pipeline/sales activity and renewals. | | SURF-DEC-006 | Publishing control | Core admins can
| id | topic | status | decision | rationale | decided_at | implications | v1_keep | | --- | --- | --- | --- | --- | --- | --- | --- | | SURF-OWNER-DEC-001 | Custom versus B2BEA design-system page treatment | approved_direction | Home, major campaign/resource landing pages, approved custom HTML imports, and explicitly marked signature editorial features may stay custom. All index, directory, search/filter, standard detail, gated download, operational, and authenticated surfaces use the hardened B2BEA design system. | This preserves flexibility for high-value custom storytelling while preventing the rebuild from recreating page-by-page drift across reusable page families and operational surfaces. | 2026-05-07T13:33:47.840Z | Page-template-spec must include an exception marker for custom/signature pages., Custom pages still require accessibility, responsive, metadata, analytics, and QA compliance., Default implementation path for blog/resource indexes, standard details, directories, filters, downloads, forms, and portals is B2BEA design-system components. | | | SURF-OWNER-DEC-002 | Private workspace route prefixes | approved_direction | V1 private workspace prefixes are /vendor for
| id | name | actors | purpose | acceptance | exclusions | page_families | required_patterns | | --- | --- | --- | --- | --- | --- | --- | --- | | public_site | Public Site | anonymous_visitor, authenticated_member, vendor_prospect, practitioner_prospect, search_engine, ai_crawler | Marketing, editorial, discovery, directories, resources, academy previews, events, jobs, public people profiles, and public vendor profiles. | Each public route maps to one page family or an approved exception., Public vendor profiles render from reviewed/published vendor projection only., Protected resource/course access is checked server-side through entitlement rules., Directory filters, search, and cards share one reusable contract across people/vendors/jobs/courses/resources where practical., Archived or draft public content is absent from navigation, search index, and sitemap. | public practitioner company profile pages, public practitioner company directory, ungated protected resource downloads through client-side state only | marketing_home_or_landing, standard_content_page, editorial_index, editorial_detail, directory_index, profile_detail, resource_index, resource_detail_or_download, course_ca
```json { "design": [ "Use B2BEA design-system tokens and page/header/control/card/table/form contracts for all in-scope surfaces; Lovable remains the starting reference only.", "Admin/portal surfaces use compact operational hierarchy, not public marketing heroes.", "Cards do not nest inside decorative cards; tables and filters use stable dimensions on mobile.", "Exceptions require explicit page family marker and still pass accessibility/responsive/metadata QA." ], "navigation": [ "Public nav must not expose private workspace routes unless authenticated and entitled.", "Admin/vendor/company/member surfaces use surface-specific navigation with a clear return path to public site.", "Cross-surface links preserve return URL when auth is required." ], "permissions": [ "Server-side guard is required for all protected actions and protected data reads.", "Client UI can hide controls but cannot be the source of authorization.", "Entitlement decisions must be traceable to subject, resource, entitlement key, source record, and reason." ], "state_model": [ "Every data-backed surface defines loading, empty, error, unauthorized, expired,
``json
{
"summary": "Release readiness gates for route conformance, design-system conformance, permission boundaries, publishing safety, responsive/browser smoke, data/migration safety, and final release acceptance.",
"version": 1,
"artifact_id": "b523c55c-a22a-4ba6-94c0-d306656e57f7",
"artifact_type": "qa-release-readiness-spec",
"blocks_build_until_plan_review": true
}
``
- Do not start rebuild implementation until surface specs, page-template-spec, core data/entitlement specs, and implementation plan are reviewed.
- Do not build public practitioner company profiles or a public practitioner company directory in V1.
- Do not let vendor/company/member client state grant access or publish public records.
- Do not preserve page-specific CSS for shared controls, cards, forms, filters, nav, tables, or page headers.
- Do not let Sanity, Supabase, and HubSpot own the same operational record without a documented source-of-truth boundary.
- Each V1 surface has named actors, purpose, route families, page families, data sources, required patterns, exclusions, and acceptance checks.
- Surface boundaries align with current design, publishing, data, entitlement, and company-workspace specs.
- Page-template-spec can be produced from this artifact without resolving major surface ownership questions.
- Implementation agents can tell whether a route belongs to public, auth/account, admin, publishing/studio, member, vendor, or company workspace.
- All P0 public/private exposure decisions are explicit, especially vendor public profiles versus private practitioner company workspaces.