Dennis Kinuthia

- TypeScript23%
- JavaScript23%
- CSS20%
- HTML12%
- Shell3%
- Python3%
- C2%
- EJS1%
Vite
React
Expo
Node
TypeScript
NestJS
Tailwind
Express
Fastify
GraphQL
Apollo
React Query
Deno
SQLite
PostgreSQL
MongoDB
Firebase
Supabase
Pocketbase
inventory-management
last updated
Typescript End-to-end type-safe inventory management system built with Hono.js, React, PostgreSQL, and Drizzle ORM. Features OpenAPI docs, audit logging, and role-based access.
- drizzle-orm
- honojs
- kubb
- nodejs
my-property-manager
last updated
Property management dashboard with vite , tanstack and pocketbase
- pocketbase
- react
- typescript
CoLabs-Frontend
last updated
Frontend Repo for the CoLabs project
typed-pocketbase
last updated
Add types to the PocketBase JavaScript SDK
- npm
- pocketbase
- tsup
- typescript
savannah-designs
last updated
Landing page for an interior designer
- framer-motion
- nextjs15
- react
- tailwindcss
th
s
Private project
last updated
savannah-designs
last updated
Landing page for an interior designer
- framer-motion
- nextjs15
- react
- tailwindcss
How to get the Oauth providre access tokens from next auth/authjs
Modify your nextauth client and add a callbacks section that will get the access token from the...
read morePublished at:
2/20/2025How to select oauth scopes in next-auth / authjs
You can select the scopes you want to request from GitHub/your oauthprovider in the login page, and...
read morePublished at:
2/20/2025React devs KE 🇰🇪 Meetup February 2025 | Crafting Reusable Code with React & TypeScript: From Design to NPM
slides used in the presentation building the generic component In this example we'll use...
read morePublished at:
2/2/2025Cookies auto clearing after browser refresh issue , CORS related express cookies issue
This error is a combination of CORS issues and incorrect cookie settings. To resolve you need to set...
read morePublished at:
1/12/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>;
}