drkn.dev

Tools

Stack

Technologies I reach for, and what I use them for.

Languages

TypeScript
Main language: the SwapKit UI kit, React Native Paper theme types and this site.
JavaScript
Most of my earlier public projects, from Ember apps to React and RxJS experiments.
Elixir
Phoenix backends with GraphQL for side projects in 2019 and 2020.

Web & mobile

React
Swap widget and @swapkit/ui package for SwapKit, plus several open-source apps.
React Native
15 merged pull requests to React Native Paper, Callstack's Material Design library.
Tailwind CSS
Prefixed Tailwind build for the embeddable SwapKit widget, and this site.
Ember.js
Community projects and a testing guide contribution from 2017 to 2020, and the Recipe Book app.
Astro
This site: pages render on the server and only two React islands hydrate.

Focus areas

Design systems and theming
Material You theming for React Native Paper, typed themes in react-theme-provider, and the SwapKit UI kit.
Developer experience
Migrated React Native Paper's docs to Docusaurus; built playgrounds and a custom Bun build plugin for SwapKit.
App architecture
Code audits, architecture design and a long-term refactoring strategy for enterprise clients at Callstack.
Team leadership and mentoring
Led teams for enterprise clients at Callstack, mentored developers and ran knowledge-sharing workshops.
Automated testing
Automated application tests at Selleo, and a contribution to a community Ember testing guide.

Backend & cloud

REST APIs and integrations
RESTful APIs and integrations at Selleo and for freelance clients.
Laravel
RESTful APIs and web solutions as a freelancer from 2017 to 2019.
AWS and Firebase
Cloud solutions and database management for freelance clients.

Tooling & platform

Bun
Build tooling for SwapKit's UI package and the package manager for this site.
Vite and Next.js
Playgrounds for the SwapKit swap widget, and Vite-based React starters.
Cloudflare Workers
Hosts this site: static assets plus one Worker endpoint for the ask box.
TypeSafe Jev
Powers the ask box here with typed yes/no and choice judgments instead of generated text.