ASafariMShowcase
05 /Engineering proof

What actually backs this platform

Architecture, security boundaries, deployment shape, shipped versions, and quality status — each with a source and a timestamp, not just an assertion. Operational details (hosts, credentials, internal logs) are deliberately excluded.

← Back to showcase
01 /Architecture

How the pieces connect

BrowserReverse proxyTLS + subdomain routingMatched appNext.js, one per productShared PostgresPrisma — 7 appsIsolated PostgresDrizzle — testora, appbuilder onlyHTTPSroutesshared appsisolated apps, never shared
Every request crosses the same reverse proxy regardless of which app it reaches. What actually keeps testora and appbuilder isolated is that their apps never hold a connection to the shared database — not an application-level check.
Hub
experience

Central sign-in gateway; every app redirects here when unauthenticated.

Web / Showcase / Admin / Vionto / EduMatch / TimelineAI
experience

Next.js 16 App Router apps sharing the design system and auth cookie.

@asafarim/auth
shared

Auth.js v5 config, JWT sessions, RBAC helpers, app registry.

@asafarim/ui
shared

CSS design tokens, AppShell, DataTable, and brand components.

@asafarim/shared-i18n
shared

Locale resolution and dictionaries for en/nl/fr/de/lb.

@asafarim/db (Prisma)
data

Shared platform schema: users, RBAC, audit log, EduMatch, TimelineAI.

Testora / AppBuilder databases (Drizzle)
data

Per-app isolated Postgres instances, deliberately not shared.

Redis + BullMQ
data

Background job queues for Vionto's render pipeline and AppBuilder's AI generation.

02 /Security

SSO and RBAC boundaries

BrowserAppHubShared DBGET /dashboard302 → hub.* (no session)sign inverify credentials, load roles302 + Set-Cookie(JWT), domain=.asafarim.comGET /dashboard + cookiecheck permission — every request, server-side200 OK
The two highlighted hops are the actual security boundary: the cookie is scoped to the shared domain (not a token any single app controls), and the permission check re-runs against the shared database on every request — a role never travels as a trusted client-side flag.
Single sign-on, shared cookie

Hub issues a JWT session on a cookie scoped to the shared apex domain. Every other app validates that session; none of them hold a separate credential store.

RBAC is checked server-side, per app

Role/permission checks run in each app's own middleware and API routes against the shared platform schema — a client-side role flag is never trusted for access control.

Isolated databases stay isolated

Testora and AppBuilder each run against their own Postgres instance specifically so a bug in one app's queries can't reach platform user data.

Secrets never leave the server boundary

API keys and connection strings are decrypted server-side from an age-encrypted file at deploy time; they are not present in any client bundle or public repository file.

03 /Deployment

Delivery topology

Summary

Docker Compose stack behind a reverse proxy, deployed by pushing to main. Each app builds as its own standalone Next.js image; a background worker process runs alongside the apps that need one (Vionto, AppBuilder).

  1. GitHub Actions triggers on push to main.
  2. The deploy job connects over SSH to the host and runs the repository's deploy script.
  3. The script pulls the latest commit, decrypts environment secrets from the committed encrypted file, and rebuilds images sequentially.
  4. The reverse proxy routes each subdomain to its container; the stack restarts with zero manual steps.

Host address, credentials, and internal service ports are intentionally not published here — see the Rules section above.

04 /Live status

Is it actually up right now

Polled from each app’s public /api/status endpoint at the moment you loaded this page — genuinely live, not a cached number.

Webunreachable
Hubok · 19ms
Showcaseok · 19ms
Adminok · 19ms
Viontook · 19ms
Testoraok · 19ms
AppBuilderok · 19ms
EduMatchok · 19ms
TimelineAIok · 19ms
05 /Quality

Build, accessibility, performance

Build / lint / typecheck
Live

Passing

Method: GitHub Actions API: latest completed run of ci-status.yml on main (lint + typecheck + package tests — build excluded, needs CI secrets, tracked separately).
As of 2026-10-18

Accessibility snapshot
Live

100 / 100

Method: Lighthouse CI (treosh/lighthouse-ci-action) against the deployed showcase, on a daily schedule; committed snapshot read from main.
As of 2026-10-18

Performance snapshot
Live

70 / 100

Method: Lighthouse CI (treosh/lighthouse-ci-action) against the deployed showcase, on a daily schedule; committed snapshot read from main.
As of 2026-10-18

06 /Versions

Shipped packages and apps

Published on npm
35
live from the npm registry · 2026-10-19
All-time npm downloads
74,911
api.npmjs.org, summed per package
Workspace packages
21
packages/* · consumed via workspace:*
Apps in production
12
12 changed in the last 14 days

Published on npm

Open-source building blocks published from the @asafarim npm account and used across my apps. Sorted by all-time downloads; the bar is each package’s share of the most-downloaded one.

@asafarim/sharedv1.7.4

Shared components and utilities for ASafariM web applications

7.8K all-time · 4/wk
@asafarim/envagev0.4.2

Secure, age-based encryption/decryption for .env files across multiple environments and monorepo app folders

7.1K all-time · 410/wkused here
asafarim-navlinksv3.4.0

A versatile React navigation component with unlimited multi-level dropdowns, four alignment options, mobile responsiveness, and customizable styling. Perfect for modern web applications.

5.3K all-time · 90/wk
@asafarim/dd-menuv1.5.1

A minimal, elegant, and highly customizable dropdown menu React component. Perfect for navbar, sidebar, or any dropdown needs with beautiful theming and smooth animations.

5.1K all-time · 15/wk
@asafarim/react-themesv1.9.0

A comprehensive theme management system for React applications with automatic dark/light mode detection, custom theme creation, and smooth transitions.

3.8K all-time · 4/wk
@asafarim/simple-md-viewerv1.5.2

A professional markdown viewer with file tree navigation, directory content browsing, and advanced YAML front matter support

3.4K all-time · 7/wk
@asafarim/design-tokensv0.5.0

ASafariM design tokens (CSS variables) with multi-theme support and 30 variable fonts (100-900).

3K all-time · 8/wk
@asafarim/paginated-project-gridv1.6.1

A responsive React component for displaying paginated project cards with built-in search functionality

2.8K all-time · 7/wk
@asafarim/navigationv0.4.2

Reusable, framework-agnostic React navigation components (navbar, sidebar, drawer, dropdown) for ASafariM apps and beyond.

2.3K all-time · 21/wk
@asafarim/project-cardv1.5.2

A React component for displaying project cards with title, image, description, tech stack, and links.

2.3K all-time · 10/wk
@asafarim/direxpov1.8.0

***Convert your project into a beautifully formatted Markdown file***

2.1K all-time · 1/wk
@asafarim/react-dropdownsv1.8.0

Comprehensive reusable dropdown components for React with TypeScript and mobile-first design

2K all-time · 1/wk
@asafarim/progress-barsv0.7.1

Accessible, themeable React progress bar components (linear, circular, step, segmented, threshold, vertical, spinner) built with CSS modules and design tokens.

1.8K all-time · 13/wk
@asafarim/direxpo-corev0.5.0

Pure utilities for file discovery and folder tree generation. No runtime dependencies.

1.7K all-time · 2/wk
@asafarim/react-privacy-consentv1.7.2

A comprehensive React TypeScript package for GDPR/CCPA privacy consent management with customizable UI components

1.5K all-time · 1/wk
@asafarim/appsafev0.5.0

Browser-native AES-256-GCM encryption for files and data with password or public-key modes

1.3K all-time · 23/wk
@asafarim/sidebarv1.2.0

A collapsible sidebar component for React applications

1.3K all-time · 1/wk
@asafarim/appsafe-cliv0.5.0

Config-driven local file and folder encryption CLI for AppSafe

1.3K all-time · 20/wk
@asafarim/md-file-explorerv1.2.4

A TypeScript package for recursively exploring markdown files and folders with lazy loading capabilities

1.3K all-time · 7/wk
@asafarim/markdown-utilsv1.3.3

Utility functions for markdown processing, metadata extraction, and content parsing

1.1K all-time · 79/wk
@asafarim/complete-md-viewerv1.1.1

A flexible markdown viewer with support for both standalone and integrated routing usecases

952 all-time · 1/wk
@asafarim/display-codev1.2.2

A React component for displaying syntax-highlighted code blocks with copy functionality and theme support.

949 all-time · 2/wk
@asafarim/themeswitchv28.6.2024

A React package for theme switching between light and dark modes, utilizing a context provider and a switcher component.

842 all-time
asafarim-themeswitchv0.1.1

A React package for theme switching between light and dark modes, utilizing a context provider and a switcher component.

658 all-time
@asafarim/toastv1.2.0

React toast notification system for ASafariM frontends.

600 all-time · 6/wk
@asafarim/password-checklistv1.1.2

A robust, fully-typed React component and headless hook to display the success or failure of password strength rules in real time.

416 all-time · 6/wk
@asafarim/shared-loggingv1.0.0

A lightweight, environment-agnostic logging utility shared across all ASafariM applications.

276 all-time

Platform workspace packages

Internal to this monorepo and never published, so they don’t carry independent semver. Their real version is the last commit that touched the folder, linked below. A green dot means it changed in the last 14 days.

@asafarim/activity3b49dbd

Cross-app user-activity adapters for the superadmin User 360 explorer

14 commits · updated 2026-10-03used by 1 workspace
@asafarim/ai-cost-ledgerb9b15d8

Vendor-neutral, append-only AI provider cost-event contract — Zod schemas, integer-micro money, exclusive usage buckets, pricing snapshots, effective-cost/coverage aggregation and timeline read-model types. No Next.js, database, auth, AI SDK or browser dependency; each app persists events in its own schema.

2 commits · updated 2026-09-24used by 5 workspaces
@asafarim/appbuilder-ai1f1d13a

Server-only AI provider boundary and structured planning schemas for AppBuilder's M07 generation pipeline. The model may only propose allowlisted @asafarim/appbuilder-schema operations — this package never executes or returns arbitrary source code.

12 commits · updated 2026-09-23used by 1 workspace
@asafarim/appbuilder-runtime792fc93

Approved component/template registry and metadata-driven preview renderer for AppBuilder generated apps — no database, auth, AI, or Next.js dependency.

7 commits · updated 2026-09-26used by 2 workspaces
@asafarim/appbuilder-schema1f1d13a

Versioned AppBuilder application-specification contract and deterministic controlled-operation engine — no Next.js, database, auth, AI, or browser dependency.

3 commits · updated 2026-09-23used by 3 workspaces
@asafarim/auth844ab78

Shared Auth.js v5 authentication for the ASafariM Platform

58 commits · updated 2026-10-14used by 13 workspaces
@asafarim/config3b49dbd

Shared TypeScript, ESLint, and Tailwind configuration for the ASafariM Platform

3 commits · updated 2026-10-03used by 25 workspaces
@asafarim/db5425a62

Shared PostgreSQL/Prisma database package for the ASafariM Platform

59 commits · updated 2026-10-18used by 10 workspaces
@asafarim/db-env-guard5fb6ac1

Dependency-free, fail-closed guard deciding whether a synthetic-data CLI may write a database: URL and machine signals, the asafarim-env database marker and its SQL. Shared by the TasksAI identities CLI and the TasksAI test-data CLI.

1 commits · updated 2026-10-15used by 2 workspaces
@asafarim/seed-manager5fb6ac1

Typed, allowlisted seed-data providers shared by the Admin Console and the CLI seed scripts. Server-only.

15 commits · updated 2026-10-15used by 2 workspaces
@asafarim/settings-client11e92f2

Read-only client for Admin's internal platform-settings API, for apps on their own isolated database (Testora, AppBuilder, ResuMatch). No Next.js, database or auth dependency.

2 commits · updated 2026-09-25used by 2 workspaces
@asafarim/storage3b49dbd

Shared S3-compatible object storage utilities

7 commits · updated 2026-10-03used by 7 workspaces
@asafarim/testora-tasksai-contract1f1d13a

Versioned cross-app contract between Testora and TasksAI — artifact-bundle, provision, webhook-event and green-light schemas plus HMAC signing helpers. No Next.js, database, auth, AI or browser dependency.

5 commits · updated 2026-09-23used by 3 workspaces
@asafarim/theme-toggle3b49dbd

Shared light/dark theme toggle for all ASafariM apps — provider, no-flash script, and a token-styled toggle button.

11 commits · updated 2026-10-03used by 10 workspaces
@asafarim/timeline-contract659c6aa

TimelineAI's canonical, dependency-free timeline contract: date values that keep their stated precision, the heuristic date-phrase parser, deterministic ordering, temporal conflict detection, and the versioned event-import shape other apps hand to TimelineAI. Owned by TimelineAI; TimelineAI's Zod schemas validate it.

1 commits · updated 2026-09-27used by 3 workspaces
@asafarim/tool-handoff659c6aa

Versioned, dependency-free handoff envelope and destination payloads for moving reviewed AI Workbench results into Testora, TasksAI, and TimelineAI as a file the signed-in user imports and confirms. Includes the validator every destination runs before previewing.

1 commits · updated 2026-09-27used by 4 workspaces
@asafarim/uif0ace74

ASafariM Platform design system: tokens, brand, and creative building blocks

70 commits · updated 2026-10-10used by 13 workspaces

Apps

Each one ships as its own container on every push to main. Open the live app or read its source.

Admin63ed992

@asafarim/admin

ASafariM Admin - internal admin panel (admin.asafarim.com)

102 commits · updated 2026-10-11
AppBuilder63ed992

@asafarim/appbuilder

ASafariM AppBuilder - metadata-driven AI application factory (appbuilder.asafarim.com)

117 commits · updated 2026-10-11
Hub63ed992

@asafarim/hub

ASafariM Hub - logged-in user dashboard (hub.asafarim.com)

87 commits · updated 2026-10-11
Labs63ed992

@asafarim/labs

ASafariM Labs - experimental workbench for what's being explored next (labs.asafarim.com)

22 commits · updated 2026-10-11
ResuMatchcd41416

@asafarim/resumatch

ResuMatch - AI-powered CV tailoring: paste a job URL, tailor your resume to it (resumatch.asafarim.com)

120 commits · updated 2026-10-18
Showcase5762711

@asafarim/showcase

ASafariM Showcase - public demos and portfolio experiments (showcase.asafarim.com)

459 commits · updated 2026-10-18
TasksAIfec9079

@asafarim/tasks-ai

TasksAI - AI-native work execution: scattered intent to trusted execution (tasks-ai.asafarim.com)

93 commits · updated 2026-10-15
Web63ed992

@asafarim/web

Public ASafariM Digital website (asafarim.com)

87 commits · updated 2026-10-11
Testorade3f349

testora

E2E test automation platform: define functional requirements, suites, fixtures and cases, run them with TestCafe, and store results in PostgreSQL.

148 commits · updated 2026-10-14
TimelineAI63ed992

timelineai

TimelineAI: create polished, visual timelines — project, historical, roadmap, Gantt, calendar, and interactive.

95 commits · updated 2026-10-11
07 /Changelog

Recently shipped

  1. 2026-10-18
    EduMatch: redact PII and secrets before student text reaches AI providers
    35883200
  2. 2026-10-18
    Resumatch: per-workspace AI monthly budget override
    082c292f
  3. 2026-10-18
    Resumatch: cross-provider AI fallback (OpenAI ↔ Anthropic)
    d4ae33d8
  4. 2026-10-17
    Resumatch: record one outcome row per AI provider call (#512)
    1d845c68
  5. 2026-10-17
    Resumatch: flag thin job-posting fetches with a quality signal
    88bda18c
  6. 2026-10-17
    Resumatch: read JobPosting JSON-LD before the page text strip
    55e4b44a
  7. 2026-10-17
    Resumatch: report profile versions extracted by stale extractor code
    583f399a
  8. 2026-10-17
    Resumatch: tiered job fetch, deterministic first, AI only when it fails
    5bd3e02b
  9. 2026-10-17
    Resumatch: short-TTL dedup cache for extraction and job-fetch
    271e1ce1
  10. 2026-10-17
    Resumatch: ground cover-letter prose against the profile and job text
    9071f15a
  11. 2026-10-13
    Edge: read-only edge cutover check script (#839)
    082908a4
  12. 2026-10-12
    Igs: automatic staging deploy through a forced-command SSH key (#833)
    55c1dfa7
  13. 2026-10-11
    Igs: nightly encrypted Postgres backups to S3 + restore drill (#829)
    6b076d40
  14. 2026-10-11
    Igs: health check with Discord alerts on change (#828)
    bb55297d
  15. 2026-10-11
    Infra: igs-pharma.be staging stack, edge site and igs-deploy.sh (#822)
    c8b5de27
  16. 2026-10-05
    Hub: resume cookie across sign-in, "Try again" for expired tickets, hand-off comments (Fixes #801, Fixes #802)
    caaa54d0
  17. 2026-10-04
    Hub: ASafariM OS sign-in hand-off + read-only accounts view (Refs #782, P2.2)
    8d455f55
  18. 2026-10-04
    Infra: wire in the shared edge, no port change (Refs #770, #774 phase 2)
    75b8c0a3
  19. 2026-10-03
    Infra: asafarim.site placeholder landing (#775)
    5bdf6594
  20. 2026-10-03
    Testora: serve the public pages on testora.cloud (#762, phase A)
    a57131b8