← all work

Ramadan Store

A seasonal storefront for Ramadan gift bundles — prayer mats, beads, planners. Phone login, cart, checkout, order history, all working. One commit, 87KB in a single file, shipped before the season and never opened again.

Role
Sole developer — React front end against a REST API
Span
Jan ’25
Kind
Self-initiated · product
Status
archived
Stack
React · Vite · Tailwind · Framer Motion · Leaflet · Arabic RTL · Seasonal commerce
kariemseiam.github.io

Built against a deadline that does not move

Ramadan gift bundles: prayer mats in several colours, prayer beads, planners, gift cards. Phone-number login, a cart, checkout against a real REST API at geolink.pythonanywhere.com/api, and order history you can come back to.

It works. It is live at kariemSeiam.github.io/ramadan-store, Arabic title intact — متجر رمضان | هدايا رمضان.

It has one commit: Initial commit, 2025-01-22.

The live product, captured today — not a recreation. Still running at kariemSeiam.github.io/ramadan-store.

Eighty-seven kilobytes in one file

the repository, single largest file
src/Ramadan.jsx   87,319 bytes

That is the product. Cart, product grid, auth, checkout, image viewer, the store-locator map — one component. The second-largest file in the repository is ImageViewer.jsx at 10KB, and after that nothing exceeds 3KB.

The hooks and contexts are split out properly — useCart, useOrders, AuthContext, services/api.js — so the separation I knew to make, I made. What never happened is the second pass, where the giant component gets broken along the seams the hooks already imply.

There was no second pass because there was no second week. Ramadan has a date. The store had to exist before it, and after it there was no reason to open the file again.

Why this one is on the site

Because the failure is specific and worth naming, and it is not the one the file size suggests.

The shortcoming here is not architectural taste. Nothing about an 87KB component is mysterious to me — it is what you get when every decision is “add it to the file that already works” and the deadline is real. The shortcoming is that shipping and sustaining are different skills, and in January 2025 I had exactly one of them.

Three weeks later I started a storefront on the same stack that ran for seven months and 27 commits, with a caching API client, retry logic and a real admin panel. Same tools, same person, different outcome. This page is here so that comparison has something to stand against.

This kind of problem?

I build production systems that answer “where is it now?” — reconciliation engines, geolocation platforms, ride-sharing coordination layers, AI tool servers. If you’re facing a system that needs to survive real traffic, real constraints, and real time — let’s talk.