View datj9's full-sized avatar
  • Ho Chi Minh City, Viet Nam
  • 10:36 (UTC +07:00)

Block or report datj9

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
datj9/README.md

Dat Nguyen

Full-stack Engineer · fintech systems & AI developer tooling · Ho Chi Minh City, VN

WebsiteCVLinkedInEmail


💫 About me

6+ years building products end to end — currently Full Stack Engineer at Ringkas (since Jan 2023), on core fintech for mortgage and loan processing in Indonesia:

  • Built the LOS (loan origination system) from scratch, improving performance and UX over the legacy system
  • Built and maintained the credit information service integrating Indonesia's credit bureau (CLIK)
  • Designed a multi-channel notification system — email (SendGrid, Mailchimp, Mailgun), WhatsApp (Infobip, Qiscus), Discord
  • Improved large-file upload into partner systems

Before Ringkas: insurtech claims & onboarding at Papaya Insurtech, web/mobile core modules at Vision-IO Vietnam, plus agency and freelance work from 2020.

Outside work I build AI developer tooling — agent harnesses, MCP servers, LLM gateways, local-first CLIs. Most of it started as a tool I wanted for my own workflow.

🚀 What I'm building

ProjectWhat it doesStack
loomgraphCompose Claude Code, Codex, and OpenCode runs into a checkpointed graph — resumable, budgeted, auditable. A long run that dies at 90% resumes instead of restarting.TypeScript
ownbenchMine your own repo's git history into a private, re-runnable coding eval — race local and frontier models on bugs that actually happened in your codebase.Python
crossagentGet a second opinion from another AI coding agent before you decide — resumable cross-agent sessions from inside Claude Code, Codex, Cursor, Cline, OpenCode.Python
enclaveSelf-hostable artifact generation & hosting with three privacy levels: only you, your org, or a revocable share link.TypeScript · Node.js
tech-bytesPluggable daily tech digest — releases, HN, GitHub trending, summarized by any LLM and published as a static site. Zero-cloud default (GH Pages + Actions cron).Astro · TypeScript
simple-mcpTurn any API into a curated MCP server from a single config file.Shell · MCP
dat-devkitPersonal Claude Code engineering harness — clean-code rules, security guards, git discipline, PR workflow, skills.Shell · Claude Code
plan-syncShare task state across Claude Code / Codex sessions via git.TypeScript
cloudcompassCloud learning platform for engineers — learn, compare, and practice AWS, GCP, and Azure.TypeScript · Next.js
ai-engineerOpen-source AI engineering curriculum for software engineers — 23 lessons, 3 entry tracks, 2 portfolio projects.Python

💻 Tech stack

Languages

TypeScriptJavaScriptPythonGoRustSQL

Backend

Node.jsExpress.jsNestJSFastifyDjangoFastAPIGraphQLApollo-GraphQL

Frontend

ReactNext JSReact NativeReduxAstroTailwindCSSAnt-Design

Data

PostgresMongoDBRedisSQLite

Cloud & infra

AWSAWS LambdaCloudflare WorkersDockerVercelNginxGitHub Actions

AI & agents

ClaudeOpenAIMCPAgents

Quality & observability

JestPlaywrightSentryESLint

🎓 Certifications

📚 Currently into

Agentic system design · LLM gateways & token routing · distributed-systems patterns (idempotency, retries, queues) · Rust — I write some of it up on dat-nguyen.me/blog.

📊 GitHub stats

Stats

Top languagesMost commit language


Get in touch →

Pinned Loading

  1. crossagentcrossagentPublic

    Get a second opinion from another AI coding agent before you decide.

    Python 2

  2. enclaveenclavePublic

    Self-hostable artifact hosting with three privacy levels: only you, your organization, or a revocable share link.

    TypeScript

  3. loomgraphloomgraphPublic

    Compose Claude Code, Codex, and OpenCode runs into a checkpointed graph - resumable, budgeted, auditable.

    TypeScript

  4. ownbenchownbenchPublic

    Mine your own repo's git history into a private, re-runnable coding eval for local and frontier LLMs.

    Python

  5. CommandOSSLabs/dotmaskCommandOSSLabs/dotmaskPublic

    JavaScript 3 3

  6. flowmentumzzz/commute-iqflowmentumzzz/commute-iqPublic

    TypeScript

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
View datj9's full-sized avatar
  • Ho Chi Minh City, Viet Nam
  • 10:36 (UTC +07:00)

Block or report datj9

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
datj9/README.md

Dat Nguyen

Full-stack Engineer · fintech systems & AI developer tooling · Ho Chi Minh City, VN

WebsiteCVLinkedInEmail


💫 About me

6+ years building products end to end — currently Full Stack Engineer at Ringkas (since Jan 2023), on core fintech for mortgage and loan processing in Indonesia:

  • Built the LOS (loan origination system) from scratch, improving performance and UX over the legacy system
  • Built and maintained the credit information service integrating Indonesia's credit bureau (CLIK)
  • Designed a multi-channel notification system — email (SendGrid, Mailchimp, Mailgun), WhatsApp (Infobip, Qiscus), Discord
  • Improved large-file upload into partner systems

Before Ringkas: insurtech claims & onboarding at Papaya Insurtech, web/mobile core modules at Vision-IO Vietnam, plus agency and freelance work from 2020.

Outside work I build AI developer tooling — agent harnesses, MCP servers, LLM gateways, local-first CLIs. Most of it started as a tool I wanted for my own workflow.

🚀 What I'm building

ProjectWhat it doesStack
loomgraphCompose Claude Code, Codex, and OpenCode runs into a checkpointed graph — resumable, budgeted, auditable. A long run that dies at 90% resumes instead of restarting.TypeScript
ownbenchMine your own repo's git history into a private, re-runnable coding eval — race local and frontier models on bugs that actually happened in your codebase.Python
crossagentGet a second opinion from another AI coding agent before you decide — resumable cross-agent sessions from inside Claude Code, Codex, Cursor, Cline, OpenCode.Python
enclaveSelf-hostable artifact generation & hosting with three privacy levels: only you, your org, or a revocable share link.TypeScript · Node.js
tech-bytesPluggable daily tech digest — releases, HN, GitHub trending, summarized by any LLM and published as a static site. Zero-cloud default (GH Pages + Actions cron).Astro · TypeScript
simple-mcpTurn any API into a curated MCP server from a single config file.Shell · MCP
dat-devkitPersonal Claude Code engineering harness — clean-code rules, security guards, git discipline, PR workflow, skills.Shell · Claude Code
plan-syncShare task state across Claude Code / Codex sessions via git.TypeScript
cloudcompassCloud learning platform for engineers — learn, compare, and practice AWS, GCP, and Azure.TypeScript · Next.js
ai-engineerOpen-source AI engineering curriculum for software engineers — 23 lessons, 3 entry tracks, 2 portfolio projects.Python

💻 Tech stack

Languages

TypeScriptJavaScriptPythonGoRustSQL

Backend

Node.jsExpress.jsNestJSFastifyDjangoFastAPIGraphQLApollo-GraphQL

Frontend

ReactNext JSReact NativeReduxAstroTailwindCSSAnt-Design

Data

PostgresMongoDBRedisSQLite

Cloud & infra

AWSAWS LambdaCloudflare WorkersDockerVercelNginxGitHub Actions

AI & agents

ClaudeOpenAIMCPAgents

Quality & observability

JestPlaywrightSentryESLint

🎓 Certifications

📚 Currently into

Agentic system design · LLM gateways & token routing · distributed-systems patterns (idempotency, retries, queues) · Rust — I write some of it up on dat-nguyen.me/blog.

📊 GitHub stats

Stats

Top languagesMost commit language


Get in touch →

Pinned Loading

  1. crossagentcrossagentPublic

    Get a second opinion from another AI coding agent before you decide.

    Python 2

  2. enclaveenclavePublic

    Self-hostable artifact hosting with three privacy levels: only you, your organization, or a revocable share link.

    TypeScript

  3. loomgraphloomgraphPublic

    Compose Claude Code, Codex, and OpenCode runs into a checkpointed graph - resumable, budgeted, auditable.

    TypeScript

  4. ownbenchownbenchPublic

    Mine your own repo's git history into a private, re-runnable coding eval for local and frontier LLMs.

    Python

  5. CommandOSSLabs/dotmaskCommandOSSLabs/dotmaskPublic

    JavaScript 3 3

  6. flowmentumzzz/commute-iqflowmentumzzz/commute-iqPublic

    TypeScript

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
View datj9's full-sized avatar
  • Ho Chi Minh City, Viet Nam
  • 10:36 (UTC +07:00)

Block or report datj9

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
datj9/README.md

Dat Nguyen

Full-stack Engineer · fintech systems & AI developer tooling · Ho Chi Minh City, VN

WebsiteCVLinkedInEmail


💫 About me

6+ years building products end to end — currently Full Stack Engineer at Ringkas (since Jan 2023), on core fintech for mortgage and loan processing in Indonesia:

  • Built the LOS (loan origination system) from scratch, improving performance and UX over the legacy system
  • Built and maintained the credit information service integrating Indonesia's credit bureau (CLIK)
  • Designed a multi-channel notification system — email (SendGrid, Mailchimp, Mailgun), WhatsApp (Infobip, Qiscus), Discord
  • Improved large-file upload into partner systems

Before Ringkas: insurtech claims & onboarding at Papaya Insurtech, web/mobile core modules at Vision-IO Vietnam, plus agency and freelance work from 2020.

Outside work I build AI developer tooling — agent harnesses, MCP servers, LLM gateways, local-first CLIs. Most of it started as a tool I wanted for my own workflow.

🚀 What I'm building

ProjectWhat it doesStack
loomgraphCompose Claude Code, Codex, and OpenCode runs into a checkpointed graph — resumable, budgeted, auditable. A long run that dies at 90% resumes instead of restarting.TypeScript
ownbenchMine your own repo's git history into a private, re-runnable coding eval — race local and frontier models on bugs that actually happened in your codebase.Python
crossagentGet a second opinion from another AI coding agent before you decide — resumable cross-agent sessions from inside Claude Code, Codex, Cursor, Cline, OpenCode.Python
enclaveSelf-hostable artifact generation & hosting with three privacy levels: only you, your org, or a revocable share link.TypeScript · Node.js
tech-bytesPluggable daily tech digest — releases, HN, GitHub trending, summarized by any LLM and published as a static site. Zero-cloud default (GH Pages + Actions cron).Astro · TypeScript
simple-mcpTurn any API into a curated MCP server from a single config file.Shell · MCP
dat-devkitPersonal Claude Code engineering harness — clean-code rules, security guards, git discipline, PR workflow, skills.Shell · Claude Code
plan-syncShare task state across Claude Code / Codex sessions via git.TypeScript
cloudcompassCloud learning platform for engineers — learn, compare, and practice AWS, GCP, and Azure.TypeScript · Next.js
ai-engineerOpen-source AI engineering curriculum for software engineers — 23 lessons, 3 entry tracks, 2 portfolio projects.Python

💻 Tech stack

Languages

TypeScriptJavaScriptPythonGoRustSQL

Backend

Node.jsExpress.jsNestJSFastifyDjangoFastAPIGraphQLApollo-GraphQL

Frontend

ReactNext JSReact NativeReduxAstroTailwindCSSAnt-Design

Data

PostgresMongoDBRedisSQLite

Cloud & infra

AWSAWS LambdaCloudflare WorkersDockerVercelNginxGitHub Actions

AI & agents

ClaudeOpenAIMCPAgents

Quality & observability

JestPlaywrightSentryESLint

🎓 Certifications

📚 Currently into

Agentic system design · LLM gateways & token routing · distributed-systems patterns (idempotency, retries, queues) · Rust — I write some of it up on dat-nguyen.me/blog.

📊 GitHub stats

Stats

Top languagesMost commit language


Get in touch →

Pinned Loading

  1. crossagentcrossagentPublic

    Get a second opinion from another AI coding agent before you decide.

    Python 2

  2. enclaveenclavePublic

    Self-hostable artifact hosting with three privacy levels: only you, your organization, or a revocable share link.

    TypeScript

  3. loomgraphloomgraphPublic

    Compose Claude Code, Codex, and OpenCode runs into a checkpointed graph - resumable, budgeted, auditable.

    TypeScript

  4. ownbenchownbenchPublic

    Mine your own repo's git history into a private, re-runnable coding eval for local and frontier LLMs.

    Python

  5. CommandOSSLabs/dotmaskCommandOSSLabs/dotmaskPublic

    JavaScript 3 3

  6. flowmentumzzz/commute-iqflowmentumzzz/commute-iqPublic

    TypeScript

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
View datj9's full-sized avatar
  • Ho Chi Minh City, Viet Nam
  • 10:36 (UTC +07:00)

Block or report datj9

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
datj9/README.md

Dat Nguyen

Full-stack Engineer · fintech systems & AI developer tooling · Ho Chi Minh City, VN

WebsiteCVLinkedInEmail


💫 About me

6+ years building products end to end — currently Full Stack Engineer at Ringkas (since Jan 2023), on core fintech for mortgage and loan processing in Indonesia:

  • Built the LOS (loan origination system) from scratch, improving performance and UX over the legacy system
  • Built and maintained the credit information service integrating Indonesia's credit bureau (CLIK)
  • Designed a multi-channel notification system — email (SendGrid, Mailchimp, Mailgun), WhatsApp (Infobip, Qiscus), Discord
  • Improved large-file upload into partner systems

Before Ringkas: insurtech claims & onboarding at Papaya Insurtech, web/mobile core modules at Vision-IO Vietnam, plus agency and freelance work from 2020.

Outside work I build AI developer tooling — agent harnesses, MCP servers, LLM gateways, local-first CLIs. Most of it started as a tool I wanted for my own workflow.

🚀 What I'm building

ProjectWhat it doesStack
loomgraphCompose Claude Code, Codex, and OpenCode runs into a checkpointed graph — resumable, budgeted, auditable. A long run that dies at 90% resumes instead of restarting.TypeScript
ownbenchMine your own repo's git history into a private, re-runnable coding eval — race local and frontier models on bugs that actually happened in your codebase.Python
crossagentGet a second opinion from another AI coding agent before you decide — resumable cross-agent sessions from inside Claude Code, Codex, Cursor, Cline, OpenCode.Python
enclaveSelf-hostable artifact generation & hosting with three privacy levels: only you, your org, or a revocable share link.TypeScript · Node.js
tech-bytesPluggable daily tech digest — releases, HN, GitHub trending, summarized by any LLM and published as a static site. Zero-cloud default (GH Pages + Actions cron).Astro · TypeScript
simple-mcpTurn any API into a curated MCP server from a single config file.Shell · MCP
dat-devkitPersonal Claude Code engineering harness — clean-code rules, security guards, git discipline, PR workflow, skills.Shell · Claude Code
plan-syncShare task state across Claude Code / Codex sessions via git.TypeScript
cloudcompassCloud learning platform for engineers — learn, compare, and practice AWS, GCP, and Azure.TypeScript · Next.js
ai-engineerOpen-source AI engineering curriculum for software engineers — 23 lessons, 3 entry tracks, 2 portfolio projects.Python

💻 Tech stack

Languages

TypeScriptJavaScriptPythonGoRustSQL

Backend

Node.jsExpress.jsNestJSFastifyDjangoFastAPIGraphQLApollo-GraphQL

Frontend

ReactNext JSReact NativeReduxAstroTailwindCSSAnt-Design

Data

PostgresMongoDBRedisSQLite

Cloud & infra

AWSAWS LambdaCloudflare WorkersDockerVercelNginxGitHub Actions

AI & agents

ClaudeOpenAIMCPAgents

Quality & observability

JestPlaywrightSentryESLint

🎓 Certifications

📚 Currently into

Agentic system design · LLM gateways & token routing · distributed-systems patterns (idempotency, retries, queues) · Rust — I write some of it up on dat-nguyen.me/blog.

📊 GitHub stats

Stats

Top languagesMost commit language


Get in touch →

Pinned Loading

  1. crossagentcrossagentPublic

    Get a second opinion from another AI coding agent before you decide.

    Python 2

  2. enclaveenclavePublic

    Self-hostable artifact hosting with three privacy levels: only you, your organization, or a revocable share link.

    TypeScript

  3. loomgraphloomgraphPublic

    Compose Claude Code, Codex, and OpenCode runs into a checkpointed graph - resumable, budgeted, auditable.

    TypeScript

  4. ownbenchownbenchPublic

    Mine your own repo's git history into a private, re-runnable coding eval for local and frontier LLMs.

    Python

  5. CommandOSSLabs/dotmaskCommandOSSLabs/dotmaskPublic

    JavaScript 3 3

  6. flowmentumzzz/commute-iqflowmentumzzz/commute-iqPublic

    TypeScript

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
View datj9's full-sized avatar
  • Ho Chi Minh City, Viet Nam
  • 10:36 (UTC +07:00)

Block or report datj9

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
datj9/README.md

Dat Nguyen

Full-stack Engineer · fintech systems & AI developer tooling · Ho Chi Minh City, VN

WebsiteCVLinkedInEmail


💫 About me

6+ years building products end to end — currently Full Stack Engineer at Ringkas (since Jan 2023), on core fintech for mortgage and loan processing in Indonesia:

  • Built the LOS (loan origination system) from scratch, improving performance and UX over the legacy system
  • Built and maintained the credit information service integrating Indonesia's credit bureau (CLIK)
  • Designed a multi-channel notification system — email (SendGrid, Mailchimp, Mailgun), WhatsApp (Infobip, Qiscus), Discord
  • Improved large-file upload into partner systems

Before Ringkas: insurtech claims & onboarding at Papaya Insurtech, web/mobile core modules at Vision-IO Vietnam, plus agency and freelance work from 2020.

Outside work I build AI developer tooling — agent harnesses, MCP servers, LLM gateways, local-first CLIs. Most of it started as a tool I wanted for my own workflow.

🚀 What I'm building

ProjectWhat it doesStack
loomgraphCompose Claude Code, Codex, and OpenCode runs into a checkpointed graph — resumable, budgeted, auditable. A long run that dies at 90% resumes instead of restarting.TypeScript
ownbenchMine your own repo's git history into a private, re-runnable coding eval — race local and frontier models on bugs that actually happened in your codebase.Python
crossagentGet a second opinion from another AI coding agent before you decide — resumable cross-agent sessions from inside Claude Code, Codex, Cursor, Cline, OpenCode.Python
enclaveSelf-hostable artifact generation & hosting with three privacy levels: only you, your org, or a revocable share link.TypeScript · Node.js
tech-bytesPluggable daily tech digest — releases, HN, GitHub trending, summarized by any LLM and published as a static site. Zero-cloud default (GH Pages + Actions cron).Astro · TypeScript
simple-mcpTurn any API into a curated MCP server from a single config file.Shell · MCP
dat-devkitPersonal Claude Code engineering harness — clean-code rules, security guards, git discipline, PR workflow, skills.Shell · Claude Code
plan-syncShare task state across Claude Code / Codex sessions via git.TypeScript
cloudcompassCloud learning platform for engineers — learn, compare, and practice AWS, GCP, and Azure.TypeScript · Next.js
ai-engineerOpen-source AI engineering curriculum for software engineers — 23 lessons, 3 entry tracks, 2 portfolio projects.Python

💻 Tech stack

Languages

TypeScriptJavaScriptPythonGoRustSQL

Backend

Node.jsExpress.jsNestJSFastifyDjangoFastAPIGraphQLApollo-GraphQL

Frontend

ReactNext JSReact NativeReduxAstroTailwindCSSAnt-Design

Data

PostgresMongoDBRedisSQLite

Cloud & infra

AWSAWS LambdaCloudflare WorkersDockerVercelNginxGitHub Actions

AI & agents

ClaudeOpenAIMCPAgents

Quality & observability

JestPlaywrightSentryESLint

🎓 Certifications

📚 Currently into

Agentic system design · LLM gateways & token routing · distributed-systems patterns (idempotency, retries, queues) · Rust — I write some of it up on dat-nguyen.me/blog.

📊 GitHub stats

Stats

Top languagesMost commit language


Get in touch →

Pinned Loading

  1. crossagentcrossagentPublic

    Get a second opinion from another AI coding agent before you decide.

    Python 2

  2. enclaveenclavePublic

    Self-hostable artifact hosting with three privacy levels: only you, your organization, or a revocable share link.

    TypeScript

  3. loomgraphloomgraphPublic

    Compose Claude Code, Codex, and OpenCode runs into a checkpointed graph - resumable, budgeted, auditable.

    TypeScript

  4. ownbenchownbenchPublic

    Mine your own repo's git history into a private, re-runnable coding eval for local and frontier LLMs.

    Python

  5. CommandOSSLabs/dotmaskCommandOSSLabs/dotmaskPublic

    JavaScript 3 3

  6. flowmentumzzz/commute-iqflowmentumzzz/commute-iqPublic

    TypeScript

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
View datj9's full-sized avatar
  • Ho Chi Minh City, Viet Nam
  • 10:36 (UTC +07:00)

Block or report datj9

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
datj9/README.md

Dat Nguyen

Full-stack Engineer · fintech systems & AI developer tooling · Ho Chi Minh City, VN

WebsiteCVLinkedInEmail


💫 About me

6+ years building products end to end — currently Full Stack Engineer at Ringkas (since Jan 2023), on core fintech for mortgage and loan processing in Indonesia:

  • Built the LOS (loan origination system) from scratch, improving performance and UX over the legacy system
  • Built and maintained the credit information service integrating Indonesia's credit bureau (CLIK)
  • Designed a multi-channel notification system — email (SendGrid, Mailchimp, Mailgun), WhatsApp (Infobip, Qiscus), Discord
  • Improved large-file upload into partner systems

Before Ringkas: insurtech claims & onboarding at Papaya Insurtech, web/mobile core modules at Vision-IO Vietnam, plus agency and freelance work from 2020.

Outside work I build AI developer tooling — agent harnesses, MCP servers, LLM gateways, local-first CLIs. Most of it started as a tool I wanted for my own workflow.

🚀 What I'm building

ProjectWhat it doesStack
loomgraphCompose Claude Code, Codex, and OpenCode runs into a checkpointed graph — resumable, budgeted, auditable. A long run that dies at 90% resumes instead of restarting.TypeScript
ownbenchMine your own repo's git history into a private, re-runnable coding eval — race local and frontier models on bugs that actually happened in your codebase.Python
crossagentGet a second opinion from another AI coding agent before you decide — resumable cross-agent sessions from inside Claude Code, Codex, Cursor, Cline, OpenCode.Python
enclaveSelf-hostable artifact generation & hosting with three privacy levels: only you, your org, or a revocable share link.TypeScript · Node.js
tech-bytesPluggable daily tech digest — releases, HN, GitHub trending, summarized by any LLM and published as a static site. Zero-cloud default (GH Pages + Actions cron).Astro · TypeScript
simple-mcpTurn any API into a curated MCP server from a single config file.Shell · MCP
dat-devkitPersonal Claude Code engineering harness — clean-code rules, security guards, git discipline, PR workflow, skills.Shell · Claude Code
plan-syncShare task state across Claude Code / Codex sessions via git.TypeScript
cloudcompassCloud learning platform for engineers — learn, compare, and practice AWS, GCP, and Azure.TypeScript · Next.js
ai-engineerOpen-source AI engineering curriculum for software engineers — 23 lessons, 3 entry tracks, 2 portfolio projects.Python

💻 Tech stack

Languages

TypeScriptJavaScriptPythonGoRustSQL

Backend

Node.jsExpress.jsNestJSFastifyDjangoFastAPIGraphQLApollo-GraphQL

Frontend

ReactNext JSReact NativeReduxAstroTailwindCSSAnt-Design

Data

PostgresMongoDBRedisSQLite

Cloud & infra

AWSAWS LambdaCloudflare WorkersDockerVercelNginxGitHub Actions

AI & agents

ClaudeOpenAIMCPAgents

Quality & observability

JestPlaywrightSentryESLint

🎓 Certifications

📚 Currently into

Agentic system design · LLM gateways & token routing · distributed-systems patterns (idempotency, retries, queues) · Rust — I write some of it up on dat-nguyen.me/blog.

📊 GitHub stats

Stats

Top languagesMost commit language


Get in touch →

Pinned Loading

  1. crossagentcrossagentPublic

    Get a second opinion from another AI coding agent before you decide.

    Python 2

  2. enclaveenclavePublic

    Self-hostable artifact hosting with three privacy levels: only you, your organization, or a revocable share link.

    TypeScript

  3. loomgraphloomgraphPublic

    Compose Claude Code, Codex, and OpenCode runs into a checkpointed graph - resumable, budgeted, auditable.

    TypeScript

  4. ownbenchownbenchPublic

    Mine your own repo's git history into a private, re-runnable coding eval for local and frontier LLMs.

    Python

  5. CommandOSSLabs/dotmaskCommandOSSLabs/dotmaskPublic

    JavaScript 3 3

  6. flowmentumzzz/commute-iqflowmentumzzz/commute-iqPublic

    TypeScript

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
View datj9's full-sized avatar
  • Ho Chi Minh City, Viet Nam
  • 10:36 (UTC +07:00)

Block or report datj9

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
datj9/README.md

Dat Nguyen

Full-stack Engineer · fintech systems & AI developer tooling · Ho Chi Minh City, VN

WebsiteCVLinkedInEmail


💫 About me

6+ years building products end to end — currently Full Stack Engineer at Ringkas (since Jan 2023), on core fintech for mortgage and loan processing in Indonesia:

  • Built the LOS (loan origination system) from scratch, improving performance and UX over the legacy system
  • Built and maintained the credit information service integrating Indonesia's credit bureau (CLIK)
  • Designed a multi-channel notification system — email (SendGrid, Mailchimp, Mailgun), WhatsApp (Infobip, Qiscus), Discord
  • Improved large-file upload into partner systems

Before Ringkas: insurtech claims & onboarding at Papaya Insurtech, web/mobile core modules at Vision-IO Vietnam, plus agency and freelance work from 2020.

Outside work I build AI developer tooling — agent harnesses, MCP servers, LLM gateways, local-first CLIs. Most of it started as a tool I wanted for my own workflow.

🚀 What I'm building

ProjectWhat it doesStack
loomgraphCompose Claude Code, Codex, and OpenCode runs into a checkpointed graph — resumable, budgeted, auditable. A long run that dies at 90% resumes instead of restarting.TypeScript
ownbenchMine your own repo's git history into a private, re-runnable coding eval — race local and frontier models on bugs that actually happened in your codebase.Python
crossagentGet a second opinion from another AI coding agent before you decide — resumable cross-agent sessions from inside Claude Code, Codex, Cursor, Cline, OpenCode.Python
enclaveSelf-hostable artifact generation & hosting with three privacy levels: only you, your org, or a revocable share link.TypeScript · Node.js
tech-bytesPluggable daily tech digest — releases, HN, GitHub trending, summarized by any LLM and published as a static site. Zero-cloud default (GH Pages + Actions cron).Astro · TypeScript
simple-mcpTurn any API into a curated MCP server from a single config file.Shell · MCP
dat-devkitPersonal Claude Code engineering harness — clean-code rules, security guards, git discipline, PR workflow, skills.Shell · Claude Code
plan-syncShare task state across Claude Code / Codex sessions via git.TypeScript
cloudcompassCloud learning platform for engineers — learn, compare, and practice AWS, GCP, and Azure.TypeScript · Next.js
ai-engineerOpen-source AI engineering curriculum for software engineers — 23 lessons, 3 entry tracks, 2 portfolio projects.Python

💻 Tech stack

Languages

TypeScriptJavaScriptPythonGoRustSQL

Backend

Node.jsExpress.jsNestJSFastifyDjangoFastAPIGraphQLApollo-GraphQL

Frontend

ReactNext JSReact NativeReduxAstroTailwindCSSAnt-Design

Data

PostgresMongoDBRedisSQLite

Cloud & infra

AWSAWS LambdaCloudflare WorkersDockerVercelNginxGitHub Actions

AI & agents

ClaudeOpenAIMCPAgents

Quality & observability

JestPlaywrightSentryESLint

🎓 Certifications

📚 Currently into

Agentic system design · LLM gateways & token routing · distributed-systems patterns (idempotency, retries, queues) · Rust — I write some of it up on dat-nguyen.me/blog.

📊 GitHub stats

Stats

Top languagesMost commit language


Get in touch →

Pinned Loading

  1. crossagentcrossagentPublic

    Get a second opinion from another AI coding agent before you decide.

    Python 2

  2. enclaveenclavePublic

    Self-hostable artifact hosting with three privacy levels: only you, your organization, or a revocable share link.

    TypeScript

  3. loomgraphloomgraphPublic

    Compose Claude Code, Codex, and OpenCode runs into a checkpointed graph - resumable, budgeted, auditable.

    TypeScript

  4. ownbenchownbenchPublic

    Mine your own repo's git history into a private, re-runnable coding eval for local and frontier LLMs.

    Python

  5. CommandOSSLabs/dotmaskCommandOSSLabs/dotmaskPublic

    JavaScript 3 3

  6. flowmentumzzz/commute-iqflowmentumzzz/commute-iqPublic

    TypeScript

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
View datj9's full-sized avatar
  • Ho Chi Minh City, Viet Nam
  • 10:36 (UTC +07:00)

Block or report datj9

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
datj9/README.md

Dat Nguyen

Full-stack Engineer · fintech systems & AI developer tooling · Ho Chi Minh City, VN

WebsiteCVLinkedInEmail


💫 About me

6+ years building products end to end — currently Full Stack Engineer at Ringkas (since Jan 2023), on core fintech for mortgage and loan processing in Indonesia:

  • Built the LOS (loan origination system) from scratch, improving performance and UX over the legacy system
  • Built and maintained the credit information service integrating Indonesia's credit bureau (CLIK)
  • Designed a multi-channel notification system — email (SendGrid, Mailchimp, Mailgun), WhatsApp (Infobip, Qiscus), Discord
  • Improved large-file upload into partner systems

Before Ringkas: insurtech claims & onboarding at Papaya Insurtech, web/mobile core modules at Vision-IO Vietnam, plus agency and freelance work from 2020.

Outside work I build AI developer tooling — agent harnesses, MCP servers, LLM gateways, local-first CLIs. Most of it started as a tool I wanted for my own workflow.

🚀 What I'm building

ProjectWhat it doesStack
loomgraphCompose Claude Code, Codex, and OpenCode runs into a checkpointed graph — resumable, budgeted, auditable. A long run that dies at 90% resumes instead of restarting.TypeScript
ownbenchMine your own repo's git history into a private, re-runnable coding eval — race local and frontier models on bugs that actually happened in your codebase.Python
crossagentGet a second opinion from another AI coding agent before you decide — resumable cross-agent sessions from inside Claude Code, Codex, Cursor, Cline, OpenCode.Python
enclaveSelf-hostable artifact generation & hosting with three privacy levels: only you, your org, or a revocable share link.TypeScript · Node.js
tech-bytesPluggable daily tech digest — releases, HN, GitHub trending, summarized by any LLM and published as a static site. Zero-cloud default (GH Pages + Actions cron).Astro · TypeScript
simple-mcpTurn any API into a curated MCP server from a single config file.Shell · MCP
dat-devkitPersonal Claude Code engineering harness — clean-code rules, security guards, git discipline, PR workflow, skills.Shell · Claude Code
plan-syncShare task state across Claude Code / Codex sessions via git.TypeScript
cloudcompassCloud learning platform for engineers — learn, compare, and practice AWS, GCP, and Azure.TypeScript · Next.js
ai-engineerOpen-source AI engineering curriculum for software engineers — 23 lessons, 3 entry tracks, 2 portfolio projects.Python

💻 Tech stack

Languages

TypeScriptJavaScriptPythonGoRustSQL

Backend

Node.jsExpress.jsNestJSFastifyDjangoFastAPIGraphQLApollo-GraphQL

Frontend

ReactNext JSReact NativeReduxAstroTailwindCSSAnt-Design

Data

PostgresMongoDBRedisSQLite

Cloud & infra

AWSAWS LambdaCloudflare WorkersDockerVercelNginxGitHub Actions

AI & agents

ClaudeOpenAIMCPAgents

Quality & observability

JestPlaywrightSentryESLint

🎓 Certifications

📚 Currently into

Agentic system design · LLM gateways & token routing · distributed-systems patterns (idempotency, retries, queues) · Rust — I write some of it up on dat-nguyen.me/blog.

📊 GitHub stats

Stats

Top languagesMost commit language


Get in touch →

Pinned Loading

  1. crossagentcrossagentPublic

    Get a second opinion from another AI coding agent before you decide.

    Python 2

  2. enclaveenclavePublic

    Self-hostable artifact hosting with three privacy levels: only you, your organization, or a revocable share link.

    TypeScript

  3. loomgraphloomgraphPublic

    Compose Claude Code, Codex, and OpenCode runs into a checkpointed graph - resumable, budgeted, auditable.

    TypeScript

  4. ownbenchownbenchPublic

    Mine your own repo's git history into a private, re-runnable coding eval for local and frontier LLMs.

    Python

  5. CommandOSSLabs/dotmaskCommandOSSLabs/dotmaskPublic

    JavaScript 3 3

  6. flowmentumzzz/commute-iqflowmentumzzz/commute-iqPublic

    TypeScript