Islam Soliman Get in touch

Software engineer · Cairo · Remote

I build every layer myself.

The product

Hekta

On the App Store hekta.money ↗

A money app for Egypt and the Gulf. You write what you spent in plain language, or photograph the receipt, and it fills in the form. Nothing saves until you confirm it. It counts gold by gram and karat, which is how gold is actually bought there and what no off-the-shelf library does.

Eight screens. Pick one, or tap a question on the feed.

Postgres tables
43 RLS on every one
Edge Functions
15 every sensitive call
Migrations
139 hand-written, reversible
Tests
7000+ client and edge, green
  • Expo
  • React Native
  • TypeScript strict
  • Supabase
  • PostgreSQL
  • Deno
  • Claude API

Three products in one app: daily tracking, net worth, and shared expenses. Speech and receipt capture both feed the same confirm step. Privacy and terms, live

Hekta's feed: a total balance of EGP 50,800.00, EGP 42,286.00 left to spend this month and under pace, three question chips (What's due, How are my budgets, Where did my money go), and the latest payments to Breadfast, Zooba and Uber above a bar to ask or write what you spent.
Feed — the balance, what is left to spend, and every payment as it lands

Work

Hekta is at the top of this page. Four more below, and most of that code is private because it holds client data and pricing.

A brand I own

Muhrah

A handmade bukhoor brand in Madinaty. I built the storefront, the design system, and a WhatsApp bot that answers customers and closes the order inside Shopify. The whole project carries one external dependency. Everything else is the Node standard library.

  • Shopify Liquid
  • Admin API
  • WhatsApp Cloud API
  • node:sqlite
  • Claude API
  • Railway

The storefront is live.

The Muhrah storefront home on a phone: the gold horse emblem over mastic bakhoor, with Explore the collection and Order on WhatsApp.
The Muhrah collection page: boxes of mastic bakhoor in a two-column grid, priced in Egyptian pounds.
The Sultan product page: an open navy box of mastic bakhoor at 749 EGP, with a pack-size choice and Add to cart.

Built, not deployed

Horus Transfer

A tourist landing in Luxor has no idea what the ride into town should cost, so the price gets negotiated at the curb. Horus quotes it before you book, in fourteen languages. Confirmation goes to WhatsApp. There is no email field anywhere in the product.

  • Next.js App Router
  • PostgreSQL
  • Turnstile
  • Docker

Search only ever offers a destination the operator has actually priced, so no estimated fare reaches the screen. The repo is private and the site is not deployed.

Horus home on a phone: Private transfers across Egypt, fixed price agreed before you book, with pickup, drop-off, date and time fields.
A Horus route page after See price: the fixed fare for the ride, shown before anything is booked.
Horus home in Arabic, laid out right to left.

In development

Wehdtak

A platform for real-estate brokerage offices in Egypt. Each office keeps its own units and clients, puts the ones it chooses on a shared market, and closes deals with other offices. The platform keeps the record and never touches the money.

  • Next.js
  • Supabase
  • Railway
The Wehdtak landing page in Arabic on desktop: grow your office with other offices' units, with Open your office.
The Wehdtak landing page in Arabic on a phone.

Live

NOOR

A landing page for an Egyptian finishing contractor. The building in the hero is drawn rather than photographed, a gold wireframe that assembles itself line by line. Four moments of motion in the whole page, counted and budgeted.

  • Static HTML
  • CSS
  • Caddy
  • Docker
  • Railway

Static files on Caddy with no backend behind them, deploying on every push.

The NOOR landing page in Arabic on desktop: a gold wireframe tower beside the headline From the first brick to the last touch.

Every layer

The claim at the top of the page, itemised.

  1. App Expo · React Native · TypeScript strict
  2. Web Next.js App Router · static HTML and CSS
  3. Edge 15 Edge Functions on Deno · every sensitive call
  4. Data 43 Postgres tables · 139 migrations · RLS on every one
  5. Infra Docker · Caddy · Railway · Cloudflare

Approach

The app, the web front end, the schema, the functions that run on the edge, and the container the whole thing ships in. Five products, no team.

I audit my own work before anyone else gets to

A pre-launch pass over Hekta turned up five problems the documentation already claimed were finished. Deleting an account never revoked the Apple token. Free quota counters never reset. All five were closed before the app went to the store.

The whole stack is mine, so nothing waits on anyone

The app, the web front end, the schema, the migrations, the Edge Functions, the DNS, and the container it ships in. When the database needs a column, I add it in the same afternoon the screen needs it.

Secrets never reach a client bundle

Every sensitive call runs server side from an Edge Function. The anonymous key that ships in the app has never had access to anything a stranger could spend.

Stack

Everything here is running in something above.

Mobile
  • Expo
  • React Native
  • TypeScript strict
  • Expo Router
  • Reanimated
  • EAS Build
  • Maestro
Web
  • Next.js App Router
  • React
  • Static HTML and CSS
Backend and data
  • Supabase
  • PostgreSQL
  • PLpgSQL
  • Row-Level Security
  • Edge Functions
  • Deno
  • node:sqlite
AI in the product
  • Claude API
  • Tool use
  • Speech to text
Infrastructure
  • Railway
  • Cloudflare
  • Docker
  • Caddy
  • Shopify
  • GitHub Actions
  • Sentry