// Hi, I'm Said Elhefny
Freelance Software Developer · Riyadh, Saudi Arabia
const focus = "desktop tools & automation";
I build desktop applications and automation tools that solve real workflow problems — from a historical backtesting engine for crypto markets to a full project-management dashboard for freelancers. My work spans Java, Python, and C#, usually with a database underneath and a clean UI on top.
I recently graduated high school and I'm now focused on freelance work through Upwork, with C# and Unity study on the side to push that same "structured, data-driven" thinking into game design.
// Projects
a look at what I've shipped
A Python-based historical backtesting engine for cryptocurrency markets. Downloads OHLCV data from exchanges, caches it locally with SQLite, and simulates trading strategies against real market history.
- Realistic trade execution — next-bar open, exchange fees, slippage
- Gap-detection that extrapolates missing exchange timestamps
- Full trade ledger with performance reporting
A desktop project-management application for freelancers — manages projects, tracks time, and handles client invoicing, built entirely in Java with a local SQLite store.
- Modern UI with JavaFX, styled using AtlantaFX
- Clean architecture, managed with Apache Maven
- Custom validation logic and FXML layouts
A desktop personal finance manager built with PyQt6, pandas, and matplotlib. Tracks income, expenses, savings, accounts, and categories with a live dashboard and charts, plus optional AI-powered insights via the OpenAI API and a local offline fallback engine.
- CSV import, manual entry, and multi-account support
- Income/expense trend chart and savings-goal tracking
- Autosave with session restore between launches
A background-running PyQt6 desktop utility that watches high-traffic folders and automatically routes files to custom local or cloud destinations by type — controlled entirely from the Windows system tray.
- Smart System Scan to auto-detect Windows/OneDrive folders
- Chronological sub-sorting by year/month
- Collision handling and safety nets for locked files
// Skills
skills.json
// Contact
contact.txt
if (project.needsBuilding()) { reachOut("said.m.n.w.o@gmail.com"); }