| BioMarket ERP |
PHP 8.3, Laravel 12, MySQL/MariaDB, Bootstrap 5, Tailwind 4, PHPStan L9, GitHub Actions, Internal system |
Вътрешна операционна платформа за търговската верига BioMarket / HealthStore, изградена от нулата (от празно репозитори през октомври 2025) и заменяща таблици и ръчни процеси. Едно приложение за HR и смени, ТРЗ, склад, POS, куриери, B2B, CRM, автопарк и вътрешна поща — 220+ модела, около 470 страници, 10 сервизни домейна, 119 конзолни команди и 2 900+ комита (3 участници). Ползва се ежедневно от персонала в магазините, склада и офиса. README: Laravel 12, PHP 8.3, Blade + Bootstrap 5 + Tailwind 4, MySQL/MariaDB, PHPStan ниво 9, Pint, ParaTest; модули: HR/график/ТРЗ, склад и наличности, продуктов каталог, POS продажби, куриери (Econt/Speedy/Box Now/PRIM), B2B портал/CRM, автопарк, обучения, checklists, документация; вътрешен, частен репозиторий.
Problem: Верига магазини с десетки обекти и стотици служители управляваше HR, склад, ТРЗ, доставки и продажби през разпръснати Excel таблици и ръчни процеси — без единен източник на истина и с нарастващ риск от грешки при мащабиране. Role: Lead Developer & Technical Owner: проектирах и изградих системата от нулата, водя доставката за двама допълнителни разработчици (336 от 550 PR-а мои, ~90% от 599 слети PR-а минават през мен), изградих quality pipeline (GitHub Actions CI, Pint, PHPStan 9, ParaTest, проверка за SQL write извън транзакция) и поддържам продукцията от край до край: cPanel, cron и queue worker-и, ежедневни бекъпи, scheduler за 51 задачи с ежедневен имейл отчет и миграции върху живи данни. Интеграции: Еконт, Спиди, Box Now (вкл. подписани webhook-ове), PRIM, OpenCart, IMAP, Google Business, банкови файлове, Tuya IoT; контрол на достъпа по роли и категории с IP whitelisting. Challenge → solution: Бърз растеж в зони с пари, наличности и ТРЗ без регресии и прекъсвания на споделен хостинг. → Задължителен quality gate (Pint, PHPStan 9, ParaTest, audit, проверка за транзакции), сервизни класове по домейни, нощен график на задачите с отчитане на натоварването и ежедневен отчет, автоматични бекъпи и прегледан списък с изключения за наследените файлове. |
GitHub
|
| Shop Builder |
PHP, Laravel 13, React 19, Inertia, TypeScript, Stripe, Multi-tenant |
Multi-tenant SaaS платформа за изграждане на онлайн магазини. Търговец се регистрира, получава магазин на собствен поддомейн (или свързан личен домейн) и управлява всичко — каталог, тема, страници, навигация, поръчки, екип — от визуален админ панел, без код. Конструктор на страници в стил Elementor: ~40 секции, групирани (Оформление / Магазин / Основни / Медия / Съдържание / Разширени), контейнер „Колони“, който се разделя на 2–4 колони с различни елементи във всяка, редактор на тема с дизайн-токени и жива визуализация. Витрина с кошница, checkout (наложен платеж или карта през Stripe) и клиентски акаунти. Целият интерфейс — админ и витрина — е двуезичен, български по подразбиране. README: Laravel 13, PHP 8.3, Inertia v3 + React 19 + TypeScript, Tailwind 4, MySQL, Pest 4; ~40 page-builder секции (Elementor-style) + контейнер „Колони“; системни страници (home/shop/cart/thankyou); Stripe Checkout + Cashier billing; BG/EN i18n; `composer test` (Pint + PHPStan ниво 9 + Pest, ~200 теста).
Problem: Малкият бизнес иска онлайн магазин без да наема разработчик и без да опира до бедни drag-and-drop конструктори. А мулти-наемната архитектура (един код, много магазини на поддомейни с изолирани данни) и page builder, който изглежда еднакво в редактора и на живо, са нетривиални за изграждане. Role: Цялостно: мулти-наемна архитектура (`tenant_id` scoping през trait + глобален scope, резолюция на наемателя по заявка хост), Laravel 13 backend, Inertia v3 + React 19 + TypeScript админ панел, page builder с рекурсивни вложени блокове (контейнер „Колони“), Stripe за плащания на витрината и абонаменти на платформата (Cashier), пълна двуезичност (BG/EN), деплой на споделен cPanel/LiteSpeed хостинг с wildcard поддомейни. Challenge → solution: Един и същ набор от секции да се рендира идентично в редактора и на живата витрина; вложени блокове (колони в контейнер) с рекурсивна валидация и drag-and-drop; строга изолация на данните между магазините; отделен hostname с валиден сертификат за всеки магазин на споделен хостинг. → Споделен section registry — една дефиниция захранва и editor canvas, и storefront. Вложените блокове са `Block.columns: Block[][]` с рекурсивни helper-и и React context за рендиране без излишни отстъпи. `BelongsToTenant` trait със скрити глобален scope; наемателят се вади от `$request->getHost()`. Wildcard поддомейн `*.shop.sasho-dev.com` + wildcard TLS, така че нов магазин работи веднага без ръчна настройка. |
GitHub
· Demo
|
| SQL Builder |
PHP, Vanilla JS, Anthropic, REST API |
Едностранично приложение за изграждане на SQL заявки по два начина: визуален конструктор (полета за действие, таблица, колони, JOIN, WHERE, GROUP BY, ORDER BY, LIMIT — заявката се сглобява на живо в браузъра, без сървър) и режим „свободен текст“, който през Anthropic (Claude) API превръща описание на естествен език в SQL. Покрива SELECT/INSERT/UPDATE/DELETE, подзаявки, CTE, UNION, прозоречни функции — в 9 диалекта. Плюс отворен REST API (/api/sql, /api/dialects, /api/health) без регистрация. README: визуален конструктор (SELECT/INSERT/UPDATE/DELETE, JOIN, WHERE, GROUP BY, ORDER BY, LIMIT) + свободен текст през anthropic-ai/sdk (claude-opus-5); POST /api/sql → { sql, notes, usage }; WAMP/Apache или php -S router.php.
Problem: Хора с малко SQL знания трудно пишат заявки с JOIN-ове и агрегации; а и синтаксисът се различава между диалектите (LIMIT / TOP / FETCH FIRST). Role: Цялостно: визуален query builder на чист JavaScript (сглобяване на SQL, авто-кавички, диалект-специфичен LIMIT), PHP backend с официалния Anthropic PHP SDK и prompt дизайн, отворен REST API с опционален токен и per-IP rate limit, модерен UI без framework с EN/BG превод и превключване тъмна/светла тема. Challenge → solution: Един UI да върши работа и за начинаещи (полета), и за напреднали (свободен текст); надежден валиден SQL за правилния диалект; предпазване на API кредитите при публичен endpoint. → Табове: клиентски builder + ИИ режим споделят подсветка и copy. System prompt с фиксиран диалект и JSON договор + устойчив парсър; file-based fixed-window rate limit; CORS и опционален Bearer / X-Api-Key токен. |
GitHub
· Demo
|
| Моята библиотека (Books) |
PHP, Laravel 13, MySQL, Tailwind, Claude API, Socialite |
Личен читателски дневник на Laravel: търсене в Google Books и Читанка едновременно, рафтове „Чета / Прочетени / За четене“ с рейтинг и бележки, вграден четец за безплатните български книги от Читанка и AI препоръки от Claude според прочетеното и оценките. Вход с имейл/парола или с Google. README: Laravel 13, PHP 8.3, MySQL, Breeze (Blade) + Tailwind, Socialite (Google), Claude API през database queue; Google Books + Читанка търсене, рафтове, четец, препоръки; тестове с Http::fake() и in-memory SQLite.
Problem: Книгите, които чета, оценявам и искам да прочета, бяха разпилени между приложения и сайтове, а безплатните български книги от Читанка нямаха връзка с Google Books и с личен списък. Role: Цялостно: Laravel 13 приложение с Breeze + Tailwind, клиенти за Google Books и Читанка (HTTP client + кеш), рафтове през pivot таблица със статус/рейтинг/бележки, страничен четец за текстове от Читанка, вход с Google (Socialite), queued job за препоръки през официалния Anthropic PHP SDK, rate limiting и feature тестове. Challenge → solution: Два външни източника с различни данни и лимити (Читанка ограничава клиентите), сдвояване на Google Books запис с издание в Читанка, и AI препоръки, които не блокират страницата и не предлагат вече прочетени книги. → Отделни Service класове за GoogleBooks, Chitanka и Claude с 24-часов кеш — грешка в единия източник не чупи страницата. Пълните текстове от Читанка се теглят веднъж, пазят се на диска и се странират оттам. GenerateRecommendations job иска структуриран JSON от Claude, маха книгите от рафтовете и сменя старите препоръки в транзакция; таблото poll-ва, докато job-ът върви. |
GitHub
|
| Tuya Smart Lock |
PHP, Vanilla JS, Tuya OpenAPI, IoT, REST API |
Самостоятелно PHP + JavaScript уеб приложение за управление на смарт брава (Tuya / Smart Life) през Tuya Cloud OpenAPI, без външни зависимости. Статус и батерия, дистанционно отключване/заключване, история на отключванията, офлайн временни пароли, потребители с постоянен код, именуване на отпечатъци/карти/кодове, одобряване на заявка от вратата и имейл известия при аларма. Поддържа няколко брави. README: PHP 8.1+ (curl, json), без Composer зависимости; src/TuyaClient.php, SmartLockService.php, Auth.php, AlarmMonitor.php; public/api.php JSON API (devices, status, logs, unlock, lock, passwords, temp-password, reply-request); bin/monitor.php за имейл известия; tests/run.php.
Problem: Приложението Smart Life не дава удобен начин да се виждат и именуват кой с какво е отключил, да се раздават временни кодове и да се получават известия по имейл, нито API, което да се вгради в друга система (напр. Laravel). Role: Цялостно: TuyaClient с HMAC-SHA256 подпис (v2), кеширан токен и retry при изтекъл токен; SmartLockService (статус, unlock/lock с ticket → door-operate и fallback, логове, кодове, временни пароли); JSON API + фронтенд на чист JS; защита с bcrypt парола, CSRF и заключване след 5 грешни опита; audit log; cron монитор за аларми с имейл; тестове с fake transport. Challenge → solution: Бравата е на батерии и „спи“ — изпълнява команди само когато е будна; постоянните кодове трябва да се криптират с ticket ключа; лимитът на заявки към Tuya API е малък; а през тази връзка минава отключването на входната врата. → Ticket-базирано отключване с fallback към open-door; офлайн временните пароли се изчисляват в cloud-а и работят без бравата да е онлайн; polling за заявка от вратата само докато табът е видим и до 10 мин; проектът стои извън web root (видима е само public/), задължителен HTTPS и никога изключена проверка на сертификата. |
GitHub
|
| Super Jana World |
Unity 6, C#, Game dev, 2D |
2D платформър на Unity 6 — кучето Jana тича по 22 сегмента на нивото, събира кокали, бонус кокали и бонус животи, избягва вода, шипове и движещи се врагове, удря блокове отдолу за бонуси и печели живот на всеки 100 кокала. Готов Windows билд — играе се без инсталиран Unity. README: Unity 6 LTS (6000.3.x), Assets/Scripts (PlayerController, GameManager, Coin, BonusPickup, LifePickup, Obstacle, PatrolEnemy, HitBlock, Finish, CameraFollow), Assets/Editor/GameSetupTools.cs, готов билд super_jana_world.exe.
Problem: Хоби проект за излизане извън уеб разработката: пълен, игрален 2D платформър с класически механики, който се сваля и пуска с двоен клик. Role: Цялостно: геймплей скриптове на C# (PlayerController с двоен скок, GameManager, пикъпи, препятствия, PatrolEnemy, HitBlock, CameraFollow), Editor инструменти за процедурно генериране на нивото (терен, пропадания, врагове, удароблокове), звук и Windows билд. Challenge → solution: Дълго ниво с много препятствия, което се балансира и пренарежда бързо, и честно наказание при грешка, без да се връщаш в началото. → Нивото се генерира от Editor tool (GameSetupTools.cs), така че разположението се сменя с едно пускане; checkpoint на последното безопасно място при докосване на вода/шипове; удароблокове с брояч и смяна на цвета, бонус живот на всеки 100 кокала кумулативно. |
GitHub
|
| questionnaire_ai |
PHP, Laravel, OpenAI |
Laravel 12 приложение за създаване и провеждане на тестове/анкети с множествен избор: текстовете и въпросите се генерират с OpenAI; за всеки въпрос — четири опции и индекс на верния отговор; настройки за точки и времеви лимит; страница с резултат и преглед на отговорите. README: Laravel 12, OpenAI (gpt-4o-mini), 4 опции + correct_option, секции × въпроси, /play/{uuid}, резултати; SQLite/MySQL.
Problem: Нужда от бързо генериране на съдържание за тестове и проследимост на опити без ръчно въвеждане на десетки въпроси. Role: Пълен поток: контролери, OpenAI услуга, модели, миграции, Blade изгледи и точкуване. Challenge → solution: Надежден JSON от модела, коректен correct_option и таймер/лимит без да се чупи submit на отговорите. → OpenAiService с Chat Completions, AttemptScoringService, UUID за анкета и опит, настройки в конструктора преди старт. |
GitHub
· Demo
|
| bookingAI |
PHP, Laravel, OpenAI, Sanctum |
Уеб приложение на Laravel 13 и PHP 8.3+ за управление на бизнеси, локации (venues), услуги, клиенти и резервации, с опционални AI възможности (препоръки за слотове, натовареност, чат и др.) чрез OpenAI API. REST API под /api/v1 с Laravel Sanctum (Bearer токен), първоначален съветник за настройка; интерфейс на български с тъмна/светла тема. README: Laravel 13, PHP 8.3+, Blade, Bootstrap 5.3, SQLite/MySQL, REST /api/v1 + Sanctum, OpenAI (gpt-4o-mini по подразбиране), BG UI, API docs за логнати потребители.
Problem: Услуги със записани часове (салони, студия, консултации) се нуждаят от ясно моделиране на локации, работно време, услуги и резервации; желателни са API за интеграции и опционални AI подсказки без да се разчита само на ръчно подреждане на слотове. Role: Пълен Laravel поток: модели и миграции, Blade + Bootstrap 5 UI, Sanctum REST API, конфигурируем OpenAI слой и документация за защитените endpoint-и. Challenge → solution: Достъп до бизнеси и локации по потребител, коректни слотове спрямо продължителност и работни часове; опционални AI функции само при валиден OPENAI_API_KEY. → Домейн модел с venues/services/bookings/customers, wizard за първоначална настройка, JSON API с Sanctum token flow; AI endpoint-и изолирани и активни при конфигурация. |
GitHub
· Demo
|
| SEO AI |
PHP, Laravel, Sanctum, Bootstrap, Vite |
Уеб приложение за SEO и AI съдържание: генериране и управление на блог статии, SEO мета данни, ключови думи, преформулиране на текст, конкурентен анализ по URL и интеграция с WordPress. Включва REST API (/api/v1) с Laravel Sanctum. README: SEO AI (Laravel 13, PHP 8.3, Sanctum, Bootstrap 5, Vite), блог статии, ключови думи, преформулиране, конкуренти, WordPress интеграция и REST API.
Problem: Маркетинг и content екипите се нуждаят от един работен поток за статии, ключови думи, конкурентен анализ и публикуване към WordPress, вместо разпилени инструменти и ръчни копирания. Role: Пълен Laravel поток: CRUD за съдържание, AI генерации, SEO мета, Sanctum API, WordPress интеграция и UI за ежедневна работа. Challenge → solution: Съчетаване на редакторски процес, SEO структура и външни интеграции (OpenAI/WordPress) с предвидимо поведение и бърз UI. → Laravel 13 монолит с модулни секции (статии, keywords, rewrite, competitors, WordPress), централизиран API слой под /api/v1 и UI с Bootstrap 5 + Vite. |
GitHub
|
| email-client |
PHP, Laravel, IMAP, Sanctum |
Уеб приложение на Laravel 13 за четене и управление на поща през IMAP: множество имейл акаунти на потребител, папки (входящи, изходящи, спам, кошче), автоматично откриване на IMAP/SMTP или ръчни настройки, подпис с TinyMCE и REST API под /api/v1 с Laravel Sanctum. Интерфейс на български с тъмна тема; страница /api-docs. README: Laravel 13, PHP 8.3+, IMAP (Webklex), REST /api/v1 + Sanctum, Blade, Tailwind, Alpine.js, PHPUnit, Pint, PHPStan; снимки в public/screenshots/.
Problem: Нужда от „уеб пощенски клиент“ без инсталация на десктоп приложение, с коректно картографиране на IMAP папки при различни доставчици и опция за интеграции през API. Role: Пълен Laravel поток: IMAP слой, акаунти и настройки, Blade + Tailwind UI, Sanctum за /api/v1 и документация за клиентите на API. Challenge → solution: Стабилна работа с различни IMAP сървъри, сигурно съхранение на пароли за поща и ясни граници между уеб UI и JSON API. → webklex/laravel-imap + откриване на SMTP/IMAP настройки, шифровани идентиали в профила, отделни маршрути и токени Sanctum за машинен достъп. |
GitHub
· Demo
|
| f1_live_results |
PHP, JavaScript, OpenF1 |
Малък уеб проект (SWP): PHP backend + JavaScript за текуща/последна F1 сесия — класиране, интервали при състезание и Race Control; календар на сезона и генерално класиране (пилоти и конструктори). Данните от публичния OpenF1 API без API ключ. README: PHP 8.0+, OpenF1 (api.openf1.org), index.php живо табло, calendar.php, standings.php; API: live.php, calendar.php, standings.php; без ключ.
Problem: Феновете и любителите на F1 искат бързо живо табло, календар на уикендите и класирания без тежък SPA или платени източници. Role: Проект цялостно: PHP API слой към OpenF1, страници за табло / календар / класиране, клиентски JS за опресняване (~5 сек) и UI за Race Control. Challenge → solution: Стабилно показване при различни типове сесии (квалификация без интервали, състезание с интервали), временни грешки от API и смислено кеширане за календар/класиране. → Отделни JSON endpoints (live, calendar по година, standings), клиентско fetch с контрол на опресняването и обработка на празни полета описана в README/ЧЗВ. |
GitHub
· Demo
|
| wp_CMS_real_estate |
PHP, WordPress |
WordPress решение (custom плъгин + тема „REP Dark“) за портал за недвижими имоти. CPT за имоти, ремонти и новини, архиви с филтри и shortcodes за начална страница. README: CPT за Properties, Renovation, News; meta boxes; shortcodes; филтрируем архив; тъмна тема REP Dark.
Problem: Нужда от структуриран каталог имоти и съдържание без тежка custom CMS от нулата. Role: Custom плъгин, тема, CPT, shortcodes и шаблони за архиви. Challenge → solution: Гъвкави филтри и повторна употреба на блокове на началната страница. → CPT + таксономии, shortcodes и консистентни шаблони. |
GitHub
|
| wp-api-hotel-booking |
PHP, WordPress, Laravel API |
Минимална WordPress тема + плъгин, който консумира Laravel Hotel Booking API. Списък резервации и форма с dropdown-и и автоматично изчисляване на цена. README: тема + плъгин към Hotel Booking API; копиране в WP; страници и шаблони. API repo: booking-hotel-system-api.
Problem: WordPress трябва да показва и създава резервации чрез съществуващ Laravel API, без дублиране на бизнес логика. Role: WordPress плъгин + тема: HTTP към API, форми, списъци. Challenge → solution: Синхрон на dropdown-и (стаи, дати) и коректно ценообразуване в UI. → Единен API договор, валидация на входа и ясни състояния на формата. |
GitHub
|
| haircut_booking |
PHP, WordPress |
Пълна WordPress инсталация: custom Haircut Booking плъгин и Bootstrap тема за салони. Админ панел за резервации, клиенти, услуги и служители; публичен shortcode. README: booking плъгин + Bootstrap тема за салон; подходящ за beauty, spa, barbers, clinics.
Problem: Салони трябва да управляват резервации и ресурси от едно място. Role: Плъгин (CRUD, права), тема, shortcode за клиенти. Challenge → solution: Конфликти по часове и ясни роли (клиент / админ). → Моделиране на услуги, служители и слотове с валидация. |
GitHub
|
| traffic_tracker |
PHP, Laravel |
Laravel traffic tracker с JS snippet, geo (ip-api.com), админ табло с филтри, изгледи таблица/карти, Excel export и планирани имейл обобщения; Swagger. README: dashboard Blade, trait GeneratesVisitReport, Swagger, диаграми на UI и flow.
Problem: Нужда от проследяване на посещения и география за анализ без външен SaaS. Role: Laravel backend, админ UI, export, Swagger, планирани имейли. Challenge → solution: Филтри и обем данни в таблици; четимост на отчетите. → Индексирани заявки, изгледи таблица/карта и насрочени обобщения. |
GitHub
|
| football_results_live_data |
PHP, WordPress |
WordPress плъгин с API-Football v3: резултати, на живо, програми, голмайстори, класиране; shortcodes и стилове. README: API-Football v3 — мачове, live, програми, голмайстори, таблица; автоматични страници и меню.
Problem: Вграждане на живи футболни данни в WordPress без тежък frontend. Role: Плъгин: API клиент, shortcodes, стилове. Challenge → solution: Лимити на API и кеширане на отговори. → Shortcodes с параметри и разумен кеш спрямо endpoint-и. |
GitHub
|
| booking-hotel-app |
PHP, Laravel |
Laravel синхронизация на резервации, гости, стаи и типове от външен PMS API. Console команда, UI, опашки, логове и CSV след sync. README: sync от PMS API към локална БД; ръчен и насрочен sync; trait-ове за bulk upsert; CSV/отчети.
Problem: Хотелският PMS е извън уеб приложението — нужна надеждна синхронизация с външен API. Role: Backend: команда за sync, модели, опашки, UI за статус и логове. Challenge → solution: Обем, повторяемост и проследимост при грешки от API. → Опашки за асинхронна обработка, логове и експорт след sync за проверка. |
GitHub
|
| Credit-Payment-System |
PHP, Laravel |
Кредитна система: заеми, графици на плащания, плащания; миграции, seeders и Blade UI. README: кредитна система (BG) — заеми, график, плащания; локален старт с composer/npm.
Problem: Моделиране на заеми и график на вноски с проследимост. Role: Laravel: миграции, модели, Blade UI, seeders. Challenge → solution: Коректни изчисления и състояния на плащания. → Ясна релационна структура и валидация на бизнес правила. |
GitHub
|
| openAIChatGTP |
PHP, Laravel, OpenAI |
Laravel + JS интеграция с OpenAI Chat API; Tailwind изгледи и примерен чат. README: OpenAI Chat API, PHP + JS, секция Screenshots с UI примери.
Problem: Вграждане на чат с OpenAI в Laravel с четим UI. Role: Backend proxy към API, frontend с Tailwind, обработка на грешки. Challenge → solution: UX на натоварване и отговори от API. → Асинхронни заявки и ясни състояния в интерфейса. |
GitHub
· Demo
|
| Multi-business bookings |
PHP, Laravel |
Мулти-бизнес резервации (лекари, фризьори, ресторанти): Eloquent модели, Sanctum API, динамично задаване на доставчици и филтри. README в repo: UI снимки към GitHub; Laravel Sanctum, мулти-доставчик.
Problem: Една кодова база за различни типове бизнеси и доставчици. Role: Модели, Sanctum API, филтри и динамика по доставчик. Challenge → solution: Обобщен модел без да се губи специфика по домейн. → Eloquent връзки и конфигурируеми филтри по контекст. |
GitHub
|
| credit-system |
PHP, Laravel |
Уеб приложение за кредити (BG): ГЛП 7.9%, валидация до 80 000 лв. общо, плащания, автентикация, пагинация, статуси. README: описание на модулите и екрани на български; галерия от UI в markdown.
Problem: Кредитна логика за българския пазар с лимити и проследяване на статуси. Role: Laravel приложение: auth, домейн правила, UI с пагинация. Challenge → solution: Валидация на суми и съвкупни лимити. → Централизирана валидация и ясни статуси в базата. |
GitHub
|
| SQLBuilder-Laravel |
PHP, Laravel |
Демо SQLBuilder интерфейс (select, where, limit, getSQL) с UI за преглед на SQL и резултати. README: SQLBuilder за Laravel 10 / PHP 8.1 / Bootstrap 4.3 — select, where, limit, преглед на SQL.
Problem: Образователна/демо визуализация на изграждане на SQL заявки в Laravel. Role: Builder клас + Blade UI за SQL и резултати. Challenge → solution: Безопасно показване на генериран SQL (без raw user SQL в прод). → Контролиран builder API и preview само в демо контекст. |
GitHub
|