The ui-kit

Build a whole product from parts that already work.

The ui-kit is the shared platform behind every Hamble Creek product: hundreds of Angular components, the backend modules that serve them and the business rules both run on. Written once. Tested once. Reused everywhere.

ui-kit components
400+
backend modules
100+
shared domain engines
16
products on one platform
10

Architecture

Three layers, one release

The ui-kit is the visible layer of a stack. Beneath it, core-server holds the backend modules and domain holds the pure business rules. The three ship together, so a product always runs a matching set.

  • domain Rules live here once. The screen and the server cannot disagree about tax, money or availability.
  • core-server Security, audit and messaging live here once. Every product gets the same hardened version.
  • ui-kit Look and feel live here once. A fix or an improvement reaches every product on the next release.

Products

What customers use

  • Pitch Spotlight
  • DentalChart
  • NextGen ISP Platform
  • Ledgerly
  • PhotoGallery
  • Officiating Hub
  • Contractor Service Desk
  • Rental Booker
  • Barn Ledger
  • Family Helper

ui-kit

@hch-shared-libraries/ui-kit

400+ Angular components, from the app shell and data tables to the accounting screens and the video studio. One design system, themed per tenant.

core-server

@hch-shared-libraries/core-server

100+ backend modules: identity, audit, messaging, payments, storage, scheduling and the ledger. Written once, hardened once, reused by every product.

domain

@hch-shared-libraries/domain

The business rules as pure code with no framework: money, access, tax, scheduling, the accounting ledger. The browser and the server run the same function, so a rule can never drift between them.

AI-led development

Build with AI, on parts that already work

AI can write an application quickly. On the ui-kit it does not have to reinvent the business functions every application needs, so it gets to a finished product faster and with fewer surprises.

  • Assemble, don’t regenerate

    An AI assistant that starts from a blank page rebuilds logins, invoicing and audit trails from scratch every time. On the ui-kit it composes business functions that already exist, so its effort goes into what makes your product different.

  • Quality it did not have to invent

    Every component and module is written once, tested once and reviewed once. AI-built products inherit that assurance instead of each carrying its own unreviewed copy of the same feature.

  • One implementation, not many

    Left alone, AI writes a slightly different version of the same code in every product. Shared parts remove that duplication, so a fix or an improvement reaches every product on the next release.

  • Guardrails an AI can follow

    Every export is documented for an AI reader, with what it needs, what it emits and the questions to ask the developer. Conventions are enforced by lint and tests, so a wrong turn fails the build instead of reaching production.

  • Compliance-ready frameworks, built in

    Data classification, audit logging, field-level encryption, access control and retention are native to the platform, which maps to the controls behind ISO 27001, SOC 2 Type II and HIPAA, so a new product starts with them rather than adding them later.

  • From idea to working product, sooner

    Because the common business functions are already done, a proof of concept is real, running software on real modules, and the time saved goes to the parts only you can describe.

We are HIPAA self-certified. We do not hold ISO 27001 or SOC 2 Type II certification: the platform is built to support their controls, and your own certification still has to be earned for your product.

The component catalog

Everything a product needs, already built

From the frame of the app to the last empty state. These are real exports of the library; the lists show a sample of each group.

  • App shell & navigation

    The frame of an app: header, sidebar, page container and the tenant and role switchers, assembled by one component.

    • AppShell
    • AppHeader
    • Sidebar
    • PageContainer
    • UtilityNavBar
    • ResponsiveRouteTabs
    • NotificationPopout
  • Identity & access

    Sign-in, multi-factor and step-up authentication, role switching and audited reveal of sensitive fields.

    • LoginPage
    • MfaEnrollment
    • StepUpAuth
    • PiiReveal
    • TenantSwitcher
    • RoleSwitcher
    • InvitationAccept
    • AgeAttestation
  • Data display

    Tables, lists, boards and charts that stay readable from a phone to a wide monitor.

    • DataTable
    • DataEditableTable
    • RecordList
    • StatusBoard
    • StatTile
    • BarChart
    • AuditLogViewer
    • TagManager
  • Forms & filters

    Schema-driven forms, rich input and one shared filter model from search box to saved views.

    • SchemaForm
    • RichTextEditor
    • SignaturePad
    • RecurrenceEditor
    • AddressLookup
    • FilterBar
    • DateRangeFilter
    • ImageUpload
  • Photo & video

    Galleries, a multi-angle video studio with annotation, and uploads that resume after a dropped connection.

    • PhotoViewer
    • VideoStudio
    • VideoTimelinePlayer
    • MultiAngleVideoPlayer
    • VideoAnnotationCanvas
    • MultiFileResumableUpload
    • QrCode
  • Maps & location

    Interactive maps with drawing tools, typed markers, address lookup and live weather conditions.

    • Map
    • MapDrawToolbar
    • MapFeatureInfoWindow
    • MapMarkerTypeManager
    • LocationConditions
    • WeatherRadarLink
  • Content & community

    Social walls, moderation, translation, AI-assisted writing and a block-based page builder.

    • WallFeed
    • ModerationQueue
    • TranslateToggle
    • TextRewriteAssist
    • GeminiPrompt
    • PageBlockEditor
    • MessagingComposer
    • SpeakButton
  • Accounting & billing

    A full double-entry accounting surface: ledger, invoices, payments, subscriptions, collections and reports.

    • JournalEntryEditor
    • TrialBalance
    • BalanceSheet
    • PaymentList
    • CreditNoteEditor
    • RenewalsDueTable
    • DunningLadderEditor
    • ExpenseClaimEditor
    • ConsolidatedStatement
  • Scheduling & booking

    Public booking flows, calendars and resource grids over an availability engine shared with the server.

    • BookingFlow
    • TenantCalendar
    • CalendarMonthGrid
    • ResourceScheduleGrid
    • ManageAppointment
    • WeeklySlotEditor
    • TimeOffEditor
  • Tasks & automation

    Task lists, templates and a fan-out scheduler that turns one rule into the right tasks for the right people.

    • TaskList
    • TaskTemplateEditor
    • FanOutRuleManager
    • FanOutScheduleEditor
    • AssigneePicker
    • HierarchicalEntityPicker
  • Commerce & plans

    Carts, product cards, variant matrices, usage limits and tenant plan billing for selling and subscribing.

    • ShoppingCartDrawer
    • ProductCard
    • VariantMatrixEditor
    • AllowanceMeter
    • UsageLimitCard
    • TenantPlanBilling
    • WalletPassButtons
  • Documents & messages

    Branded templates, previews, a message history across channels, and legal documents with acceptance tracking.

    • TemplateEditor
    • DocumentPreview
    • MessageHistoryTable
    • PublicDocumentPage
    • LegalDocumentViewer
    • LegalAcceptancePrompt
  • States & feedback

    Empty states, skeleton loaders, sync banners and confirmation dialogs, so every screen handles every state.

    • EmptyState
    • SkeletonCard
    • SyncStatusBanner
    • ConnectionStateIndicator
    • ConfirmationDialog
    • Drawer

Every component has a live page with controls to try each option.Browse the component demo

Power

Whole capabilities, not just widgets

Some of what the kit does is too big to be a component. These are full capabilities a product switches on.

A complete accounting platform

Any product can have real books behind it. The ledger, the invoicing, the collections and the reports are screens and services you mount, not features you build.

  • Double-entry ledger with gapless numbering, period close and reversal
  • Invoices, bills, credit notes, payments, refunds and customer statements
  • Subscriptions with prorating, autopay and a dunning ladder for collections
  • Expense claims, consolidated statements and signed exports for auditors

Scheduling and booking

A booking flow for the public, a calendar for the staff and one availability engine underneath, shared by the browser and the server.

  • Appointment types, weekly slots, overrides and time off
  • Recurring series, rescheduling and affected-appointment warnings
  • Resource grids for rooms, fields and equipment
  • Booking locks that stop two people taking the same slot

Photo and video, end to end

Capture to playback: resumable uploads, transcoding and streaming on the server, and a studio in the browser for reviewing and annotating footage.

  • Multi-angle player with a synchronised timeline
  • Frame-level annotation and categorised timeline markers
  • Resumable multi-file uploads with a progress tray
  • Face clustering and automatic vision tagging for photos

Documents and communications

One governed way to send anything: branded templates in, an auditable message out, on whichever channel the person prefers.

  • Email, SMS, WhatsApp, RCS and voice from one send path
  • Template governance with draft, publish and snapshots of what was sent
  • Opt-out registers consulted on every outbound text
  • PDF rendering and signed, renewable document links

Flexibility

Powerful enough to share, flexible enough to fit

A shared library only works if each product can still be itself. The kit is built to be configured, not forked.

  • Theme it

    Material 3 design tokens drive every colour. Light and dark follow the visitor, and a tenant can bring its own accent colour and logo that the whole interface picks up.

  • Configure it

    Components take mode inputs and opt-in flags rather than forks. One login page serves sign-in and sign-up; a shell shows only the chrome an app asks for.

  • Plug it in

    Screens talk to a port, an interface the app implements. REST and in-memory implementations ship with the kit, so a demo runs without a backend and a product runs against its own.

  • Extend it

    Typed extension slots let a product add its own panel to a shared screen, each one behind an error boundary so a broken extension never takes the page down.

  • Translate it

    Dictionaries load on demand, with English, Spanish, French and German included. Money, dates and units follow the tenant’s region settings.

  • Open it to everyone

    Every input has a real, associated label, focus is visible and managed, motion respects the visitor’s preference, and the kit is built to WCAG 2.1 AA.

In code

An app frame is one component

Integration is a template, not a project. These samples come straight from the ui-kit documentation.

The whole app frameOne component brings the header, sidebar, tenant and role switchers and sign-in. The app supplies its name, its menu and what to do on a sign-in.
<hch-app-shell
  app_name="Pitch Spotlight"
  [sidebar_items]="nav_items()"
  [sidebar_user_permissions]="my_permissions()"
  [show_tenant_switcher]="is_multi_tenant()"
  [show_role_switcher]="can_view_as_role()"
  (login_clicked)="on_login()"
  (logout_clicked)="on_logout()"
  (tenant_selected)="on_switch_tenant($event)"
  (role_selected)="on_switch_role($event)"
></hch-app-shell>
A card with a header and actionsInside a page, content sits in Material cards with a shared header, so spacing, icons and action buttons look the same in every product.
<mat-card>
  <hch-card-header
    icon="group"
    title="Roster"
    subtitle="12 players"
    [actions]="[{ icon: 'edit', label: 'Edit', on_click: on_edit_roster }]"
  ></hch-card-header>
  <mat-card-content>...</mat-card-content>
</mat-card>

The other half

A backend toolkit that matches

The screens are backed by core-server: modules for identity, audit, payments, media, messaging and the integrations a business actually uses. Each is a library the app composes, with its persistence supplied by the app.

Platform & identity

  • platform_tenant
  • identity
  • authorization
  • roles
  • invitations
  • self_serve_signup
  • admin_mfa
  • legal_acceptance

Cross-cutting

  • audit
  • compliance
  • outbox
  • secrets
  • rate_limiting
  • request_validation
  • scheduled_jobs
  • offline_sync

Storage & media

  • secure_storage
  • object_storage
  • transcode
  • video_timeline
  • photo_derivative
  • face_clustering
  • playback_authorization

Communication

  • communications
  • messaging_providers
  • notifications
  • inbound_sms
  • translation
  • template_engine
  • documents

Business domains

  • accounting
  • payments
  • banking
  • appointments
  • entitlements
  • task
  • fan_out_worker
  • share_links

Integrations

  • stripe
  • square
  • plaid
  • mercury
  • gusto
  • checkr
  • easypost
  • google_sheets

Secure by default

Controls every product inherits

Security and privacy are conventions of the platform, enforced in code and in review, so a new product starts with them instead of adding them later.

  • Multi-tenant from day one

    Every row belongs to a tenant, and access is checked against it on the server. One product serves many organisations without their data ever mixing.

  • Audited in the same transaction

    Sensitive changes write an append-only audit row in the same database transaction as the change itself, with personal data redacted from the before and after snapshots.

  • Sensitive data stays sealed

    Every field is classified. Health and sensitive personal data are encrypted at the field level, and reading them is logged.

  • Step-up authentication

    Risky actions ask the person to prove themselves again. Revealing a protected value takes an admin, a re-check and leaves an audit entry.

  • Erasure by design

    People are erased by destroying their encryption keys, so the data is unreadable everywhere at once, while financial records are kept intact.

  • Built for families

    Under-13 users have verifiable parental consent, minimal data and no behavioural targeting, with parent-initiated deletion built in.

Put the platform to work on your product

Whether you are curious about the ui-kit, a product in the portfolio or running something similar yourself, we would like to hear what you are building.