ASafariMShowcase
01 /Gallery

Projects

What the wall is made of — how each piece is built, which shared platform elements it stands on, and how those elements connect. Walk the gallery itself on the home page.

← Walk the gallery
02 /At a glance

The wall in numbers

Projects
9
on the wall
Deployed
7
reachable right now
Distinct technologies
20
across every stack
Shared elements per project
4.1
of 8 available
Status mix
  • live5
  • beta3
  • experiment1
Most-used technologies
  • TypeScript8 projects
  • Next.js7 projects
  • PostgreSQL5 projects
  • Prisma4 projects
  • Redis3 projects
  • Zod3 projects
  • BullMQ2 projects
  • Playwright2 projects
  • Vitest2 projects
  • Anthropic API (behind an eval gate)1 project
03 /System

How the pieces connect

Experience

One Next.js app per product, behind a single reverse proxy.

Task Management7 shared elements
Smart Operations Dashboard3 shared elements
Testora4 shared elements
AI Evaluation Lab2 shared elements
EduMatch3 shared elements
Vionto Studio7 shared elements
TimelineAI4 shared elements
ResuMatch4 shared elements
AI Workbench3 shared elements

Shared platform

Built once in packages/*, consumed by every app above.

Design system@asafarim/uiTokens, moods, and brand components.9 of 9 projects
Identity@asafarim/authAuth.js config, SSO cookie, RBAC helpers.7 of 9 projects
AI boundary@asafarim/appbuilder-aiServer-only provider boundary.5 of 9 projects
Job runnerBullMQ workerDurable background pipelines.2 of 9 projects

State

Where things are persisted, queued, and stored.

Platform database@asafarim/dbShared Prisma schema on PostgreSQL.5 of 9 projects
Isolated databaseDrizzle + PostgreSQLApp-private schema, separate instance.3 of 9 projects
Object storage@asafarim/storageS3-compatible media and exports.3 of 9 projects
Queue / cacheRedisJob queues and rate limiting.3 of 9 projects

7 of 9 projects are deployed and reachable today. Every app in the top tier authenticates through the same identity package and renders with the same design system — the reason a new product starts as a page, not a stack.

04 /Coverage

Who builds on what

Shared platform elements used by each project. A filled cell means the project builds on that element directly.
ProjectDesign systemIdentityAI boundaryJob runnerPlatform databaseIsolated databaseObject storageQueue / cacheTotal
Task ManagementTask Management uses Design systemTask Management uses IdentityTask Management uses AI boundaryTask Management uses Job runnerTask Management does not use Platform databaseTask Management uses Isolated databaseTask Management uses Object storageTask Management uses Queue / cache7
Smart Operations DashboardSmart Operations Dashboard uses Design systemSmart Operations Dashboard uses IdentitySmart Operations Dashboard does not use AI boundarySmart Operations Dashboard does not use Job runnerSmart Operations Dashboard uses Platform databaseSmart Operations Dashboard does not use Isolated databaseSmart Operations Dashboard does not use Object storageSmart Operations Dashboard does not use Queue / cache3
TestoraTestora uses Design systemTestora uses IdentityTestora uses AI boundaryTestora does not use Job runnerTestora does not use Platform databaseTestora uses Isolated databaseTestora does not use Object storageTestora does not use Queue / cache4
AI Evaluation LabAI Evaluation Lab uses Design systemAI Evaluation Lab does not use IdentityAI Evaluation Lab uses AI boundaryAI Evaluation Lab does not use Job runnerAI Evaluation Lab does not use Platform databaseAI Evaluation Lab does not use Isolated databaseAI Evaluation Lab does not use Object storageAI Evaluation Lab does not use Queue / cache2
EduMatchEduMatch uses Design systemEduMatch uses IdentityEduMatch does not use AI boundaryEduMatch does not use Job runnerEduMatch uses Platform databaseEduMatch does not use Isolated databaseEduMatch does not use Object storageEduMatch does not use Queue / cache3
Vionto StudioVionto Studio uses Design systemVionto Studio uses IdentityVionto Studio uses AI boundaryVionto Studio uses Job runnerVionto Studio uses Platform databaseVionto Studio does not use Isolated databaseVionto Studio uses Object storageVionto Studio uses Queue / cache7
TimelineAITimelineAI uses Design systemTimelineAI uses IdentityTimelineAI does not use AI boundaryTimelineAI does not use Job runnerTimelineAI uses Platform databaseTimelineAI does not use Isolated databaseTimelineAI does not use Object storageTimelineAI uses Queue / cache4
ResuMatchResuMatch uses Design systemResuMatch uses IdentityResuMatch does not use AI boundaryResuMatch does not use Job runnerResuMatch does not use Platform databaseResuMatch uses Isolated databaseResuMatch uses Object storageResuMatch does not use Queue / cache4
AI WorkbenchAI Workbench uses Design systemAI Workbench does not use IdentityAI Workbench uses AI boundaryAI Workbench does not use Job runnerAI Workbench uses Platform databaseAI Workbench does not use Isolated databaseAI Workbench does not use Object storageAI Workbench does not use Queue / cache3
05 /Detail

Project by project

An AI-native work operating system that turns scattered intent into explainable, outcome-linked execution. Fifteen milestones shipped as a reviewed PR series; the creative & useful copilot epic is underway.

Next.jsTypeScriptPostgreSQLRedisBullMQOpenAPI
  • M00–M15 shipped as a reviewed PR series: multi-tenant work graph, versioned REST API with OpenAPI, idempotency and optimistic concurrency.
  • The fast task experience — subtasks, dependencies, estimates, labels, custom fields, recurrence and templates across Inbox, List, Board, Calendar and Timeline — with no AI required.
  • Human-approved AI proposals convert briefs and notes into tasks, dependencies, owners, and delivery plans.
  • Next: the creative & useful copilot epic (#244).

Operations KPI dashboard showcase with real-time views and reporting.

ReactTypeScriptRechartsPostgreSQL
  • KPI tiles and trend views composed from the shared design-system primitives.
  • Reporting queries read the platform schema directly — no separate warehouse.

Live end-to-end test automation: author requirements, suites, fixtures and cases, run them in a real headless TestCafe browser with streamed progress, and triage failures with screenshots and AI-drafted issues.

Next.jsTypeScriptTestCafeDrizzlePostgreSQL
  • Full authoring model — functional requirements, test suites, fixtures, and cases — persisted in Testora's own Drizzle database, isolated from the shared platform schema.
  • Signed-in users drive real headless TestCafe runs against per-app local or remote targets, with progress streamed over SSE.
  • Repeat runs per case and a per-fixture flaky flag that adds retries.
  • Failure screenshots and AI-drafted issue reports; next up: the autonomous quality loop with TasksAI (#269).

A provider-neutral, fixture-mode AI benchmark: versioned prompts and synthetic datasets scored for correctness, groundedness, format compliance, latency, cost, and safety — reproducibly, with no API keys.

TypeScriptZodVitestProvider-neutral adapters
  • Versioned prompts and synthetic datasets — no API keys, no employer data.
  • Scores correctness, groundedness, format compliance, latency, cost, safety.
  • Models appear as provider-neutral aliases so runs stay comparable.
  • Latency and cost are representative fixtures, never live measurements.

An explainable tutor-matching benchmark: synthetic students and tutors, a transparent weighted-factor engine you can adjust live, and fairness/stability checks.

Next.jsTypeScriptPrismaPostgreSQL
  • Synthetic students and tutors — no real people, bookings, or payments.
  • Transparent weighted-factor engine you can adjust live in the browser.
  • Fairness and stability checks run against the committed fixtures.

A transparent AI media-pipeline benchmark: a schema-validated brief-to-render pipeline with approval-gated retry, seeded stage failures, and cost estimation — no live providers, no real media.

Next.jsBullMQFFmpegPrismaS3Redis
  • Schema-validated brief-to-render pipeline with approval-gated retry.
  • Seeded stage failures make the recovery path observable, not hypothetical.
  • Render work runs on a durable BullMQ worker, not in the request cycle.
  • Cost estimation per render, with no live providers and no real media.

Turn a list of events into a polished visual timeline: ten layouts over one content model — vertical, zigzag, circular, roadmap, Gantt, calendar board, and more — with live preview, PNG/JPG/PDF export, and a public gallery. No account needed to try it.

Next.jsTypeScriptPrismaPuppeteerPlaywrightRedis
  • One content model, ten layouts — switching layout never touches event data.
  • Live editor preview renders through the exact component the public page uses.
  • PNG / JPG / PDF export via headless Chromium against the same renderer.
  • Guests can build and submit a timeline without an account; admins moderate.

An AI CV-tailoring showcase: paste a job posting URL, and AI rewords and reprioritizes your confirmed profile toward it — never inventing an employer, a date, a degree, or a skill you did not list — then download it as a PDF.

Next.jsTypeScriptPrismaPostgreSQLZodS3-compatible storage
  • CV-derived profiles are editable, explicitly confirmed, and kept as immutable versions.
  • AI rewrites are structurally constrained: facts are copied from the profile in code, never taken from model output.
  • One job URL is fetched per candidate action — no job-board aggregation, no licensing dependency.
  • The public deployment is a non-commercial portfolio MVP, not a professional career or legal service.

AI Workbench

Experiment

Three narrow public AI tools — requirements to test plan, notes to action plan, text to cited timeline — where every item shows where it came from, the server removes what the input doesn't support, and a fixture-first eval gate decides when a tool may go live.

Next.jsTypeScriptZodAnthropic API (behind an eval gate)VitestPlaywright
  • Every item is labelled: quoted from the input, inferred with its assumption, or a suggestion.
  • Server-side checks remove fake test results, invented owners and deadlines, and false date precision.
  • A fixture-first eval gate in CI blocks any tool from going live until it passes.
  • Experimental today: the examples run; live generation stays off until each tool's gate and launch checks pass.