Full-stack engineer Β· AI tooling, bot platforms, and AI-integrated web apps (backend + frontend)
Source code for these projects is private. Architecture diagrams are hosted here in my profile repo so visitors can explore the design without repo access.
| Project | Lang | Description | Architecture |
|---|---|---|---|
| neyobytes-whatsapp-agent | JS |
WhatsApp Bot SaaS platform for creating AI-powered WhatsApp bots β business inquiries, customer support, and automated workflows. Multi-tenant, multi-LLM provider routing, Stripe billing. | π Diagrams Β· DeepWiki |
| neyobytes-jemput | TS |
Digital wedding invitation platform for the Malaysian market. Couples create beautiful, themed digital invitations. π Live | π Diagrams Β· DeepWiki |
| neyobytes-auto-invoice | TS |
AI-assisted Malaysian e-Invoice workflow for SMEs β scan invoices, review official MyInvois fields and code tables, record purchases, and prepare compliant UBL submissions. | TOP SECRET :) |
| Project | Lang | Description | Architecture |
|---|---|---|---|
| pi-fabric-role-router | TS |
Community Pi extension adding centralized role-based model, thinking, and tool routing to Pi Fabric, with roles.run() and roles.spawn() dispatch. |
README |
| pi-pool-router | TS |
In-process extension for pi/omp that pools multiple LLM backends behind a single provider β cache-affinity consistent hashing, failover, health checks, and latency-aware routing. | π Diagrams Β· DeepWiki |
| discord-rhythm-bot | TS |
Discord audio bot streaming from YouTube & Soundcloud via play-dl. MongoDB-backed user/guild history with priority playlist queue. β 1 | π Diagrams Β· DeepWiki |
| pi-xiaomi-mimo-provider | TS |
Pi plugin integrating Xiaomi MiMo models as a provider for the pi coding agent. | π Diagrams Β· DeepWiki |
| pi-advisor | TS |
Pi extension that attaches a second model as an advisor β it peer-reviews every turn of the main agent, explores the workspace with a read-only toolset, and injects <advisory> notes (nit / concern / blocker). Ports the advisor logic from can1357/oh-my-pi to stock pi. |
π Diagrams Β· DeepWiki |
| pi-vision-handoff | TS |
omp & pi code compatible fork of pi-vision-handoff β gives text-only models vision by proxying image input through a vision-capable model. Fixed omp runtime API mismatches (getApiKeyAndHeaders β getApiKey, broken /compat import). |
INSTALL.md |
| BlackForest-BSC20 | Solidity |
BSC-20 token contract for BlackForest on the Binance Smart Chain. | π Diagrams Β· DeepWiki |
| YearnDeployerAlerterBot | Java |
Monitors Yearn deployer activity on Etherscan and auto-posts alerts to Twitter. β 2 | π Diagrams Β· DeepWiki |
| PR | Project | Description |
|---|---|---|
| #1166 | codex-lb | Add GPT-5.6 Responses Lite support β preserve additional_tools input items + reconstruct the x-openai-internal-codex-responses-lite header when forwarding |
| #4 | pi-makora-provider | Fix: strip tool_calls from assistant messages for GLM models to prevent ZAI/vLLM 400 crash |
| #57 | rn-qr-generator | Barcode scanner enhancement via retry with inset and zoom |
| #1599 | react-native-share | Add base64 image support under linkMetadata for iOS custom sharing icon |
| #113 | octofriend | Add @ file autocomplete suggestions |
| #7 | streamvault | Make Comet streams work in StreamVault β pad base64 config encoding + parse Comet's real metadata fields (filename, videoSize, bingeGroup) instead of Torrentio's shape |
| #4253 | date-fns | Add a style option to formatDistanceStrict: long (default, unchanged) uses the locale words; narrow renders |
| #4254 | date-fns | Add a new function formatDurationCustom(duration, labels, options?) that renders a Duration using a custom |
| #4255 | date-fns | Add two functions: addDurations(duration1, duration2) sums two Duration objects component wise (each unit |
| #4256 | date-fns | Add normalizeDuration(duration) that carries overflow units upward within their natural ranges: seconds to |
| #4257 | date-fns | Add formatDatetimeLocal(date, options?) that formats a date as YYYY MM DDTHH:mm by default, with optional { |
| #1906 | es-toolkit | Add unFlattenObject(object, {delimiter='.'}) that unflattens a single level object with delimiter separated |
| #1907 | es-toolkit | Add four composable helpers: exponentialBackoff({baseDelay, maxDelay, multiplier}) returns a delay function |
| #1908 | es-toolkit | Add dedent(str) that strips a leading newline + trailing whitespace only line, computes the minimum common |
| #1909 | es-toolkit | Add capitalCase(str) that capitalises the first letter of each word and lower cases the rest, joining words |
| #1910 | es-toolkit | Add memoizePromise(fn, options) that caches the in flight Promise (so concurrent calls with the same |
| #1911 | es-toolkit | Add cartesianProductGenerator(...arrs), a generator that yields each tuple lazily in the same lexicographic |
| #1912 | es-toolkit | Add call(fn) which invokes fn and returns its result (a named IIFE replacement), and callAsync(fn) which |
| #1913 | es-toolkit | Add normalize(value, min, max) returning (value min) / (max min). |
| #1914 | es-toolkit | Add throttleAsync(func, {signal}) that only allows a new invocation when the previous one has completed. |
| #1915 | es-toolkit | Add flowAsync(...funcs): the async counterpart of flow: that awaits each step's result before passing it to |
| #4258 | date-fns | Add nthDayOfMonth(date, dayOfWeek, n) returning the Date of the nth occurrence of dayOfWeek (0=Sunday |
| #4259 | date-fns | Add formatDurationClock(duration, {format, delimiter}) that renders a Duration as a colon separated, zero |
| #4260 | date-fns | Add convertMomentFormat(momentFormat) that converts a moment.js format string to the equivalent date fns |
| #1916 | es-toolkit | Add deepFreeze(obj) that recursively Object.freezes every nested object/array so no property (including |
| #1917 | es-toolkit | Add chain(...iterables): a lazy generator that yields every element of every iterable, in order, without an |
| #1918 | es-toolkit | Add firstValue(iterable) that pulls a single value via the iterator protocol |
| #1919 | es-toolkit | Add hashObject(value) that returns a deterministic 8 char hex hash of a stable serialization: object keys |
| #4261 | date-fns | Add addDuration(durationA, durationB) and subDuration(durationA, durationB) that, per unit |
| #4262 | date-fns | Add compareDurationsAsc(left, right) returning 1/0/1 (shorter/equal/longer) and compareDurationsDesc(left, |
| #1920 | es-toolkit | Add debounceAsync(func, debounceMs, { signal? |
| #4263 | date-fns | Add parseISODuration(duration): parses P3Y6M4DT12H30M5S into { years:3, months:6, days:4, hours:12, |
| #4264 | date-fns | Add getAge(dateOfBirth, { today }): built on intervalToDuration: returning { years, months, days }, the |
| #4265 | date-fns | Add isBusinessDay(date, { holidays?: Date[], weekStartsOn? |
| #4266 | date-fns | Add isISOMatch(value, { representation? |
| #4267 | date-fns | Add scaleDuration(duration, multiplier): multiplies every present unit of the duration by the multiplier, |
| #1921 | es-toolkit | Add coalesce(key, fn): if a call with key is already in flight, return its promise; otherwise run fn() |
| #3959 | faker | Add an optional exclude option (enumValue(enumObject, { exclude: [...] })): values in exclude are not |
| #3960 | faker | Add a `casing?: 'lower' |
| #3961 | faker | Add an optional { depth, root } to directoryPath: when depth is omitted, behavior is unchanged (a |
| #3962 | faker | Add an optional { excludeEmoji?: boolean } to person.bio: when true, the generated bio is stripped of |
| #3963 | faker | Allow the value of each entry to be a () => T function; when the entry is selected, the function is |
| #3964 | faker | Add an optional { useAbbreviated?: boolean } to location.street: when true, common USPS style street |
| #3965 | faker | Add an optional `{ weighting?: 'female' |
| #3966 | faker | Add an optional { sexType?: SexType }: when omitted, behavior is unchanged (uniform arrayElement). |
| #1922 | es-toolkit | Add isTreeData(value, { childrenKey? |
| #1923 | es-toolkit | Add an optional { map?: boolean } (default false, unchanged behavior): when true, flattenObject returns a |
| #1924 | es-toolkit | Add groupByMap, keyByMap, countByMap: Map returning variants whose keys can be of any type (including |
| #1925 | es-toolkit | Add medianBigint(nums: bigint[]): bigint: the middle value for odd length arrays; for even length, the |
| #5029 | react-native-paper | Add Autocomplete text input with filtered dropdown, custom filter predicate, empty state, disabled state, and public type exports |
| #5030 | react-native-paper | Add Material 3 NavigationRail with controlled active destination, indicator pill, label visibility modes, alignment, and header slot |
| #5031 | react-native-paper | Extend Tooltip with a rich mode: optional heading, multi line supporting text, two action buttons, and persistent dismiss behaviour |
| #5032 | react-native-paper | Add static determinate circular progress indicator with configurable size, stroke, colors, and accessibility value |
| #5033 | react-native-paper | Add Material 3 slider with clamped bounds, step snapping, accessibility value, disabled dimming, and theme colors |
| #5034 | react-native-paper | Add Material 3 Tabs with primary and secondary variants, active indicator, badges, disabled tabs, and scrollable layout |
| #5035 | react-native-paper | Add Material 3 calendar date picker with month navigation, full six week grid, min and max disabling, and accessibility labels |
| #5036 | react-native-paper | Add Material 3 time picker with hour and minute steppers, AM/PM toggle for 12 hour mode, wrap around, and optional minute step |
| #4252 | date-fns | Add a style option to formatDuration with long, narrow, and short unit label styles plus a per unit formatter map, keeping default output |



