
Dennis Kinuthia
FullStack Web Developer
I create fast, accessible, and modern web applications with TypeScript, React, and Next.js. Based in Nairobi, Kenya, I'm passionate about developer experience and building elegant solutions to complex problems.
Certificate verification: Scan the QR code or visit
this linkMy Projects
moggin
last updated
a productivity tracking app with an android homescreen widget with jetpack compose glance
- expo
- jetpack-compose
- react-native
linux-setup-scripts-and-config
last updated
collection of bash scripts i use to setup linux boxes
- bash
π¨ TanStack Start SSR-Friendly Theme Provider
A complete theme management system for React applications with SSR support! β¨ π...
read morePublished at:
7/25/2025Building Android Widgets in Expo with Custom Native Modules
A guide to creating Android home screen widgets using Expo modules, complete with state management,...
read morePublished at:
7/15/2025Setting Up Android Studio on Linux for React Native (Expo) Development
This comprehensive guide will walk you through installing and configuring Android Studio on Linux...
read morePublished at:
7/15/2025vite-plugin-graphql-usage
π Spent 5 hours automating a 5-minute task... and I regret nothing! At work, I kept finding myself...
read morePublished at:
5/26/2025
Adding Typings for JSON parse
Technique for making JSON parse emit the input object type instead of any
const obj = {
a: 'hello',
b: 1,
c: undefined,
d: {
toJSON() {
return 42;
}
},
e: () => console.log('hi from e')
}
const str = JSON.stringify(obj);//?
// ^?
const parsed = JSON.parse(str);
// ^?
writePersonObject('');
function writePersonObject(str: Stringified<{firstname: string, lastname: string}>) {
}
type JsonifiedValue<T> = T extends string | number | null | boolean
? T
: T extends {toJSON(): infer R} ? R
: T extends undefined | ((...args: any[]) => any) ? never
: T extends object ? JsonifiedObject<T>
: never;
type JsonifiedObject<T> = {
[Key in keyof T as [JsonifiedValue<T[Key]>] extends [never] ? never : Key]: JsonifiedValue<T[Key]>
}
parsed.b
type Stringified<ObjType> = string & {source: ObjType};
interface JSON {
stringify<T>(value: T, replacer?: null | undefined, space?: string | number): Stringified<T>;
parse<T>(str: Stringified<T>, replacer?: null | undefined): JsonifiedObject<T>;
}