Skip to content

Tay Shofer · Software DeveloperI build softwarepeople can actually use.

Computer Science graduate building polished products, real-time systems and production-ready software.

Work

Selected work

Four flagship projects, and two more worth a look.

Live

T Poker

A poker study platform and home-game manager, shipped from one codebase

One Expo codebase renders iOS, Android and the live web app, backed by an ASP.NET Core CQRS service over PostgreSQL. The financial core runs in integer cents, and the two stacks carry 6,210 passing tests.

Passing tests, both stacks
6,210
Targets from one codebase
3
CI jobs, scoped per push
8
  • TypeScript
  • Expo / React Native
  • react-native-web
  • C# / ASP.NET Core 8
  • MediatR (CQRS)
Open the app (opens in a new tab)Private repository
Live tournament dashboard with blind clock
T Poker home screen — cash game or tournament
Guided end-of-night settlement

Runs locally

Aegis

A Security Operations Centre where module isolation is enforced by the compiler

Security events flow from ingestion through detection and threat scoring to alerts over MassTransit and RabbitMQ, and reach the dashboard live over SignalR. The whole stack comes up from one Docker command that mints its own RS256 keys.

Runs locally — the live stream shown is a local demo

Bounded contexts
8
Cross-context references
0
Passing tests, incl. Testcontainers
105
  • C# / .NET 10
  • ASP.NET Core
  • MassTransit + RabbitMQ
  • PostgreSQL 16
  • Redis

Streaming — local demo

Aegis SOC Overview: live metrics, incidents by status and the live alert feed

Released

DeveloperOS

A local-first code workspace that refuses to answer without evidence

It indexes your own projects into a private SQLite FTS5 index and answers with real file and line citations, declining when the index can't support an answer. It ships as one Python package with no runtime dependencies: a CLI, a browser dashboard, an installable PWA or a Windows desktop window.

Tests · 0.82:1 to source
363
Runtime dependencies
0
Decision records
34
  • Python 3.11+
  • SQLite FTS5 (bm25)
  • stdlib http.server
  • React + htm (vendored)
  • Ollama (optional)
DeveloperOS dashboard overview
Grounded search and ask, with file:line citations
Learning centre generated from indexed code
Career tools — leads, CV match, interview prep

Grounded answers · file:line citations

Release candidate

GRAVITY FLOW

One touch, 150 hand-tuned levels, and physics that had to feel fair

Press and hold to spawn an inverse-square gravity well and pull a lost star home, across 150 data-driven levels in 15 worlds. Built on Phaser 3 in strict TypeScript, with a Vitest suite that pins both the physics and the progression.

v1.0.0-rc · Android-only · not yet in a store

Levels across 15 worlds
150
Tests over 28 files
221
Core mechanics
7
  • TypeScript (strict)
  • Phaser 3
  • Matter.js physics
  • Vite
  • Vitest
GRAVITY FLOW gravity-well puzzle gameplay
World boss encounter

v1.0.0-rc · Android-only

More work

Runs locallySolo build · 287 jobs collected over 61 runs

Job Assistant

A collect → filter → dedup → deliver pipeline over seven source adapters, including LinkedIn ingested from alert emails over IMAP rather than scraped.

Source adapters
7
Tests
162
collectfilterdedupdelivercollectfilterdedupdeliver

CourseworkUniversity coursework · HIT

Orders & Delivery

A multithreaded Java server speaking JSON over raw sockets to a JavaFX client, with pluggable shortest-path routing for delivery ETAs.

Protocol routes
16
Concurrent clients
10
clientTCPserverclientTCPserver

About

Engineer by training.
Builder by nature.

I'm a Computer Science graduate, and nearly everything I build comes back to one idea: make the wrong thing hard to express. Money moves in integer cents, so a rounding error has nowhere to live. Module boundaries are compile errors, not code-review habits. A retrieval layer that can't cite a file and a line refuses to answer rather than guess.

That started in C and C++, where nothing is handed to you and the machine is honest about what you got wrong. It carries into the C#/.NET, TypeScript and Python work I do now — each taken from an empty repo to a running system. I'm looking for a junior software development role on a team that ships.

Computer Science
B.Sc.
Web · Mobile · Backend
Full stack
Israel time · works in English
Israel
Still learning
∞

Stack

The tools I build with.

Enough range to own a product end to end.

Languages

  • C++
  • C
  • C#
  • TypeScript
  • Python
  • Java
  • JavaScript
  • SQL

C# carries Aegis's and T Poker's backends, TypeScript their clients, and Python carries DeveloperOS and Job Assistant.

Interface

  • React
  • Next.js
  • React Native / Expo
  • Tailwind CSS
  • Framer Motion
  • Phaser 3
  • JavaFX

One Expo codebase renders iOS, Android and the live web app for T Poker — designing for the narrowest target first.

Services & APIs

8bounded contexts

  • ASP.NET Core
  • Clean Architecture
  • CQRS / MediatR
  • REST
  • SignalR
  • RabbitMQ / MassTransit
  • JWT / RS256

Aegis moves events across 8 bounded contexts over RabbitMQ, with 0 cross-context references and a retry ladder per endpoint.

Data & State

  • PostgreSQL
  • SQLite / FTS5
  • Redis
  • EF Core
  • MySQL
  • Firebase

SQLite FTS5 powers DeveloperOS’s grounded retrieval; PostgreSQL and Redis back Aegis’s partitioned events and sliding windows.

Delivery

  • Docker
  • GitHub Actions
  • Vercel
  • Railway
  • Linux
  • Git
  • Capacitor
  • PyInstaller

T Poker's CI runs eight jobs across two languages, each scoped to what a push changes, and Aegis's whole stack — API, frontend, PostgreSQL, Redis, RabbitMQ — comes up under one compose file.

Testing & Tooling

7,061passing tests across five projects

  • xUnit
  • Vitest
  • Jest
  • pytest
  • Testcontainers
  • Playwright
  • Claude Code
  • Ollama

7,061 passing tests across five projects, weighted toward settlement math, threat scoring, retrieval grounding and level progression.

Think. Build. Ship.

  1. Think: Architecture before implementation.

    The hard part of T Poker wasn't the poker UI: it was guaranteeing the money is exact on a phone with no signal, and still correct when the server reconnects.

    T Poker

  2. Build: Clean, maintainable systems.

    Eight bounded contexts, structured so a cross-module reference fails to compile — verified by a script, not by code review.

    Aegis

  3. Ship: Test. Deploy. Improve.

    The TypeScript settlement fixtures mirror the C# service case for case, and Aegis comes up from a single Docker command that gates on health.

    T Poker · Aegis

Available for software development roles

Let's build
something great.

Open to junior software development roles — onsite, hybrid, or remote.

GitHub (opens in a new tab)LinkedIn (opens in a new tab)Email

Tay Shofer