01 Проект за клиент Преди старта
Платформа за онлайн печат на снимки
Онлайн магазин за отпечатване на снимки, изграден изцяло — качване на стотици снимки наведнъж, изрязване по всеки размер за печат, пълен каталог и количка, плащане със Stripe, доставка с Еконт и администраторски панел.
Платформа за онлайн поръчка на отпечатани снимки, която изградих сам за частен клиент — изцяло, от архитектурата до готов за продукция процес за плащане и доставка.
Платформата е завършена откъм функционалност и обстойно тествана и е в етап преди старта: чака клиента да завърши стъпките по пускането (проверка при платежния доставчик и реалния адрес на магазина). Хранилището е частно, затова няма публичен код, линк към работеща версия или екранни снимки с клиентски данни. След пускането ще добавя тук официалния домейн и екранни снимки.
Какво прави
За клиентите
- Библиотека със снимки — качване на стотици снимки наведнъж с плъзгане и пускане, с прогрес в реално време и статус за всяка снимка. При качване снимките, които се показват в сайта, се конвертират до WebP — за по-бързо зареждане и по-малко място за съхранение, а оригиналът остава непроменен.
- Редактор за изрязване — всяка снимка се изрязва автоматично точно по пропорциите на избрания размер за печат и може да се нагласи с плъзгане и завъртане; нищо не се фиксира окончателно преди поръчката.
- Каталог и количка — йерархични категории, самостоятелни отпечатъци и продукти със снимки (албуми, чаши) с комбинирано ценообразуване (цена на снимка плюс цена на хартията) и система за промоции.
- Поръчка и плащане — плащане чрез Stripe Checkout и цени за доставка с Еконт в реално време при поръчката (до офис или до адрес), с праг за безплатна доставка, който администраторът настройва.
Администраторски панел
- Управление на каталога — категории, продукти, размери за печат, видове хартия, цени и промоции.
- Обработка на поръчки — изглед като списък и като канбан табло, детайли за всяка поръчка и генериране на товарителници.
- Клиенти — списък с търсене, управление на роли и индивидуални лимити за всеки акаунт.
- Табло с приходите — брутните приходи, възстановените суми и нетният приход се показват поотделно, а не слети в едно число.
- Одитна следа — записват се промените по роли, лимити и поръчки.
С какво се гордея
-
Сигурност на плащанията
Поръчките се създават преди плащането и се потвърждават само от Stripe webhooks с проверен подпис — страницата, към която клиентът се връща след плащане, никога не се приема като доказателство за плащане. Обработката на webhooks е идемпотентна, а наличностите се намаляват атомарно (
WHERE stock >= quantity) — коректността е проверена при реално едновременно натоварване, а не просто допусната. -
Правила за връщане на пари и отказ, които следват бизнеса, а не само кода
Парите се връщат автоматично само докато нищо не е произведено — дотогава правото на клиента на пълно възстановяване е безспорно. След като изпълнението на поръчката е започнало, отказът отива при администратор за изрично потвърждение, а постоянен индикатор „дължимо връщане“ (в списъка, таблото и детайлите на поръчката) го държи на видно място, докато не бъде уреден — никакви пари не остават незабелязано при магазина.
-
Пълноценен онлайн магазин, а не просто инструмент за снимки
Йерархичен каталог, ценообразуване в количката, което излиза точно до стотинка при всеки тип продукт, и система за промоции, в която общият праг за безплатна доставка и безплатната доставка с промокод се комбинират коректно — проверено и при двете активни едновременно, като на администратора се показва причината, за да не се надценява ефектът от кампанията.
-
Изрязване без загуба
Изрязванията се пазят като координати спрямо оригиналната снимка — автоматично по подразбиране, с ръчна корекция при нужда — така изходният файл никога не се променя и нищо не се губи, ако решението се промени по-късно.
-
Интеграция с куриер Еконт
Търсене на адреси и офиси в реално време, цени за доставка в реално време и генериране на товарителници от администратора — включително справяне с особеностите на самия Еконт (отговори, в които адресът е разделен на отделни полета за улица и квартал, несиметрични грешки при валидация), открити и отстранени чрез директно тестване на API-то, а не с догадки.
-
Дисциплина в тестването
Над 1000 автоматизирани теста и навик за мутационно тестване при всяка нетривиална поправка — грешката умишлено се връща обратно, за да се потвърди, че тестът наистина я улавя, а не само че минава.