Skip to content
View jani358's full-sized avatar
🏠
Working from home
🏠
Working from home

Highlights

  • Pro

Block or report jani358

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

Portfolio LinkedIn Email Profile views


👋 About me

Full-stack engineer from Colombo, Sri Lanka. I spend most of my time on backend systems where correctness under concurrency matters — wallets that must never double-credit, queues that must never hand two people the same number, bookings that must never sell one slot twice.

Production  ·  Go · TypeScript · NestJS · Next.js · PostgreSQL · Redis · Kafka
Scale       ·  10,000+ concurrent WebSocket connections at sub-100 ms
Migration   ·  Led a Node.js → Go move of the hot paths after profiling proved it was CPU-bound
Infra       ·  Docker · Kubernetes (K3s) · Terraform · ArgoCD GitOps · AWS
Right now   ·  Bilingual RAG (pgvector, hybrid retrieval) and real-time SaaS for Sri Lankan businesses

🧩 What I build

🤖 AskLK

Bilingual AI assistant

Ask in Sinhala, get Sinhala — from an English document. Multi-tenant RAG on pgvector, hybrid retrieval (vector + full-text merged by Reciprocal Rank Fusion) in one SQL query, four anti-hallucination layers, SSE streaming, 14 KB embeddable widget.

NestJS pgvector Next.js Gemini

→ Read the write-ups

🎫 QueueLK

Real-time queue & tokens

Take a number from your phone, watch the counter from the waiting room. Gap-free numbering under concurrency (SELECT … FOR UPDATE plus a unique-constraint backstop), live SSE display boards, multi-tenant SaaS for clinics and counters.

NestJS PostgreSQL SSE Redis

→ Read the write-ups

📅 BookLK

Booking marketplace

Double-booking is a correctness problem, not a UI problem. Idempotency keys, Redis locks and a row lock inside a serializable transaction — with a concurrent test that asserts exactly one winner.

Next.js NestJS Go PostgreSQL

→ Read the write-ups

Also, at work and on my own time

iGaming platform (production) 18 Go microservices behind an API gateway · Kafka events · the wallet/ledger service where four independent layers stop a player being double-credited · 10,000+ live WebSocket connections
Infrastructure Terraform-provisioned AWS → K3s + ArgoCD GitOps · Prometheus, Grafana, Loki, Tempo · a dev environment that costs tens of dollars instead of ~$1,000/month managed
Go trading bot Binance futures, indicators computed in Go, an LLM as the proposal and ~15 deterministic risk gates as the decision — each gate added after a real losing trade
Retail POS (Electron) Offline-first desktop point of sale · integer-cent money in a shared module · verified backups after every bill

🛠️ Stack

Languages

Backend & data

Frontend

Infrastructure


📊 GitHub

Trophies
Stats Streak
Top languages



Contribution graph

💬 Open to senior backend, platform and AI-engineering roles

Email

Pinned Loading

  1. asklk-AI-assistant-showcase asklk-AI-assistant-showcase Public

  2. BookLK-showcase BookLK-showcase Public

  3. jani358 jani358 Public

  4. nexora-callcenter-showcase nexora-callcenter-showcase Public

  5. queuelk-showcase queuelk-showcase Public