A Windows 95/98 desktop OS running in the browser, built as a full-stack polyglot monorepo. The retro shell is the front. The engineering depth is the point.
Live: retro-aesthetics.vercel.app
Everything in this table is live in production or runs locally today. Planned phases are in the Roadmap.
| Technology | What it does in this project | Where |
|---|---|---|
| React 18 + TypeScript | Windowed desktop OS: drag, resize, z-index, taskbar, start menu, 40+ apps | apps/os/src/ |
| Vite | Dev server, production build, WASM asset handling | apps/os/vite.config.ts |
| Tailwind CSS | Win95 bevel, inset, outset utility classes; responsive desktop layout | apps/os/ |
| TanStack Router | File-based routing for OS routes and deep-linked app state | apps/os/src/ |
| @yakubka/retro-ui | Shared Win95 component kit: Window, Button, Icon, Taskbar, Dialog | packages/retro-ui/ |
| tsup | Bundles retro-ui to ESM + CJS + .d.ts type declarations |
packages/retro-ui/tsup.config.ts |
| Storybook | Interactive docs and visual testing for retro-ui components | packages/retro-ui/ |
| pnpm workspaces + Turborepo | Monorepo task graph: build order, caching, parallel runs | pnpm-workspace.yaml, turbo.json |
| Husky + lint-staged | Pre-commit: ESLint auto-fix, Prettier, ruff, TypeScript check on staged files | .husky/, lint-staged.config.mjs |
| Python serverless (Vercel) | /api/ endpoints: SQL sandbox execution, Pastebin CRUD, Guestbook, ETL mock |
api/index.py |
| SQLite-WASM (wa-sqlite) | In-browser SQL Playground runs real queries with zero backend | apps/os/src/os/apps/SqlPlayground.tsx |
| Pyodide | Full CPython in the browser powering the Python Terminal app | apps/os/src/os/apps/PythonTerminal.tsx |
| WebAudio API | ControlPanel startup jingle synthesized from oscillators; audio visualization | apps/os/src/os/apps/ControlPanel.tsx |
| Web Speech API | Voice Recorder app captures and plays back audio sessions | apps/os/src/os/apps/VoiceRecorder.tsx |
| Canvas 2D | Paint app (brushes, shapes, fill, eraser); Photo Booth filters and stickers | apps/os/src/os/apps/Paint.tsx |
| requestAnimationFrame | Stopwatch centisecond precision; Raycaster render loop; Snake game loop | ClockApp.tsx, Raycaster.tsx |
| Geolocation + Open-Meteo API | Weather app fetches real conditions for your GPS location | apps/os/src/os/apps/Weather.tsx |
| localStorage | Persistent state for Notes, Calendar reminders, SQL history, theme, wallpaper | across all apps |
| GitHub GraphQL API | Guestbook entries stored and fetched via GitHub Discussions | apps/os/src/os/apps/GuestbookApp.tsx |
| Layer | Tech |
|---|---|
| Frontend | React 18, TypeScript, Vite, Tailwind CSS, TanStack Router |
| UI Kit | @yakubka/retro-ui (npm, Storybook, tsup) |
| WASM | Rust (raycaster, photo filters, formula engine) |
| Emulator | C/C++ CHIP-8 compiled to WASM |
| API | Python FastAPI, REST + GraphQL (Strawberry) + gRPC-web |
| Gateway | Go, high-throughput API gateway |
| Realtime | Elixir/Phoenix, WebSocket, CRDT sync (Yjs) |
| Queue | Celery + RabbitMQ / Redis Streams |
| Orchestration | Dagster, ETL DAG with live status |
| Data | Postgres, DuckDB-WASM, SQLite-WASM (wa-sqlite), dbt |
| Cache | Redis |
| Observability | Prometheus, Grafana, Loki, Tempo, OpenTelemetry, Sentry |
| Infra | Docker Compose, Kubernetes, Helm, Terraform, Nix flake |
pnpm workspaces + Turborepo:
retro_aesthetics/
apps/
os/ React/TS retro desktop (Vite, TanStack Router)
packages/
retro-ui/ Win95 UI kit: Window, Button, Icon, Taskbar, Dialog
Storybook, tsup build, published as @yakubka/retro-ui
crates/
retro-wasm/ Rust crate compiled to WASM
emulators/
chip8/ C/C++ CHIP-8 emulator compiled to WASM
api/ Python serverless functions (Vercel, production)
services/
api/ Python FastAPI (docker-compose, REST + GraphQL + gRPC)
worker/ Celery worker
orchestrator/ Dagster ETL orchestration
gateway/ Go API gateway
realtime/ Elixir/Phoenix (chat, presence, CRDT)
data/ dbt models, ETL scripts, Great Expectations checks
infra/ docker-compose, k8s manifests, Helm chart, Terraform
40+ retro apps:
| Category | Apps |
|---|---|
| Productivity | Word, Notes, Calendar, Calculator, Pastebin, Clipboard |
| Media | Music Player, Media Player, Voice Recorder, Photo Booth, Gallery |
| Dev Tools | SQL Playground, Python Terminal (Pyodide), Terminal, Redis Demo, ETL Viewer |
| Creative | Paint, Color Picker, Raycaster (3D) |
| System | Control Panel, System Monitor, My Computer, Task Manager |
| Games | Snake, Solitaire, Minesweeper, DOOM (WASM), CHIP-8 Emulator |
| Social | Guestbook, Contact, Readme, About |
| Network | Weather, I.E. Browser, Error Cascade |
| Package | Registry | Status |
|---|---|---|
@yakubka/retro-ui |
npm + GitHub Packages | in progress |
Requires Node 20+ and pnpm (via Corepack):
corepack enable
pnpm install
pnpm dev # apps/os on localhost:5173pnpm lint
pnpm typecheck
pnpm test
pnpm build
pnpm --filter @yakubka/retro-ui storybookFull stack (Phase 2+):
docker compose up # Postgres, Redis, FastAPI, Go, Elixir, Kafka, GrafanaGitHub Actions are disabled (billing-locked account). Build gates run in Vercel:
- Vercel build command runs
pnpm turbo run build --filter=@yakubka/os.... Deploy fails if build fails. The badge at the top reflects production status. - Husky + lint-staged run ESLint, Prettier, ruff, and TypeScript checks on staged files before each commit.
.github/workflows/*.ymlareworkflow_dispatch-only (manual, optional).
| What | Where |
|---|---|
apps/os (frontend) |
Vercel |
api/ (Python serverless) |
Vercel |
| Postgres, Redis, FastAPI, Go, Elixir, Kafka, Dagster, Grafana | docker-compose locally, VPS/Railway/Fly in production |
Vercel does not host long-running services or stateful infrastructure. Everything else runs via docker-compose.
Built phase by phase:
| Phase | Status | What |
|---|---|---|
| F1 | done | pnpm/turborepo monorepo, retro-ui + Storybook, Husky, Vercel build gate |
| F2 | in progress | FastAPI (REST + GraphQL) + Postgres + Redis + docker-compose, SQL Playground (Postgres + DuckDB/SQLite-WASM) |
| F3 | planned | Rust raycaster + formula engine (WASM), CHIP-8 emulator (C to WASM) |
| F4 | planned | RabbitMQ/Celery queue + Dagster ETL/DAG + data quality, Task Manager on real metrics |
| F5 | planned | Observability: Prometheus, Grafana, Loki, Tempo, OpenTelemetry, Sentry |
| F6 | planned | Elixir realtime: chat, presence, CRDT multiplayer, whiteboard |
| F7 | planned | Auth (OAuth + JWT + RBAC), Go gateway, gRPC-web, feature flags, Kafka streaming |
| F8 | planned | E2E/property/mutation tests, package publishing, SBOM/signing, Terraform/k8s/Helm/Nix, LLM Clippy (RAG), PWA/a11y/Lighthouse |
| yakubka | Yokubjon Nurullaev |
| IbrokhimN | Ibragim Nurullayev |