Easy-to-manage touch screens
Free, open-source touch screens. Guided USB setup, a drag-and-drop editor and local control. Made for Home Assistant.
翻訳待ち
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Esnaf (berber, kuaför, güzellik salonu, oto yıkama, halı saha…) için online randevu ve takvim yönetimi.
| Klasör | Ne var |
|---|---|
supabase/ | Veritabanı şeması (schema.sql) ve testleri |
web/ | Next.js sitesi: tanıtım, işletme arama, randevu sayfası, işletme paneli, PWA |
mobile/ | Expo (React Native) iOS/Android uygulaması |
Web ve mobil aynı Supabase veritabanını kullanır. Randevu kuralları (boş saat hesabı, çakışma engeli, iptal) veritabanındaki fonksiyonlardadır; iki uygulama da aynı kuralı kullanır.
Supabase panelinde SQL Editor'ü açın, supabase/schema.sql dosyasının tamamını yapıştırıp çalıştırın.
Dosya eski tabloları silip yeni şemayı kurar; istediğiniz kadar tekrar çalıştırılabilir.
Şemayı Supabase'e göndermeden yerelde denemek için:
npm install
npm run test:db
Supabase ayarları:
https://ALAN-ADINIZ/auth/callback ve geliştirme için http://localhost:3000/auth/callback ekleyin.Supabase'in kendi e-posta servisi saatte birkaç e-posta gönderir ve sadece proje ekibine teslim eder; gerçek kullanıcılar için Resend SMTP kullanın:
smtp.resend.com, Port 465,
Username resend, Password: Resend API anahtarı, Sender email: EMAIL_FROM'daki adres, Sender name SiftahGo.supabase/email-templates içindeki dosyaları yapıştırın
(Confirm signup → confirm-signup.html, Reset password → reset-password.html,
Change email address → change-email.html; güvenlik bildirimleri: Password changed → password-changed.html,
Email address changed → email-changed.html). Bağlantılar /auth/confirm'e gider; e-posta başka cihazda
veya mobil uygulamadan kayıttan sonra açılsa da çalışır.Google Cloud Console > APIs & Services > OAuth consent screen: uygulama adı SiftahGo,
destek e-postası; kapsamlar email, profile, openid. Yayın durumunu In production yapın.
Credentials > Create credentials > OAuth client ID > Web application. Authorized redirect URIs:
https://SUPABASE-PROJE.supabase.co/auth/v1/callback
Supabase > Authentication > Sign In / Providers > Google: açın, Client ID ve Client Secret'ı yapıştırın.
Supabase > Authentication > URL Configuration > Redirect URLs: mobil uygulama için siftahgo://auth/callback ekleyin.
Android'de uygulama içi giriş için aynı projede Create credentials > OAuth client ID > Android: paket adı
com.siftahgo.app, SHA-1 olarak APK'yı imzalayan anahtarınki (npx eas-cli credentials -p android). Web istemcisinin
kimliği mobile/eas.json'da EXPO_PUBLIC_GOOGLE_WEB_CLIENT_ID'dir; Android istemcisinin kimliği bir yere yazılmaz.
Android'de Google hesabı uygulamanın içinde seçilir; Android istemcisi yoksa ya da Play Hizmetleri yoksa giriş tarayıcıda açılır.
cd web
cp .env.example .env.local # değerleri doldurun
npm install
npm run dev
R2 bucket'ı için herkese açık erişim (r2.dev veya özel alan adı) açık olmalı ve adresi
CLOUDFLARE_R2_PUBLIC_URL değişkenine yazılmalı. Görseller sunucu üzerinden yüklendiği için CORS ayarı gerekmez.
İşletmeler ücretli paketle çalışır; aktif paketi olmayan işletme yayında görünmez ve randevu almaz.
Paket adları, fiyatları ve personel sınırları veritabanındaki plans tablosundadır
(Supabase > Table Editor > plans); değiştirdiğinizde site ve ödeme tutarı birlikte güncellenir.
SUPABASE_SERVICE_ROLE_KEY, PAYTR_MERCHANT_ID, PAYTR_MERCHANT_KEY, PAYTR_MERCHANT_SALT,
PAYTR_TEST_MODE (1 = test ödemesi, canlıda 0).https://ALAN-ADINIZ/api/paytr/callbackRandevu alınınca işletmeye ve müşteriye, işletme onaylayınca veya iptal edince müşteriye, müşteri iptal edince
işletmeye e-posta gider; müşteriye randevudan önce hatırlatma gönderilir (önceden alınan randevuya 24 saat,
aynı gün alınana 2 saat kala). Müşteri e-postası girişli kullanıcıda hesap e-postasıdır; misafir randevu
formunda isteğe bağlı yazar. E-postalar veritabanındaki notifications kuyruğuna girer, /api/notifications
kuyruğu boşaltır.
RESEND_API_KEY, EMAIL_FROM (örn. SiftahGo <[email protected]>),
CRON_SECRET (uzun, rastgele bir metin), NEXT_PUBLIC_APP_URL.select cron.schedule(
'siftahgo-bildirimler',
'* * * * *',
$$
select net.http_get(
url := 'https://ALAN-ADINIZ/api/notifications',
headers := jsonb_build_object('Authorization', 'Bearer CRON_SECRET_DEĞERİNİZ'),
timeout_milliseconds := 30000
);
$$
);
Görevi kaldırmak için: select cron.unschedule('siftahgo-bildirimler');. Gönderilemeyen e-postalar
5 kez denenir; durumlarını Table Editor > notifications'ta (status, last_error) görebilirsiniz.
This is the beginning of the README. Read the rest at the original. Read the full README ↗