DEVCRAFTED.PL
Case study

Mono Orbit Awards: platforma do konkursów fotograficznych online, od zgłoszenia zdjęcia do ogłoszenia zwycięzców

System CMS do internetowych konkursów fotograficznych z oceną Jury i płatnościami PayPal

O projekcie

Platforma, na której organizator prowadzi konkursy fotograficzne online: uczestnicy płacą za udział i wysyłają zdjęcia w wybranych kategoriach, a jury ustala ranking i ogłasza zwycięzców. Organizator sam zarządza w panelu konkursami, zgłoszeniami, zamówieniami, treściami strony i newsletterem. Zaprojektowałem i zbudowałem całość, backend i frontend, i dalej odpowiadam za rozwój i wdrożenia.

Wyzwanie

Organizator konkursów fotograficznych online potrzebował własnej platformy: uczestnik zakłada konto, opłaca udział, wybiera kategorię i przesyła zdjęcia, a Jury ustala ranking i publikuje zwycięzców. Do tego treści strony, newsletter i ustawienia edycji zarządzane bez programisty. Platforma przyjmuje płatności i duże pliki zdjęć, więc musiała pewnie rozliczać wpłaty, chronić zdjęcia przed publikacją i szybko ładować galerie.

Moja rola

  • Architektura aplikacji
  • Backend Developer
  • Frontend Developer
  • Optymalizacja wydajności
  • Wdrożenie produkcyjne

Zakres funkcjonalny

  • Zgłoszenia konkursowe
    Rejestracja, opłata za udział, wybór kategorii i przesłanie zdjęć w limicie ustawionym dla konkursu.
  • Konkursy i kategorie
    Edycje z kategoriami, opłatą, limitami zgłoszeń i zdjęć, polami SEO oraz automatycznym zamykaniem po terminie.
  • Ocena Jury i zwycięzcy
    Statusy zgłoszeń, miejsca w rankingu, wiadomości do uczestników i strona zwycięzców z podziałem na kategorie.
  • Płatności PayPal
    Opłata za udział z potwierdzeniem po stronie serwera, dziennik prób płatności i ręczna aktywacja zamówień.
  • Panel uczestnika
    Status zgłoszeń, pozycja w rankingu, historia zamówień i ustawienia konta z opcjonalnym 2FA.
  • Panel administracyjny i CMS
    Konkursy, zgłoszenia, zamówienia, użytkownicy, strony, shortcodes, slider i branding zarządzane bez programisty.
  • Newsletter
    Zapis z potwierdzeniem adresu, kampanie planowane w czasie oraz kolejka i historia wysyłek.

Rozwiązanie

Zgłoszenia konkursowe od rejestracji do zdjęcia

Rejestracja z weryfikacją e-mail, opłata za udział, wybór kategorii i przesłanie zdjęć w limicie ustawionym dla konkursu. Uczestnik widzi w panelu status zgłoszenia, pozycję w rankingu i historię zamówień.

Konkursy, kategorie i edycje

Każda edycja ma własne kategorie, opłatę, limit zgłoszeń i zdjęć, baner oraz pola SEO. Konkurs przechodzi przez kolejne statusy i zamyka się automatycznie po terminie.

Ocena Jury i strona zwycięzców

Jury w panelu administratora zatwierdza lub odrzuca zgłoszenia, nadaje miejsca w rankingu i wysyła uczestnikom wiadomości e-mail. Zwycięzcy pojawiają się na stronie z podziałem na kategorie, a zdjęcia niezatwierdzone pozostają prywatne.

Płatności PayPal i panel zamówień

Opłata za udział przez PayPal (także kartą) z potwierdzeniem po stronie serwera. Potwierdzenia wychodzą dopiero po zaksięgowaniu wpłaty, każda próba płatności trafia do dziennika, a administrator może aktywować zamówienie opłacone inną drogą.

CMS i newsletter w jednym panelu

Strony z polami SEO, shortcodes, slider strony głównej, menu i branding zmieniany bez programisty. Newsletter z potwierdzeniem zapisu, kampaniami planowanymi w czasie oraz kolejką i historią wysyłek.

Wydajność, SEO i analityka

Zdjęcia skalowane i konwertowane do WebP, CSS bez nieużywanych reguł, stabilny układ strony głównej. Dynamiczna mapa witryny, dane strukturalne oraz GA4 i Google Tag Manager z Consent Mode v2 i serwerowym zdarzeniem zakupu.

Efekt

  • Organizator sam prowadzi w panelu konkursy, zgłoszenia, płatności, treści strony i newsletter, bez programisty.

Architektura

  • Modularny monolit w Laravelu: kilkanaście modułów (m.in. konkursy, zamówienia, newsletter, strony CMS, pliki, konta), każdy z własnymi trasami, serwisami i widokami.
  • Serwisy za interfejsami, repozytoria, DTO i Form Requests; role i uprawnienia oparte na Spatie Permission.
  • Frontend renderowany po stronie serwera (Blade, jQuery) na moim autorskim frameworku JS/CSS, budowany przez Laravel Mix i Webpack; panele pobierają dane z wewnętrznego API JSON.
  • Kolejki w Redis pod Laravel Horizon oraz harmonogram zadań: zamykanie konkursów, porządkowanie kont, kopiowanie i usuwanie plików.
  • Powiadomienia e-mail i zdarzenia w czasie rzeczywistym przez WebSocket (Laravel Echo), np. po opłaceniu zamówienia lub weryfikacji adresu e-mail.
  • Bezpieczeństwo kont i danych: opcjonalne 2FA z zaufanymi urządzeniami, Content Security Policy, reCAPTCHA v3, limity żądań na formularzach publicznych i prywatny dysk na zdjęcia przed publikacją.

Mój wkład

  • Zaprojektowanie i zbudowanie całego systemu – backend i frontend – na własnym modułowym szkielecie dla Laravela i autorskim frameworku JS/CSS.
  • Rozwój po starcie: przejście z subskrypcji na opłatę za udział w konkursie, zgłoszenia wielozdjęciowe, panel zamówień z dziennikiem płatności i ręczną aktywacją.
  • Wdrożenie GA4 i Google Tag Manager z Consent Mode v2, poprawki SEO i wydajności oraz testy automatyczne (PHPUnit) na osobnej bazie testowej.
  • Wdrożenia produkcyjne na VPS: Horizon, harmonogram zadań i migracje danych z kopią zapasową; praca w modelu AI-first z Claude Code, decyzje techniczne po mojej stronie.

Technologie

  • Laravel
  • PHP
  • MySQL
  • Redis
  • Laravel Horizon
  • Queue
  • Scheduler
  • JavaScript
  • jQuery
  • Laravel Mix
  • Webpack
  • WebSocket
  • Laravel Echo
  • PayPal
  • Spatie Permission
  • PHPUnit
  • GA4
  • Google Tag Manager
  • Claude Code
  • ChatGPT

Potrzebujesz platformy z płatnościami i panelem, w którym zmienisz wszystko sam? Napisz, co ma robić. Odpowiem w ciągu 24 godzin.

Napisz do mnie
Autopromocja

Nabyto.pl – e-booki i workbooki PDF po polsku

Konkretne materiały w PDF: pobierasz od razu po zakupie, drukujesz albo wypełniasz na ekranie. Bez DRM, bez subskrypcji i bez zakładania konta.

Odwiedź Nabyto.pl
Kontakt

Masz projekt albo problem z aplikacją? Napisz, odpowiem w ciągu 24 godzin.

Napisz do mnie
Telefon