Genel bakış#
Workora, eksiksiz bir freelance pazaryeri scriptidir. Müşteriler proje yayınlayıp teklif alır ya da hazır hizmet satın alır. Para aşamalı emanet üzerinden hareket eder, her üyenin bir cüzdanı vardır ve her ödeme çift kayıtlı defterde tutulur.
Ürün sürümü 1.0.0 olup Laravel 13 üzerine kuruludur. Genel site, üye alanı ve yönetim paneli içerir; İngilizce ve Arapça gelir.


Gereksinimler#
| Öğe | Gerekli |
|---|---|
| PHP | 8.4 veya üzeri |
| PHP eklentileri | bcmath, ctype, curl, fileinfo, gd (WebP ile), intl, mbstring, openssl, pdo_mysql, tokenizer, xml, zip. sodium yalnızca imzalı güncellemeler için gerekir. |
| Veritabanı | MySQL 8.0+ veya MariaDB 10.6+ (utf8mb4) |
| Web sunucusu | HTTPS’li Apache, Nginx veya LiteSpeed |
| Cron | Her dakika çalışan tek görev |
Sunucuda Node.js veya Composer gerekmez: paket bağımlılıklarını ve derlenmiş stillerini içerir.
Kurulum#
1-Source/workoraklasörünün içeriğini sunucunuza yükleyin. Web köküpublicklasörünü göstermelidir.- Boş bir MySQL veritabanı ve kullanıcı oluşturun.
- Tarayıcıda
https://your-domain/installadresini açın. Sihirbaz sunucunuzu denetler, ardından veritabanını, site adını ve adresini, saat dilimini ve yönetici hesabını sorar. - Bitince eklemeniz gereken cron satırını gösterir. Sonra
/loginile giriş yapıp/adminadresini açın.
Komut satırı (isteğe bağlı)
php artisan app:install \
--db-name=workora --db-user=root --db-password=secret \
--app-name="My Marketplace" --app-url=https://example.com \
--admin-name="Admin" --admin-username=admin \
--admin-email=admin@example.com --admin-password="a-strong-password"
Veritabanını oluşturmak için --create-database, örnek veri için --demo ekleyin (yalnızca demo siteleri).
Cron görevi#
Tek bir görev her şeyi çalıştırır: ertelenmiş e-posta ve bildirimler, sözleşmelerin otomatik serbest bırakılması, proje süresi dolumu, paket yenileme, toplantı hatırlatmaları, değerlendirme istatistikleri, gece defter mutabakatı ve yedekler.
* * * * * cd /path/to/workora && php artisan schedule:run >> /dev/null 2>&1
Yönetimdeki Sağlık sayfası zamanlayıcının yakın zamanda çalışıp çalışmadığını gösterir.
İlk adımlar#
- Ayarlar → Genel: site adı, metin logosu, ana para birimi (yayından önce seçin), iletişim e-postası, saat dilimi, varsayılan ülke.
- Görünüm: tema, renkler, logo, simge, genişlik, ana sayfa bölümleri, çerez bildirimi.
- Diller: dilleri açın, varsayılanı seçin ve çevirileri gözden geçirin.
- Ödemeler: geçitleri açın; komisyon, yatırma ve çekim kurallarını ayarlayın.
- E-posta: SMTP’yi ayarlayın ve deneme e-postası gönderin.
- İçerik: sayfaları, SSS’yi, blogu ve yorumları düzenleyin.
- Kategoriler: 14 ana ve 125 alt kategoriyi alanınıza göre uyarlayın.


Ödemeler#
Yöntemleri Ayarlar → Ödemeler bölümünden açın. Her biri, sağlayıcıya kaydedeceğiniz webhook adresini gösterir.
| Yöntem | Notlar |
|---|---|
| Stripe | Kartlar. Gizli anahtar ve webhook imza sırrı. Adres: /webhooks/stripe |
| PayPal | Sandbox veya canlı; client ID, sır ve webhook ID. Adres: /webhooks/paypal |
| Paystack, Razorpay, Flutterwave | Anahtarlar ve webhook sırları; adresler /webhooks/{gateway} altında |
| Banka havalesi | Hesap bilgileriniz; üyeler dekont yükler, ekip onaylar |
Yatırmaların alt ve üst sınırı vardır. Çekimler PayPal veya banka bilgisiyle yapılır; alt sınır, isteğe bağlı ücret, isteğe bağlı bekletme süresi ve açık talep limiti vardır.
E-posta#
Ayarlar → E-posta bölümünü bir SMTP sunucusuna ayarlayın ve deneme gönderin. O zamana dek iletiler günlüğe yazılır. Bildirimler ertelenir ve cron ile bir dakika içinde gönderilir. Üyeler hangi kategorilerin gelen kutusuna düşeceğini bildirim ayarlarından seçer.
Görünüm ve temalar#
Yönetim → Görünüm tüm görünümü kodsuz yönetir: sekiz temadan biri, ana ve vurgu renkleri, gri tonu, köşe yuvarlaklığı, yazı tipi, gölgeler, başlık ve yan çubuk stili, renk modu (açık, koyu, otomatik). Logo (koyu sürümüyle) ve simge yükleyin.
Düzen: standart, geniş veya tam genişlik ve kart yoğunluğu. Ana sayfa: bölümleri açıp kapatın (kategori şeridi, rakamlar, neden biz, en iyi freelancerlar, projeler, yorumlar, afişler), kategori satırı sayısını ve kayan şerit mi ızgara mı olacağını seçin. Üyeler renk modunu, izin verirseniz temayı da seçer.


Diller ve RTL#
Diller açık dilleri listeler. Hazır şablondan veya kodla dil ekleyin, yönünü ve bayrağını seçin, sonra Çevir ile her metni aranabilir tabloda düzenleyin, JSON içe/dışa aktarın ve çevrilmeyenleri görün. Kategori, beceri, sayfa, blog ve SSS içerikleri her öğenin düzenleyicisinde çevrilir.
RTL dillerde arayüz tamamen yön değiştirir. Her dilin dizinlenebilir adresi (?lang=tr), hreflang bağlantıları ve çok dilli site haritası vardır.
Para nasıl işler#
- Müşteri cüzdanından bir aşamayı finanse eder ve para emanete geçer.
- Freelancer teslim eder; müşteri onaylar (ödeme komisyon düşülerek serbest bırakılır), revizyon ister veya uyuşmazlık açar. Müşteri hiçbir şey yapmazsa belirlenen gün sonra ödeme otomatik serbest bırakılır.
- Her hareket çift kayıtlı defterde dengeli bir kayıttır. Gece görevi cüzdanların, emanetin ve gelirin tuttuğunu kanıtlar.
Komisyon
Ayarlar → Ödemeler bölümünde platform oranını, ödeme başına isteğe bağlı asgari komisyonu, her kategori için farklı oranı ve her paket için daha düşük oranı belirleyin. Öncelik: paket, kategori, varsayılan. Sözleşme, oluşturulduğu andaki oranı korur.
Üyeler ve moderasyon#
Ekip rolleri (yönetici, moderatör, finans, destek) yalnızca ihtiyaçları kadar yetkilidir; ekip hesapları iki adımlı doğrulama gerektirir. Kullanıcılar bölümünde arama yapabilir, üyeleri askıya alabilir veya yasaklayabilir ve rol atayabilirsiniz. Projeler ve hizmetler yayından önce incelenebilir; değerlendirme ve şikâyetlerin kendi kuyrukları vardır; ekip uyuşmazlıkları kayıtlı bir notla karara bağlar.
İçerik ve SEO#
Sayfaları, blogu, SSS’yi ve yorumları İçerik bölümünden yönetin; hepsi çevrilebilir. Workora dil alternatifli site haritası, canonical etiketleri, Open Graph, hizmetler için yapılandırılmış veri ve robots kuralları üretir. Genel sayfalar hızlıdır ve önbelleğe uygundur.
Paketler, Connects ve limitler#
Kazanç sağlamanın ve etkinliği düzenlemenin üç bağımsız yolu; birini veya hepsini kullanın:
- Connects: teklifler kredi harcar. Teklif bedelini, ücretsiz kredileri, paket boyutunu ve fiyatını belirleyin.
- Paketler: Connects veren, komisyonu düşüren ve limitleri değiştiren aylık abonelikler.
- Limitler (Ayarlar → Limitler ve paketler): günlük, haftalık veya aylık teklif sayısı, hizmet sayısı, portfolyo öğeleri ve aktif sözleşmelerden istediklerinizi açın. Paketsiz üyeler ücretsiz değerleri alır; her paketin kendi değerleri vardır (0 = sınırsız).
Üyeler kullanımlarını paketler sayfasında görür ve limite ulaşınca bilgilendirilir.


Profiller, portfolyo ve doğrulama#
Freelancerlar başlık, beceriler, saatlik ücret, bağlantılar, deneyim, eğitim, sertifika ve diller (Özgeçmiş sekmesi), düzenleyip gizleyip öne çıkarıp sıraladıkları bir portfolyo ve /u/username/resume adresinde yazdırılabilir özgeçmişle güven oluşturur. Profil gücü çubuğu eksikleri gösterir.
Doğrulama: e-posta, profil fotoğrafı ve kimlik (pasaport, kimlik kartı veya ehliyet). Belgeler yeniden kodlanır ve özel diskte saklanır; yalnızca ekip Yönetim → Doğrulamalar bölümünde görür ve gerekçeyle onaylar veya reddeder. Telefon doğrulaması «yakında» olarak gösterilir. İlk çekimden önce doğrulanmış kimlik şart koşabilirsiniz.


Mesajlaşma ve toplantılar#
Mesajlaşmada konuşma listesi, sohbet ve kişi, proje, siparişler, sözleşmeler, toplantılar ile paylaşılan dosyaları gösteren yan panel bulunur; her biri kendi sayfasına götürür. Mesajlar canlı gelir, okundu bilgisi görünür, ekler desteklenir. Sözleşmeden önce e-posta adresleri, telefon numaraları ve bağlantılar komisyonunuzu korumak için gizlenir (değiştirilebilir).
Toplantılar: her iki taraf toplantı planlayabilir: saati (herkes kendi saat diliminde görür), süreyi ve Zoom, Google Meet, Teams, Webex, Jitsi, Whereby veya Skype bağlantısını seçin (ya da ücretsiz Jitsi odası oluşturun). Davet; kabul, reddet, takvime ekle (ics) ve başlamadan 15 dakika önce açılan Katıl düğmesiyle kart olarak görünür. Her iki tarafa hatırlatma gider. Ayarlar → Mesajlar ve dosyalar bölümünden toplantıları kapatabilir veya her https bağlantısına izin verebilirsiniz.


Destek sohbeti#
Üyeler ekibinizle konuşmak için Destek’i açar; ziyaretçiler iletişim formunu kullanır ve yanıtı e-postayla alır. Yönetim → Destek bölümünde durum, konu, öncelik ve atanana göre süzer, konuşmaları atar, özel notlar yazar, kayıtlı yanıtlar ekler, ilk yanıt süresini ve puanları görürsünüz. Konuşma kapanınca üye yardımı puanlar.
Referans, kuponlar ve bildirimler#
Referans varsayılan olarak açıktır: davet edilen üye ücretli bir sözleşmeyi tamamlayınca davet eden ödül kazanır. Üyelerin kopyala ve paylaş düğmeli, ziyaret sayılı ve sonuçlu bir paylaşım sayfası vardır; ödülü, hoş geldin hediyesini ve asgari sözleşmeyi Ayarlar → Referans bölümünde belirleyin, toplamları Yönetim → Referanslar bölümünde görün. Kuponlar üye başına bir kez cüzdana bakiye ekler; limit ve son kullanma tarihi vardır.
Bildirimlerin zil menüsü ve filtre, okundu/okunmadı ile silme içeren merkezi vardır. Freelancerlar kategori ve anahtar kelimeyle proje uyarıları kurar.
Yüklenebilir uygulama (PWA)#
Site bir manifest ve yalnızca derlenmiş CSS ve JavaScript ile çevrimdışı sayfayı önbelleğe alan küçük bir service worker yayınlar; üye sayfalarını asla önbelleğe almaz. Telefonlar markanızın renk ve adıyla Ana ekrana ekle önerir.
REST API#
Salt okunur bir JSON API gelir. Ayarlar → Genel bölümünden açın. Üyeler Güvenlik sayfasından jeton oluşturur (bir kez gösterilir, yalnızca özeti saklanır, isteğe bağlı son kullanma). Authorization: Bearer wk_... gönderin; her jeton dakikada 60 istekle sınırlıdır. Parasal değerler, para birimi koduyla birlikte küçük birimde tam sayıdır.
| Yol | Döndürür |
|---|---|
GET /api/v1/me | Jeton sahibinin profili |
GET /api/v1/categories | Kategoriler ve alt kategoriler |
GET /api/v1/gigs ve /gigs/{id} | Yayınlanmış hizmetler (q, category filtreleri) |
GET /api/v1/projects ve /projects/{id} | Açık genel projeler |
GET /api/v1/wallet, /orders, /contracts, /notifications | Jeton sahibinin kayıtları |
curl -H "Authorization: Bearer wk_your_token" https://your-site.example/api/v1/gigs?q=logoYedekler ve sağlık#
Günlük veritabanı yedeği ve haftalık tam yedek (dosyalarla) zamanlamayla çalışır ve Sağlık bölümünde listelenir; oradan indirebilirsiniz. Aynı sayfa PHP’yi, eklentileri, izinleri, zamanlayıcıyı, kuyruğu, defteri ve disk alanını denetler. mysqldump PATH’te değilse yolunu .env içinde (BACKUP_MYSQLDUMP) belirtin.
Güncelleme#
- Veritabanını ve dosyaları yedekleyin.
- Yönetim → Güncellemeler bölümünü açın, imzalı paketi yükleyin ve özeti inceleyin.
- Uygulayın. Workora imzayı doğrular, yeni dosyaları kopyalar, geçişleri çalıştırır ve önbellekleri temizler.
.env, yüklemeler ve ayarlar korunur.
sodium eklentisi olmayan sunucularda elle güncelleyin: yeni dosyaları eskilerin üzerine yükleyin, ardından php artisan migrate --force ve php artisan optimize:clear çalıştırın.
Demo verileri ve demo sitesi#
php artisan app:demo herhangi bir kuruluma örnek üye, proje ve hizmet ekler; --full her alt kategoriyi doldurur. Herkese açık demo için .env içinde DEMO_MODE=true ayarlayın ve php artisan demo:reset çalıştırın; cron her saat sıfırlar. Demo modunda deneme hesaplarını ve tek tıkla girişi gösteren bir şerit çıkar, tehlikeli işlemler (ayarlar, ekip, güncellemeler, yedekler, gerçek ödemeler) engellenir. «Satın al» düğmesi için DEMO_PURCHASE_URL ayarlayın.
Güvenlik kontrol listesi#
- Her şeyi HTTPS üzerinden sunun ve
APP_DEBUG=falsetutun. - Uygulama klasörünü genel web kökünün dışında tutun veya erişimi engelleyin.
- Ekip iki adımlı doğrulama kullanmalı.
.envdosyasını gizli tutun ve ayrıca yedekleyin.- Güçlü bir veritabanı parolası kullanın ve erişimi sunucuyla sınırlayın.
- Her yüklemeyi taramak için ClamAV kurun ve
CLAMSCAN_PATHayarlayın (isteğe bağlı). - Bağımlılıkları güncellerken
composer auditçalıştırın.
Dahil olanlar: nonce’lu sıkı CSP, hassas işlemler için istek sınırları, belgeler ve ekler için özel depolama, yeniden kodlanan görseller, diğer üyelerin verilerine ulaşmaya çalışan otomatik testler ve Ed25519 imzalı güncellemeler.
Sorun giderme#
| Sorun | Çözüm |
|---|---|
| Boş sayfa veya 500 hatası | storage/logs/laravel.log dosyasına bakın. storage ve bootstrap/cache yazılabilir olmalı ve PHP 8.4+ olmalı. |
| "Your Composer dependencies require PHP 8.4" | Hosting panelinde alan adı için PHP 8.4 seçin. |
| Stiller yok | Belge kökü public olmalı ve içindeki build klasörü yüklenmiş olmalı. |
| Yüklenen görseller görünmüyor | Depolama bağlantısını oluşturun: public/storage → storage/app/public. |
| E-postalar gelmiyor | SMTP’yi denetleyin ve cron’un her dakika çalıştığından emin olun. |
| Yüklemeler reddediliyor | upload_max_filesize ve post_max_size değerlerini artırın. |
| Ödemeler beklemede kalıyor | Webhook adresinin geçitte kayıtlı ve erişilebilir olduğunu doğrulayın. |
Destek ve lisans#
Workora CodeCanyon’da satılır. Destek ve güncellemeler Envato destek politikasını izler; kurulum yardımı ve hata düzeltmeyi kapsar, özel geliştirmeyi kapsamaz. Üyelerden ücret, komisyon veya abonelik tahsil eden bir platform genişletilmiş lisans gerektirir. Üçüncü taraf bileşenler lisanslarıyla pakette listelenir.
Aramanıza uyan bölüm yok.