Software developer at Altyn Logistics in Gorgan, Iran.
Laravel and MySQL most days, plus .NET, Flutter and Kotlin when the job needs them.
Starting a master's in software engineering this year.
1SHMShop ManagerInventory and sales for small shopsLaravel API · FlutterM+
Products, customers, orders and partial payments, as a Flutter app on top of a Laravel REST API. I wrote both ends.
Each order line stores the product's name, sale price and purchase price at the moment of sale, so old orders and profit figures don't change when prices do.
An order, its lines and its first payment are saved in one transaction. Once a payment exists, the order is locked.
Every price and stock change is logged, so each product has a history.
Access is checked per shop subscription, and API errors come back in English or Farsi depending on the shop's language.
// OrderController::store, inside the order transactionforeach ($productDetails as $productId => $quantity) {
$product = $products[$productId]
?? throw new \Exception(ErrorMessages::getMessage($user->language, 'product_not_found'));
$syncData[$productId] = [
'name_on_created' => $product->name,
'price_on_created' => $product->price,
'purchase_price_on_created' => $product->purchase_price,
'quantity' => $quantity,
];
}
The order keeps its own copy of each product as sold. Trimmed from OrderController.php.
2EXFExercise dataset, in Farsi1,324 gym exercises translated to FarsiPython · LLM pipelineS+
An open dataset of gym exercises with animations, target muscles and equipment, translated into Farsi so Persian fitness apps have real data to start from. It's a fork of hasaneyldrm/exercises-dataset; the Farsi part is mine.
Every exercise got a Farsi name, full instructions and step-by-step instructions.
A Python script sends exercises to an LLM five at a time, waits longer after each failure, and saves progress after every batch. A dropped connection costs one batch, not the whole run.
Before the full run I compared a few models for speed and translation quality.
3CSCCommitScopeAny GitHub profile as a timelineReact · TypeScriptS+
Type a GitHub username and get its contribution timeline, heatmap, languages and a searchable list of repositories.
Works without signing in, using GitHub's public REST and Events APIs (about the last 90 days).
With a personal access token it switches to GraphQL for the full history. GitHub caps that query at one year, so it asks year by year and joins the results. The token never leaves your browser.
Responses are cached in localStorage for an hour so revisits don't use up the API rate limit.