Tech Stack

Technology choices and architecture across all projects.

iOS Stack

SwiftUI + Swift
├── @Observable / @Published patterns
├── NavigationStack (iOS 17+)
├── CoreData / UserDefaults for persistence
└── Xcode project-based builds

Key Choices

ChoiceRationale
SwiftUI onlyModern, declarative UI framework
iOS 17+ targetAccess to @Observable, latest APIs
No external depsSimplicity, no package management
Value typesPredictable state, easy testing

iOS Projects

  • Poker
  • MadLibs
  • Quest-Forge
  • Dice

Web Stack

React 19 + TypeScript 5.9 + Vite
├── Vitest for testing
├── Tailwind CSS for styling
├── Express (backend where needed)
├── Firebase (auth, realtime)
└── Web Audio API (SoundBoard)

Key Choices

ChoiceRationale
TypeScript strictType safety, better tooling
ViteFast dev server, modern bundler
VitestJest-compatible, fast, ESM native
TailwindUtility-first, consistent styling

Web Projects

  • Eliza
  • SoundBoard
  • Correspondence Chess Pro
  • Walkie-Talkie

General / Desktop Stack

ProjectStack
JPTauri 2.x + React 19 + TanStack Router
Stock Art CollectorPython + Click + aiosqlite + Pydantic
AuraReact + Vite + TypeScript + Tailwind CSS
PlaygroundMixed (research environment)

Infrastructure

gloriously-awesome-system (GAS)
├── Meta-prompting, context engineering and spec-driven development
├── Agent configuration
├── Planning templates
└── Session continuity for Claude Code

DevOps

ToolPurpose
GitHub ActionsCI/CD automation
GitHub PagesStatic site hosting
HuskyPre-commit hooks
TruffleHogSecret scanning

Testing Strategy

iOS

  • XCTest framework
  • xcodebuild for CI
  • Pre-push hook enforcement

Web

  • Vitest with coverage
  • React Testing Library
  • Pre-commit validation

Code Quality

StandardEnforcement
TypeScript stricttsconfig
ESLint rulesFlat config
ARIA accessibilityComponent review
Dark theme defaultDesign system

Architecture Patterns

Cross-Platform

PatterniOSWeb
State management@ObservableContext + Reducer
NavigationNavigationStackTanStack Router / React Router
PersistenceUserDefaultslocalStorage
TestingXCTestVitest

Shared Principles

  • TDD first - Tests before implementation
  • Atomic commits - One change per commit
  • Foundation-first - Setup before features
  • Co-located styles - CSS with components