Based in Jeddah, Saudi Arabia

Hamad
Alaslani

Full-Stack Developer

I build web APIs with ASP.NET Core, develop frontends with React and TypeScript, and create games with Unity as a hobby.

Hamad Alaslani at his desk, looking down at a laptop in a warm, terracotta-coloured room
Fig. 01 Busy pretending to be busy

Selected work

02 projects  ·  a full-stack web app and a mobile game

01

Personal Expense
Tracker

A full-stack app for recording expenses and seeing where the money goes. An ASP.NET Core API, a React and TypeScript frontend, and sign-in through Keycloak. Each user only ever sees their own data.

Explore source code
Expense Tracker dashboard: total spending, a six-month spending trend, and spending by category
Expense list filtered by date range, sorted by date and paginated
Dashboard for a six-month range  /  filtered, sorted and paginated expense list
  1. Data isolation

    Every query is scoped to the user in the validated Keycloak token. Another user's expense returns 404, so its existence isn't revealed. Two-user integration tests verify it.

  2. Server-side querying

    Search, filters, sorting and capped paging compile into one EF Core query, projected to DTOs and backed by a composite (UserId, ExpenseDate) index.

  3. Dashboard in SQL

    Totals and category breakdowns are aggregated in SQL. The trend chart picks daily, weekly or monthly buckets from the range length.

  4. Tested for real

    API tests run on PostgreSQL in Testcontainers with the real migrations, not an in-memory fake. CI builds, tests and publishes Docker images.

Backend
C#, .NET 10, ASP.NET Core, EF Core
Frontend
React, TypeScript, TanStack Query, Recharts
Data & auth
PostgreSQL, Keycloak, OIDC + PKCE
Tooling
xUnit, Testcontainers, Vitest, Docker, GitHub Actions
Stealth Particles level 3: neon grid corridor with guards and their red vision cones Stealth Particles level 4: guards patrolling between walls, with laser fences near the exit
02

Stealth
Particles

A mobile stealth game inspired by Metal Gear Solid's VR Missions. Slip past guards' vision cones, switch off lasers and collect the loot that unlocks the exit, before the timer runs out.

  • Systems talk through a static pub/sub event hub, so none of them reference each other.
  • Guard AI uses the State pattern; vision cones check range, angle and line of sight.
  • A single tap resolves to guard, panel or floor, with movement over a NavMesh.

Unity  ·  C#  ·  URP  ·  AI Navigation

GitHub

About 33 MB, loaded only when you press play. Best on a desktop browser.