Projekt backendowy sklepu internetowego z odzieżą używaną, zbudowany na frameworku Laravel 11. Aplikacja obsługuje zarządzanie produktami, koszykiem zakupowym, zamówieniami, płatnościami przez Stripe oraz systemem rabatowym.
- Zarządzanie produktami - CRUD dla produktów z kategoriami, stanem magazynowym i zdjęciami
- Koszyk zakupowy - Dodawanie, edycja i usuwanie produktów z koszyka
- System zamówień - Tworzenie zamówień z automatyczną numeracją i śledzeniem statusu
- Płatności Stripe - Integracja z Laravel Cashier i Stripe Payment Intents
- System rabatowy - Kody rabatowe z walidacją (procentowe i stałe)
- Zarządzanie stanem magazynowym - Rezerwacja, zwolnienie i blokady pesymistyczne
- Autentykacja - Laravel Breeze API z logowaniem przez Google (Socialite)
- Webhooks Stripe - Obsługa zdarzeń płatności (succeeded, failed, canceled, refunded)
- Generowanie faktur PDF - Asynchroniczne generowanie faktur przez kolejki (Dompdf)
- Events i Listeners - Obsługa zdarzeń zmiany statusu zamówień
- REST API - Pełne API z zasobami (API Resources) dla frontendu
- Laravel 11.x - Framework PHP
- PHP 8.3 - Język programowania
- MySQL 8.0 - Baza danych relacyjna
- Laravel Sanctum - Autentykacja API (tokeny)
- Laravel Breeze - Scaffolding autentykacji API
- Laravel Cashier - Integracja z Stripe dla płatności
- Laravel Socialite - Logowanie przez Google OAuth
- Dompdf - Generowanie faktur PDF
- Docker & Docker Compose - Konteneryzacja aplikacji
- Nginx - Serwer WWW (Alpine)
- PHP-FPM - Procesor PHP
- Composer - Menadżer zależności PHP
- Laravel Pint - Narzędzie do formatowania kodu
- PHPUnit 11.x - Framework testowy
- Mockery - Mockowanie zewnętrznych API (Stripe)
- RefreshDatabase - Testy z transakcjami bazy danych
- GitHub Actions - CI/CD pipeline
- Git - Kontrola wersji
- Docker Desktop (lub Docker Engine + Docker Compose)
- Docker Hub Account (wymagane uwierzytelnienie dla pobierania obrazów)
- Minimum 4GB RAM
- 10GB wolnego miejsca na dysku
git clone https://github.com/gmaxsoft/Laravel_Ecomerce_Backend.git
cd Laravel_Ecomerce_BackendPrzed instalacją upewnij się, że jesteś zalogowany do Docker Hub:
docker logindocker-compose up -d --build
docker-compose exec app composer installSkopiuj plik .env.example do .env:
cp .env.example .envNastępnie wygeneruj klucz aplikacji:
docker-compose exec app php artisan key:generateW pliku .env ustaw:
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=secretdocker-compose exec app php artisan migrateW pliku .env dodaj klucze Stripe:
STRIPE_KEY=pk_test_your_publishable_key
STRIPE_SECRET=sk_test_your_secret_key
STRIPE_WEBHOOK_SECRET=whsec_your_webhook_secretW pliku .env dodaj klucze Google:
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GOOGLE_REDIRECT_URI=http://localhost/api/auth/google/callbackdocker-compose up -dAplikacja będzie dostępna pod adresem: http://localhost
Laravel_Ecomerce_Backend/
├── app/
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── Api/ # Kontrolery API (Product, Cart, Order, Coupon, Webhook)
│ │ │ └── Auth/ # Kontrolery autentykacji (Login, Register, Social)
│ │ ├── Middleware/ # Middleware aplikacji
│ │ ├── Requests/ # Form Request walidacja
│ │ └── Resources/ # API Resources (ProductResource, OrderResource, etc.)
│ ├── Events/ # Eventy (OrderCreated, OrderStatusChanged)
│ ├── Listeners/ # Listenery (SendOrderStatusNotification)
│ ├── Jobs/ # Kolejki (GenerateInvoicePdf)
│ ├── Services/ # Serwisy biznesowe (InventoryService)
│ ├── Models/ # Modele Eloquent (User, Product, Order, Cart, Coupon, Payment)
│ └── Providers/ # Service Providers
├── config/ # Pliki konfiguracyjne (cashier, services, sanctum)
├── database/
│ ├── factories/ # Factory dla testów (UserFactory, ProductFactory, etc.)
│ ├── migrations/ # Migracje bazy danych
│ └── seeders/ # Seedery danych
├── routes/
│ ├── api.php # Trasy API REST
│ ├── auth.php # Trasy autentykacji
│ └── web.php # Trasy web
├── resources/
│ └── views/
│ └── invoices/ # Szablony faktur PDF
├── tests/
│ ├── Feature/ # Testy funkcjonalne (OrderController, WebhookController)
│ └── Unit/ # Testy jednostkowe (InventoryService)
├── docker-compose.yml # Konfiguracja Docker
├── Dockerfile # Obraz PHP-FPM
└── nginx/ # Konfiguracja Nginx
POST /api/auth/register - Rejestracja użytkownika
POST /api/auth/login - Logowanie
POST /api/auth/logout - Wylogowanie (wymaga autoryzacji)
GET /api/auth/google/redirect - Przekierowanie do Google OAuth
GET /api/auth/google/callback - Callback Google OAuth
GET /api/products - Lista produktów (publiczne)
GET /api/products/{id} - Szczegóły produktu (publiczne)
POST /api/admin/products - Utworzenie produktu (admin, wymaga autoryzacji)
PUT /api/admin/products/{id} - Aktualizacja produktu (admin, wymaga autoryzacji)
DELETE /api/admin/products/{id} - Usunięcie produktu (admin, wymaga autoryzacji)
GET /api/cart - Pobranie koszyka (wymaga autoryzacji)
POST /api/cart/items - Dodanie produktu do koszyka (wymaga autoryzacji)
PUT /api/cart/items/{id} - Aktualizacja pozycji koszyka (wymaga autoryzacji)
DELETE /api/cart/items/{id} - Usunięcie pozycji z koszyka (wymaga autoryzacji)
DELETE /api/cart - Wyczyszczenie koszyka (wymaga autoryzacji)
GET /api/orders - Lista zamówień użytkownika (wymaga autoryzacji)
POST /api/orders - Utworzenie zamówienia (wymaga autoryzacji)
GET /api/orders/{id} - Szczegóły zamówienia (wymaga autoryzacji)
GET /api/coupons - Lista kuponów (publiczne)
GET /api/coupons/{code} - Szczegóły kuponu (publiczne)
POST /api/coupons/validate - Walidacja kuponu (wymaga autoryzacji)
POST /api/webhooks/stripe - Webhook Stripe (weryfikacja sygnatury)
- users - Użytkownicy (z integracją Cashier)
- products - Produkty z informacjami o stanie magazynowym
- carts - Koszyki zakupowe użytkowników
- cart_items - Pozycje w koszyku
- orders - Zamówienia
- order_items - Pozycje zamówienia
- coupons - Kody rabatowe
- payments - Płatności Stripe
- subscriptions - Subskrypcje (Cashier)
- subscription_items - Pozycje subskrypcji
# Wszystkie testy
docker-compose exec app php artisan test
# Tylko testy funkcjonalne
docker-compose exec app php artisan test --testsuite=Feature
# Tylko testy jednostkowe
docker-compose exec app php artisan test --testsuite=Unit
# Z pokryciem kodu
docker-compose exec app php artisan test --coverage- Feature Tests - Testy integracyjne API z mockowaniem Stripe
- Unit Tests - Testy jednostkowe serwisów (InventoryService)
- Mocking - Użycie Mockery do mockowania zewnętrznych API
- Database Transactions - Transakcje DB w testach dla izolacji
- app - Kontener PHP-FPM 8.3 (port 9000)
- webserver - Kontener Nginx Alpine (port 80)
- db - Kontener MySQL 8.0 (port 3306)
Host: localhost
Port: 3306
Database: laravel
Username: laravel
Password: secret
Root Password: root
# Uruchomienie kontenerów
docker-compose up -d
# Zatrzymanie kontenerów
docker-compose down
# Wyświetlenie logów
docker-compose logs -f
# Wykonanie komendy Artisan
docker-compose exec app php artisan [komenda]
# Wykonanie komendy Composer
docker-compose exec app composer [komenda]
# Dostęp do konsoli kontenera
docker-compose exec app bash
# Uruchomienie migracji
docker-compose exec app php artisan migrate
# Uruchomienie seeders
docker-compose exec app php artisan db:seed
# Czyszczenie cache
docker-compose exec app php artisan config:clear
docker-compose exec app php artisan cache:clear
docker-compose exec app php artisan view:clear
# Formatowanie kodu (Laravel Pint)
docker-compose exec app ./vendor/bin/pint# Aplikacja
APP_NAME="Laravel E-commerce"
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost
# Baza danych
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=secret
# Stripe (płatności)
STRIPE_KEY=pk_test_...
STRIPE_SECRET=sk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...
# Google OAuth
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...
GOOGLE_REDIRECT_URI=http://localhost/api/auth/google/callback
# Kolejki
QUEUE_CONNECTION=database- Sanctum Token Authentication - Autoryzacja API przez tokeny
- Webhook Signature Verification - Weryfikacja sygnatur Stripe webhooków
- Input Validation - Walidacja wszystkich danych wejściowych
- SQL Injection Protection - Ochrona przez Eloquent ORM
- XSS Protection - Escapowanie danych w widokach
- CSRF Protection - Ochrona przed atakami CSRF
- Rate Limiting - Ograniczenie liczby requestów
- Użytkownik dodaje produkty do koszyka
- Tworzy zamówienie (
POST /api/orders) - System rezerwuje stan magazynowy (pessimistic locking)
- Tworzony jest Stripe Payment Intent
- Frontend obsługuje płatność przez Stripe.js
- Webhook Stripe (
payment_intent.succeeded) potwierdza płatność - System potwierdza zamówienie i zmniejsza stan magazynowy
- Generowana jest faktura PDF (asynchronicznie przez kolejki)
Jeśli otrzymujesz błąd "authentication required", zaloguj się do Docker Hub:
docker loginJeśli masz problemy z uprawnieniami do katalogów storage i cache:
docker-compose exec app chmod -R 775 storage bootstrap/cache
docker-compose exec app chown -R www-data:www-data storage bootstrap/cacheAby przetwarzać zadania w kolejce:
docker-compose exec app php artisan queue:workJeśli masz problemy z migracjami, możesz je przywrócić:
docker-compose exec app php artisan migrate:fresh
docker-compose exec app php artisan migrate:refreshProjekt stworzony przez gmaxsoft.
Projekt jest otwartoźródłowy i dostępny na licencji MIT.
✅ Projekt ukończony - Wszystkie funkcjonalności zostały zaimplementowane i przetestowane.
- ✅ Modele z relacjami i soft deletes
- ✅ Autentykacja (Breeze + Socialite Google)
- ✅ Laravel Cashier (Stripe Payment Intents)
- ✅ API Resources i Controllers
- ✅ Events/Listeners i Queues (PDF faktury)
- ✅ System rabatów (Coupons)
- ✅ Zarządzanie stanem magazynowym (Inventory Management)
- ✅ Webhooks Stripe
- ✅ Testy z mockowaniem i transakcjami DB
Gotowe do użycia w produkcji! 🚀