تهران · آمادهٔ شروع · حضوری یا دورکاریTehran · Available now · On-site or remote

کیارشKIARASHاحمدیAHMADI

من I

توسعه‌دهندهٔ فول‌استکم. نرم‌افزاری می‌سازم که توی کار واقعی دوام میاره، نه فقط توی دمو. وب، اندروید و ویندوز؛ از طراحی تا استقرار و نگهداری.Full-stack developer. I build software that holds up in real use, not just in a demo. Web, Android and Windows; from design to deployment and upkeep.

scroll
0+سال نرم‌افزار مالی توی کار واقعی؛ هر روز، با پول واقعیyears of financial software in production; every day, with real money
0تست خودکار روی صفا حساب که نمی‌ذاره حساب‌ها قاطی بشهautomated tests on Safa Hesab keeping the books honest
0مسیر API توی صفا حساب؛ هر کدوم با کنترل دسترسی سمت سرورAPI endpoints in Safa Hesab; each one permission-checked on the server
0نفر. طراحی، کد، سرور، پشتیبانی: همه‌ش خودمperson. Design, code, servers, support: all me
01 ·  من کی‌ام Who I am

اول پشت پیشخوان بودم.
بعد نرم‌افزارش رو نوشتم.
I started behind the counter.
Then I wrote the software.

توی داروخانه کار می‌کردم و هر شب می‌دیدم حساب‌ها با دفتر و ماشین‌حساب بسته می‌شه؛ کند، پرخطا و بدون هیچ ردی. مشکل رو از نزدیک می‌شناختم، پس نرم‌افزارش رو خودم ساختم.I worked in a pharmacy and watched the books being closed every night with a notebook and a calculator; slow, error-prone and with no trail. I knew the problem first-hand, so I built the software myself.

الان شعبه‌ها دفتر روزانه رو با گوشی ثبت می‌کنن، حسابدار توی ویندوز تأییدش می‌کنه و سند حسابداری خودش ساخته می‌شه. بدون ثبت تکراری و با رد کاملِ هر عدد.Today the branches submit their daily records from a phone, the accountant approves them on Windows and the voucher is generated automatically. No double entry, and every number is traceable.

سه چیز کنار هم دارم که کم پیش میاد: حسابداری بلدم و نیاز کاربر مالی رو می‌فهمم؛ گرافیک خوندم و به ظاهر و تجربهٔ کاربر اهمیت می‌دم؛ و مسئول IT بودم، پس سرور، شبکه و پشتیبانی هم با خودمه.I bring three things that rarely come together: I know accounting and understand what finance users need; I studied graphic design and care about interface and experience; and I ran IT, so servers, networks and support are mine too.

دنبال چی‌امLooking forکار برنامه‌نویسی؛ تمام‌وقت، پاره‌وقت یا پروژه‌ایA developer role; full-time, part-time or contract
سنAge۲۳ سال (متولد ۱۳۸۲)؛ برنامه‌نویسی رو از سن کم و خودآموخته شروع کردم23 (born 2003); self-taught, coding since a young age
کجامWhereتهران. حضوری میام، دورکاری هم بلدمTehran. On-site or remote, both fine
چی تحویل می‌دمWhat you getاز طراحی تا استقرار و نگهداری؛ یک نفر، کل مسیرDesign to deployment to maintenance; one person, the whole road
روش کارHow I workتست‌شده، مستند و قابل نگهداری؛ نه فقط «کار می‌کنه»Tested, documented and maintainable; not just "it works"
02 ·  جعبه‌ابزار Toolbox

ابزارهایی که باهاشون
محصول واقعی ساختم.
The tools I've used
to ship real products.

هر کدوم از این‌ها توی یکی از پروژه‌های پایین، توی کار واقعی استفاده شده.Every one of these runs in one of the projects below, in real use.

01فرانت‌اندFrontend

رابط سریع، تمیز و راست‌به‌چپِ درست‌وحسابیFast, clean interfaces with proper RTL

React 19Next.js 16TypeScriptTailwind CSSshadcn/uiVitePWAWeb Push3D · WebGLWordPress · WooCommerceRTL UI

02بک‌اندBackend

API، احراز هویت و اتصال بین سیستم‌هاAPIs, authentication and system integration

Node.jsFastifyREST APICloudflare WorkersIdempotent APIWebhooks · BotsWebAuthn · PasskeySMS OTPSSO · HMACRBACAudit LogPython

03دادهData

طراحی دیتابیس، مهاجرت و نگهداری دادهٔ مالیSchema design, migrations and safe handling of financial data

PostgreSQLSQLiteSQL ServerDrizzle ORMMigrationsData migrationCloudflare D1 · R2S3 storageAES-256-GCMBackup & Restore

04موبایل و دسکتاپMobile & desktop

یه محصول، روی هر صفحه‌ای که کاربر دارهOne product, on every screen the user owns

ElectronAndroid · KotlinReact NativeExpoZustandLocal-firstLAN discovery · UDPWindows Desktop

05سرور و استقرارServers & deployment

استقرار، مانیتورینگ و نگهداری روی سرور واقعیDeployment, monitoring and upkeep on real servers

Linux VPSDockerNginxCaddysystemdCloudflareSSL · DNSGit

06دانش حوزه و کیفیتDomain & quality

چیزهایی که کد رو به محصولِ قابل استفاده تبدیل می‌کننWhat turns code into a usable product

حسابداریAccountingصندوق، پوز و بانکPOS & cashروال داروخانهPharmacy workflowsطراحی گرافیکGraphic designتست خودکارAutomated testingشبکه و پشتیبانی ITNetwork & IT support
03 ·  پشت صحنه Under the hood

ظاهر، نیمی از کاره.
نیم دیگه این‌جاست.
The interface is half the job.
This is the other half.

چند برنامه که داده‌های مالی رو بین خودشون رد و بدل می‌کنن، با قرارداد مشخص و بدون خطای ثبت. این‌ها سخت‌ترین و مهم‌ترین بخش‌های کارم بودن.Several applications exchanging financial data under a clear contract, with no posting errors. These were the hardest and most important parts of my work.

A

مهاجرت داده از نرم‌افزار رافعData migration out of Rafe

حساب‌های چند سال داروخانه توی نرم‌افزار قدیمی رافع بود، با قالب Paradox و متن فارسیِ «ایران‌سیستم». برای میزان یه خواننده نوشتم که فایل پشتیبان .bck رو مستقیم می‌خونه و سرفصل‌ها، اسناد و آرتیکل‌ها رو با شمارهٔ اصلی خودشون میاره.Years of pharmacy accounts lived in legacy Rafe software: Paradox tables and Persian text in the old "Iran System" code page. For Mizan I wrote a reader that takes the .bck backup directly and brings in accounts, vouchers and entries with their original numbers.

  • اول فقط گزارش می‌ده؛ تا تأیید نشه هیچی عوض نمی‌شهDry run first; nothing changes until it's approved
  • کل ورود توی یک تراکنش: یا همه، یا هیچThe whole import in one transaction: all or nothing
  • قبلش نسخهٔ ایمنی؛ هیچ سندی پاک یا بازنویسی نمی‌شهSafety backup first; no voucher is deleted or overwritten
Paradox .DBBinary parsingCode page → UnicodeSQLiteTypeScript
B

مبدل ایمن‌افزارThe Imen-Afzar converter

برای داروبان (جایگزین نرم‌افزار داروخانهٔ ایمن‌افزار) یه مبدل نوشتم که از SQL Server اون می‌خونه و کاتالوگ رو منتقل می‌کنه: ۳۱٬۵۸۵ کالا و ۳۱٬۶۲۶ بارکد، با تشخیص کدهای GS1 روی جعبهٔ دارو.For Daroban (my replacement for the Imen-Afzar pharmacy software) I wrote a converter that reads its SQL Server and moves the catalogue over: 31,585 products and 31,626 barcodes, including GS1 pack codes.

  • فقط‌خواندنی؛ به دیتابیس اصلی دست نمی‌زنهRead-only; the source database is never written to
  • جدول‌های بیمار، پزشک و نسخه رو اصلاً نمی‌خونهPatient, doctor and prescription tables are never read
  • همین داده الان اپ انبارگردانی رو هم تغذیه می‌کنهThe same data now feeds the stock-taking app too
SQL ServerPowerShellGS1 · GTINnode:sqliteETL
C

API بدون ثبت تکراریAn idempotent integration API

صفا حساب و میزان با یه قرارداد نسخه‌دار حرف می‌زنن. هر دفتر روزانه یه شناسهٔ ثابت داره، میزان با cursor فقط تازه‌ها رو می‌گیره، سند رو پیش‌نویس می‌کنه و بعد از ثبت، تأییدش رو برمی‌گردونه. قاعدهٔ تبدیل رو از روی ۱۵۵ سند واقعی درآوردم.Safa Hesab and Mizan speak a versioned contract. Every daily ledger has a stable ID, Mizan pulls only new ones by cursor, drafts the voucher, and sends a confirmation back once it's posted. The mapping rules come from 155 real vouchers.

  • با قطعی اینترنت دوباره می‌فرسته، ولی دوباره ثبت نمی‌شهRetries after a dropped connection without recording anything twice
  • حساب رو حدس نمی‌زنه؛ اگه مطمئن نباشه می‌ایسته و می‌پرسهIt never guesses an account; when unsure it stops and asks
  • مبلغ ناخوانا = توقف با دلیل، نه نادیده گرفتن بی‌صداAn unreadable amount stops the posting with a reason, never silently
RESTIdempotencyCursor syncOutboxFail-closed
D

امنیت و پایداری دادهٔ مالیSecurity and durability of financial data

ورود با رمز، پیامک و Passkey. دسترسی هر مسیر سمت سرور چک می‌شه، نه با قایم کردن دکمه. هر تغییر مهم توی Audit Log می‌مونه و بکاپ شبانه بعد از کنترل SHA-256 می‌ره روی فضای ابری.Password, SMS and passkey sign-in. Every route checks permissions on the server, not by hiding a button. Important changes land in an audit log, and nightly backups go to object storage after a SHA-256 check.

  • حضور و غیاب با لینک شخصی و محدودهٔ مکانی داروخانهStaff attendance by personal link, inside the pharmacy's geofence
  • ربات بله برای گزارش روزانهٔ مدیرهاA Bale messenger bot for managers' daily digest
  • ۵۳ مهاجرت دیتابیس، همه افزایشی53 database migrations, all additive
WebAuthnRBACAudit LogS3 · SHA-256GeofencingBot API
04 ·  کارها Work

کارهایی که
ساختم و تحویل دادم.
Work I've built
and delivered.

چند تا از این‌ها دموی زنده دارن و همین الان قابل امتحانن. تصویرهای نرم‌افزار مالی با دادهٔ نمایشی ساخته شدن.Several of these have live demos you can try right now. Screens of the financial software use sample data.

صفا حساب و میزان
01

صفا حساب + میزانSafa Hesab + Mizan

هر روز در حال استفادهIn daily use

سیستم مالی یه مجموعهٔ داروخانه‌ای. شعبه با گوشی دفتر روزانه رو می‌بنده، حسابدار توی ویندوز تأیید می‌کنه و سند خودش ساخته می‌شه. از صفر تا امروز، تنهایی.The financial system of a pharmacy group. Branches close the day on a phone, the accountant approves on Windows, the voucher builds itself. From zero to today, solo.

  • صفا حساب (وب + اندروید، الان نسخهٔ ۹): دفتر روزانه، صندوق، چک‌ها، انبار و حضور و غیاب شعبه‌هاSafa Hesab (web + Android, now v9): daily ledger, cash, cheques, warehouse and staff attendance for the branches
  • میزان (ویندوز، نسخهٔ ۱.۱۸): حسابداری دوطرفه که جای نرم‌افزار قدیمی رافع رو گرفتMizan (Windows, v1.18): double-entry accounting that replaced the legacy Rafe software
  • ۷۲ مسیر API، ۲۲۴ تست خودکار، ۵۳ مهاجرت دیتابیس72 API endpoints, 224 automated tests, 53 database migrations
  • ورود با رمز، پیامک و Passkey؛ دسترسی چندنقشی و Audit LogPassword, SMS and passkey login; role-based access and audit log
Next.js 16React 19TypeScriptDrizzle ORMWebAuthnWeb Push · PWAAndroidElectronSQLiteZustandDockerNginx · VPSS3
$ daroban --role server
✓ SQLite ready            node:sqlite
✓ HTTP  :7420             LAN
✓ UDP discovery :7421     cash desks join
✓ catalogue imported      31,585 items
✓ barcodes                31,626 · GS1
✓ FEFO batches            expiry first
→ /api/integrations/reports   Mizan
→ /api/integrations/catalog   JanMana
02

داروبانDaroban

در حال ساختIn development

نرم‌افزار فروش و انبار داروخانه؛ جایگزین سریع‌تر و ساده‌تر ایمن‌افزار. یک برنامه با دو نقش: کامپیوتر اصلی سرور می‌شه و صندوق‌ها توی شبکهٔ داخلی خودکار پیداش می‌کنن.Pharmacy point-of-sale and inventory; a faster, simpler replacement for Imen-Afzar. One app, two roles: the main PC becomes the server and the cash desks find it on the LAN by themselves.

  • موجودی بر اساس سری ساخت و انقضا (FEFO)؛ اول اونی فروخته می‌شه که زودتر تاریخش می‌گذرهStock by batch and expiry (FEFO); what expires first sells first
  • مبلغ‌ها به ریالِ صحیح نگه‌داری می‌شن تا خطای اعشاری پیش نیادAmounts stored as integer rials to rule out floating-point errors
  • وصل به میزان و جان‌مانا با API؛ هر مسیر با کنترل دسترسی سمت سرورLinked to Mizan and JanMana over API; every route permission-checked server-side
ElectronReactTypeScriptNode.js 22node:sqliteUDP discoverySQL Server importGS1
LIVE
03

تیون‌کدهTunekade

دموی زندهLive demo

رینگ و بادی‌کیت واقعی بازار رو روی مدل سه‌بعدی ماشین خودت ببین، بچرخونش، قیمت بگیر و نوبت نصب ثبت کن. ۲۰۶، ۴۰۵، سمند، پراید؛ همه توی مرورگر.Try real wheels and body kits on a 3D model of your own car, spin it, get the price and book the install. All in the browser.

3D · WebGLJavaScriptGLB modelsRTL UI
جان‌مانا
04

جان‌ماناJanMana

در حال ساختIn development

سفارش آنلاین دارو از نزدیک‌ترین داروخانه. موجودی هر داروخانه، شعاع سرویس روی نقشه و بررسی نسخه توسط داروساز. ایده‌اش مال خودمه، کدش هم.Order medicine from the nearest pharmacy: live inventory, service radius on a map, pharmacist review of prescriptions. My idea, my code.

React 19VinextCloudflareTailwindExpo · React Native
داروخانه قهرمانی
05

داروخانه قهرمانیGhahramani Pharmacy

پروژهٔ مشتریClient project

فروشگاه آنلاین و ارسال نسخه. نسخهٔ مردم با AES-256-GCM رمز می‌شه و دیتابیس اصلاً پورت عمومی نداره. برند، رابط، بک‌اند و سرور؛ همه با من.Online store and prescription upload. Prescriptions are encrypted with AES-256-GCM and the database has no public port. Brand, UI, backend and server; all mine.

ReactFastifyPostgreSQLDockerCaddyVPS

سیاه‌قلمSiah-Ghalam ↗

سایت استودیوی تتو: گالری کارها، رزرو نوبت با پیامک و پنل مدیریت.Tattoo studio site: gallery, SMS booking and an admin panel.

Node.jsSMSSEO

تیغTigh ↗

سایت یک‌صفحه‌ای آرایشگاه مردانه با معرفی متحرک و رزرو.One-page barbershop site with an animated intro and booking.

HTML · CSSMotion
HP

نایس اچ‌پیNice HP ↗

سایت فروشگاه و تعمیرگاه پرینتر: فروش پرینتر و کارتریج، کارتریج‌یاب، ثبت و پیگیری آنلاین تعمیر و پنل مدیریت.Printer shop and repair-centre site: printers and cartridges, a cartridge finder, online repair booking and tracking, and an admin panel.

HTML · CSS · JSRTL UIGitHub
WP

داروخانه جاسمینJasmin Pharmacy ↗

سایت داروخانهٔ شبانه‌روزی جاسمین با وردپرس و ووکامرس: مجلهٔ سلامت، دسته‌بندی محصولات و ارسال با الوپیک.Site for the 24-hour Jasmin Pharmacy on WordPress and WooCommerce: health magazine, product catalogue and Alopeyk delivery.

WordPressWooCommercePHP

نیوریNeyvori

دستیار فارسی اندروید، بدون سرور: ثبت صوتی کار با فهم زمان، یادآوری، و خواندن تراکنش از پیامک بانک.Offline Persian assistant for Android: understands "call at 10 tomorrow" and reads transactions from bank SMS.

KotlinAndroidSQLite

دیدبانDidban

داشبورد شبیه‌سازی معامله با قیمت زنده، کنترل ریسک و بک‌تست؛ بدون سفارش واقعی.Paper-trading dashboard on live prices with risk controls and backtesting; no real orders.

Node.jsVitePython
05 ·  مسیر Path

از پیشخوان تا پروداکشن.From the counter to production.

توسعه‌دهندهٔ فول‌استک و مسئول IT · مجموعهٔ داروخانه‌ای، تهرانFull-Stack Developer & IT Lead · Pharmacy group, Tehran

صفا حساب و میزان رو از صفر طراحی کردم، ساختم، مستقر کردم و هر روز نگه داشتم. حساب‌های قدیمی رو از رافع منتقل کردم و داروبان رو شروع کردم. هم‌زمان مسئول حسابداری، شبکه، سخت‌افزار و پشتیبانی کاربرها بودم.Designed, built, deployed and maintained Safa Hesab and Mizan from scratch. Migrated the legacy books out of Rafe and started Daroban. At the same time I was responsible for accounting, network, hardware and user support.

توسعه‌دهندهٔ مستقلIndependent Developer

فروشگاه و سامانهٔ نسخه برای داروخانه قهرمانی، سایت برای کسب‌وکارهای کوچیک، و جان‌مانا که محصول خودمه.A store and prescription system for Ghahramani Pharmacy, sites for small businesses, and JanMana, my own product.

کارمند داروخانهPharmacy Staff

فروش، صندوق و انبار. شناخت مستقیم از روال روزانه‌ای که بعداً براش نرم‌افزار ساختم.Sales, cash desk and inventory. First-hand knowledge of the daily workflows I later built software for.

دیپلم گرافیک + دوره‌های مؤسسهٔ ارژنگGraphic design diploma + courses at Arzhang Institute

برنامه‌نویسی رو از سن کم و خودآموخته شروع کردم؛ بقیه رو با کار واقعی و یادگیری مداوم به دست آوردم.I started programming young and taught myself; the rest I earned through real projects and continuous learning.

06 ·  تماس Contact

بیا حرف بزنیم.Let's talk.

برای همکاری یا پروژه، تماس بگیر، پیام بده یا ایمیل بزن. سریع جواب می‌دم.For a role or a project, call, message or email me. I reply quickly.

0901 141 9981
زنگ بزنCall واتساپWhatsApp تلگرامTelegram ایمیلEmail