Skip to content
View jensdev's full-sized avatar
  • Craftzing
  • Belgium

Block or report jensdev

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
jensdev/README.md

jensdev

TypeScript at Craftzing, Belgium. Expo apps and the APIs behind them.

Mostly I care that the types are honest at the boundary. On the API side that means generating them from a TypeSpec contract instead of maintaining them by hand. On the Expo side it means checking the TypeScript surface against what the Swift and Kotlin actually do β€” when they disagree, the types are the bug.

Working with TypeScript Β· Expo Β· React-Native Β· TypeSpec / OpenAPI Β· Zod Β· Effect Β· ts-pattern Β· NestJS

Recent upstream work

  • expo/expo β€” anchor support for Apple Maps annotations, and two fixes to iOS camera barcode scanning where the ZXing fallback path disagreed with AVFoundation on type strings
  • microsoft/typespec β€” a dropped discriminator.mapping entry when the first union variant caused a circular emit
  • react-native-passkey β€” Android Credentials 1.6.0 / Android 15 support, and realigning the TypeScript types with what the native implementations actually do
  • facebook/react-native β€” custom fonts rendering the heaviest face on iOS Fabric when combined with an explicit fontWeight

How I like to build

  • Contract-first. The API is authored in TypeSpec, compiled to OpenAPI, and the types, Zod schemas, controller interfaces and SDK are generated from it β€” implementation and docs can't drift apart.
  • Typed domains. DDD and hexagonal ports & adapters, making illegal states unrepresentable rather than validating after the fact.
  • Architecture you can read. C4 levels as Mermaid in the repo, updated in the same PR as the code.
  • Declarative machines. Fedora + mise + chezmoi: a laptop is one command from ready.

Pinned Loading

  1. architecture-as-code architecture-as-code Public

  2. dotfiles dotfiles Public

    Shell

  3. effect-cats effect-cats Public

    TypeScript

  4. mise-bootstrap mise-bootstrap Public

    Shell