saif@m3mri:~/portfolio — index.tsx
run a command K
$
index.tsx
# about.ts
# stack.config.ts
 
import { engineer } from './m3mri';
 
export const developer = {
name: 'Saif Al Mamari',
role: 'Full-Stack Engineer',
current_job: 'subject to change', // reassign anytime
based_in: 'Muscat, OM',
writes: ['Java', 'TypeScript', 'SQL'],
status: await availability(),
}
Systems that compile,
ship, and hold up.

I build backends and interfaces for software that has to be right — clean APIs, sane data models, and UIs that don't lie to the people using them.

// contribution activity — last 26 weeks
0
commits (est.)
0
day streak
0%
days active
preview.tsx — live
Saif Al Mamari
drop avatar.jpg
next to this file

Saif Al Mamari

<FullStackEngineer />
rendering Muscat, OM
 
/**
 * about.ts — who's running this process
 */
"

I work across the full stack — Java 21 / Spring Boot 3 on the backend, Angular on the front end, SQL Server underneath. My current work is on enterprise case-management systems, but the details of any one job matter less to me than the habits I bring to all of them: clean dependency boundaries, DTOs that don't leak internals, migrations that don't lose data, and error handling that fails loud instead of silent.

Outside of production code, I look for the same kind of precision elsewhere — dialing in a V60 pour with high-altitude natural beans, or grinding out ranked queues where a 20ms difference actually matters.

🏗 Enterprise systems 🔐 SSO & Auth 🗄 Data migration ⚡ Real-time (WebSocket)
// proficiency.map()
Java / Spring Boot95%
Angular88%
SQL Server85%
API Design90%
Patience with legacy code78%
Coffee ratio precision99%
 
// stack.config.ts
import { backend, frontend, data, tooling } from '@stack/core';
backend
Java 21 · Spring Boot 3 · JPA · MapStruct
frontend
Angular · Reactive Forms · Material
data
SQL Server · Flyway migrations
auth
Enterprise SSO · token flows
realtime
WebSocket · STOMP over SockJS
tooling
Git · GitLab CI · Lombok
build finished ./target in 1.8s
migrations applied — 0 pending
tests: 42 passed, 0 failed
websocket handshake ok
coffee.status → 'ready'
 
// offline.notes.ts — process running outside of work hours
brew.method

V60, cold-poured

High-altitude naturals — Hambela is the standing favorite. Slow, deliberate pours, same as debugging: change one variable at a time.

🎮
queue.rank

League of Legends

Competitive play on a G Pro X setup. Same discipline as debugging: isolate the variable, then fix it under pressure.

collection

Mechanical watches

An appreciation for systems that have to be right by design, not by patch — the same standard I hold backend logic to.

// brew.calc.ts — V60 ratio calculator + bloom timer
standard hot pour-over, served immediately.
288
TOTAL WATER (g)
36
BLOOM WATER (g)
2:45
SUGGESTED TIME
0:30
 
// contact.ts
$ run contact.ts

Open to conversations about full-stack roles, enterprise systems, or side projects worth building.

⎇ main ✓ no errors TypeScript UTF-8
Ln 12, Col 1 m3mri.com