Name : Udara Janith Wanniarachchi
Role : Software Engineer
Focus : Full-Stack Engineering, Backend Systems, Cloud, Architecture
Style : Practical • Scalable • Reliable • Intentional
I build software with a system-first mindset — not just features, but solutions that stay clear, reliable, and adaptable as they grow.
Think clearly.
Design intentionally.
Build reliably.
Scale naturally.
Keep evolving.
flowchart LR
A[Problem] --> B[Design]
B --> C[Architecture]
C --> D[Implementation]
D --> E[Reliability]
E --> F[Scalability]
F --> G[Impact]
React • Next.js • TypeScript • JavaScript • HTML5 • CSS3 • Sass • Bootstrap • Figma
Node.js • Express.js • REST APIs • Authentication & Authorization • Validation
PostgreSQL • MySQL • MongoDB • Redis
AWS • Docker • Git • GitHub
┌──────────────────────────────────────────────────────────────┐
│ ARCHITECTURE STACK │
├──────────────────────────────────────────────────────────────┤
│ Clean Architecture │
│ Layered Architecture │
│ Microservices │
│ Event-Driven Systems │
│ Domain Ownership / DDD Foundations │
│ Multi-Tenancy │
│ Saga Pattern │
│ Transactional Outbox │
│ Inbox / Idempotent Consumers │
│ Retries / DLQs │
│ RBAC / Permission Systems │
└──────────────────────────────────────────────────────────────┘
flowchart LR
USER[Users / Clients]
subgraph EDGE["Application Layer"]
FE[Web / Mobile Frontend]
API[Backend API]
end
subgraph SERVICE_A["Service A"]
LOGIC_A[Domain / Application Logic]
DB_A[(Service Database)]
CACHE[(Redis Cache)]
OUTBOX[(Transactional Outbox)]
end
subgraph ASYNC["Event-Driven Layer"]
PUB[Outbox Publisher]
QUEUE[Message Queue]
RETRY[Retry]
DLQ[Dead Letter Queue]
end
subgraph SERVICE_B["Service B"]
INBOX[(Inbox / Idempotency)]
CONSUMER[Event Consumer]
LOGIC_B[Domain / Application Logic]
DB_B[(Service Database)]
end
USER --> FE
FE --> API
API --> LOGIC_A
LOGIC_A --> DB_A
LOGIC_A <--> CACHE
LOGIC_A -->|Same DB Transaction| OUTBOX
OUTBOX --> PUB
PUB --> QUEUE
QUEUE --> CONSUMER
CONSUMER --> INBOX
INBOX -->|New Event| LOGIC_B
LOGIC_B --> DB_B
CONSUMER -->|Temporary Failure| RETRY
RETRY -->|Retry| QUEUE
RETRY -->|Retries Exhausted| DLQ
| Area | Stack |
|---|---|
| Languages | TypeScript, JavaScript, Java, PHP |
| Frontend | React, Next.js, Angular, HTML, CSS, Sass, Bootstrap |
| Backend | Node.js, Express.js, REST |
| Database | PostgreSQL, MySQL, MongoDB |
| Caching | Redis |
| Cloud | AWS |
| Containerization | Docker |
| Design | Figma |
| Other | GraphQL, Firebase |
Software should be understandable before it becomes scalable. Architecture should reduce complexity, not decorate it. The best systems are built to survive growth, failure, and change.