Profesjonalna platforma do zarządzania zakupami przemysłowymi z wbudowanym CRM
- O projekcie
- Główne funkcjonalności
- Technologie
- Instalacja
- Konfiguracja
- Struktura projektu
- API i Integracje
- Bezpieczeństwo
- Licencja
ProProcurement to kompleksowa aplikacja webowa stworzona dla firm zajmujących się outsourcingiem zakupów przemysłowych. Łączy elegancką stronę publiczną z zaawansowanym panelem CRM, umożliwiając efektywne zarządzanie zapytaniami ofertowymi, generowanie profesjonalnych ofert PDF oraz prowadzenie bazy wiedzy.
- 🌐 Dwujęzyczność - pełne wsparcie dla języka polskiego i angielskiego
- 🔐 Bezpieczeństwo 2FA - logowanie dwuetapowe z Google Authenticator / Proton Authenticator
- 📊 Dashboard analityczny - wykresy i statystyki w czasie rzeczywistym
- 💱 Integracja NBP - automatyczne przeliczanie walut wg kursu NBP
- 📧 System mailingowy - powiadomienia i newsletter
| Funkcja | Opis |
|---|---|
| Strona główna | Nowoczesny landing page z sekcjami: Hero, O nas, Usługi, Portfolio, Blog, Kontakt |
| Formularz RFQ | Zapytania ofertowe z obsługą załączników (PDF, DWG, STEP, ZIP) |
| Baza wiedzy | Blog z edytorem WYSIWYG (Trix) i optymalizacją SEO |
| Portfolio | Galeria zrealizowanych projektów z kategoriami |
| Newsletter | System subskrypcji z linkiem do wypisania |
| Wielojęzyczność | Automatyczne przełączanie PL/EN |
| Moduł | Funkcjonalności |
|---|---|
| Dashboard | KPI, wykres zapytań (Chart.js), ostatnie zgłoszenia, wartość ofert |
| Zarządzanie RFQ | Lista zapytań, zmiana statusów, podgląd szczegółów, pobieranie załączników |
| Generator Ofert | Tworzenie ofert PDF, obsługa wielu walut (PLN/EUR/USD), przelicznik NBP |
| Usługi | CRUD usług z wersjami PL/EN |
| Portfolio | Zarządzanie realizacjami z uploadem zdjęć |
| Blog | Edytor Trix, publikacja/szkice, SEO-friendly slugi |
| Newsletter | Wysyłka masowa, lista subskrybentów |
| Backup | Tworzenie i pobieranie kopii zapasowych bazy danych |
| Profil | Edycja danych, konfiguracja 2FA |
PHP 8.2+ | Laravel 12 | Eloquent ORM
Blade Templates | Tailwind CSS 3.x | Alpine.js | Chart.js | Trix Editor
MySQL / PostgreSQL / SQLite
| Pakiet | Zastosowanie |
|---|---|
laravel/breeze |
Uwierzytelnianie |
barryvdh/laravel-dompdf |
Generowanie PDF |
pragmarx/google2fa |
Dwuetapowa weryfikacja |
spatie/laravel-backup |
System backupów |
NBP API |
Kursy walut |
Docker (Laravel Sail) | Vite | NPM
- PHP >= 8.2
- Composer
- Node.js >= 18
- MySQL / PostgreSQL / SQLite
# 1. Klonowanie repozytorium
git clone https://github.com/WoofDeveloper/firma-app.git
cd firma-app
# 2. Instalacja zależności PHP
composer install
# 3. Instalacja zależności Node.js
npm install
# 4. Konfiguracja środowiska
cp .env.example .env
php artisan key:generate
# 5. Konfiguracja bazy danych w .env
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_DATABASE=firma_app
# DB_USERNAME=root
# DB_PASSWORD=
# 6. Migracje
php artisan migrate
# 7. Uruchomienie
php artisan serve
npm run dev# Uruchomienie z Docker
./vendor/bin/sail up -d
# Migracje w kontenerze
./vendor/bin/sail artisan migrate# Aplikacja
APP_NAME="ProProcurement"
APP_URL=http://localhost
# Poczta (dla powiadomień i newslettera)
MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_FROM_ADDRESS="biuro@proprocurement.pl"
# Backup (opcjonalne)
BACKUP_NOTIFICATION_EMAIL=admin@example.com# Dodaj do crontab dla automatycznych zadań
* * * * * cd /path-to-project && php artisan schedule:run >> /dev/null 2>&1Zaplanowane zadania:
sitemap:generate- codziennie o 2:00 (generowanie mapy strony)
firma-app/
├── app/
│ ├── Console/Commands/ # Komendy Artisan (sitemap)
│ ├── Http/
│ │ ├── Controllers/
│ │ │ ├── Admin/ # Kontrolery panelu CRM
│ │ │ └── ... # Kontrolery publiczne
│ │ └── Middleware/ # 2FA, Language
│ ├── Mail/ # Szablony maili
│ ├── Models/ # Eloquent Models
│ └── Services/ # Serwisy (NBP API)
├── database/
│ └── migrations/ # Migracje bazy danych
├── lang/
│ ├── en/ # Tłumaczenia angielskie
│ └── pl/ # Tłumaczenia polskie
├── resources/
│ ├── css/ # Style Tailwind
│ ├── js/ # Alpine.js
│ └── views/
│ ├── admin/ # Widoki panelu CRM
│ ├── auth/ # Logowanie, 2FA
│ ├── emails/ # Szablony email
│ ├── layouts/ # Layouty (app, guest)
│ └── partials/ # Komponenty (navbar, cookies)
├── routes/
│ ├── web.php # Trasy główne
│ └── console.php # Harmonogram zadań
└── public/ # Pliki publiczne
Automatyczne pobieranie kursów walut dla ofert w EUR/USD:
// app/Services/NbpService.php
$rate = NbpService::getRate('EUR'); // Zwraca aktualny kursphp artisan sitemap:generate| Funkcja | Opis |
|---|---|
| 2FA (TOTP) | Dwuetapowa weryfikacja z Google/Proton Authenticator |
| CSRF Protection | Ochrona formularzy |
| Middleware Auth | Chronione trasy panelu |
| Signed URLs | Bezpieczne linki wypisania z newslettera |
| File Validation | Walidacja typów i rozmiarów załączników |
- Zaloguj się do panelu
- Przejdź do Profil → Bezpieczeństwo (2FA)
- Zeskanuj kod QR aplikacją Authenticator
- Wprowadź kod weryfikacyjny
User ─────────────── (auth, 2FA)
│
Rfq ──────────────── (zapytania ofertowe)
│
└── Offer ──────── (oferty)
│
└── OfferItem (pozycje oferty)
Service ─────────── (usługi)
Project ─────────── (portfolio)
Post ────────────── (blog)
Subscriber ──────── (newsletter)
- Fork repozytorium
- Utwórz branch (
git checkout -b feature/AmazingFeature) - Commit (
git commit -m 'Add AmazingFeature') - Push (
git push origin feature/AmazingFeature) - Otwórz Pull Request
Projekt jest dostępny na licencji MIT. Zobacz plik LICENSE po szczegóły.
WoofDeveloper
- GitHub: @WoofDeveloper
⭐ Jeśli projekt Ci się podoba, zostaw gwiazdkę! ⭐