FloCafe
FloCafe is the free, local-first restaurant POS in the FloPOS ecosystem. Run orders, tables, kitchen display, and local data without a software subscription.
翻訳待ち
リポジトリ情報はまだ収集していません。
No updates detected yet. GitHub releases will appear here.
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 ↗نظام لتسعير شرائح الألمنيوم والإكسسوارات والمكائن. يحفظ كل الأسعار في قاعدة بيانات، ويرسل التحديثات إلى أنظمة أخرى عبر Webhooks، ويرتبط بـ WhatsApp Cloud API، وفيه حاسبة يطلب منها العميل عرض سعر.
start-windows.batstart-mac.command. إذا ظهرت رسالة أمان: انقر عليه بالزر الأيمن ← Open ← Open..env داخل المجلد.اترك النافذة السوداء مفتوحة ما دمت تستخدم النظام، وأغلقها لإيقافه.
| الجزء | المسار | الوظيفة |
|---|---|---|
| لوحة الإدارة | /admin (public/admin.html) | بكلمة مرور: حاسبة التسعير والوزن، المنتجات، أسعار الشراء، بوابات الشتر، الطلبات، الربط |
| حاسبة بوابة الشتر | / (public/calculator.html) | يختار العميل المقاس ونوع البوابة والسماكة واللون وفئة كل إكسسوار، ويرى السعر مع التركيب حسب ولايته |
| طلب مستلزمات | /materials.html | شراء شرائح وإكسسوارات بالكمية |
| الخادم | src/server.js | واجهة REST (Node.js + Express) |
| قاعدة البيانات | data/aluminum.db | SQLite مدمجة في Node، لا تحتاج تثبيت خادم قاعدة بيانات |
| المساعد الذكي | src/agent.js | محادثة واتساب بنموذج Claude، والأسعار من أدوات النظام |
| ملف PDF | src/pdf.js | عرض سعر عربي بخط Noto Naskh Arabic (رخصة OFL في assets/fonts) |
يحتاج Node.js بإصدار 22.13 أو أحدث.
npm install
cp .env.example .env # ثم عدّل ADMIN_TOKEN
npm start
ADMIN_TOKEN في ملف .env.npm testلو فتحت public/admin.html مباشرة بدون الخادم، ستعمل حاسبة التسعير والوزن كما كانت بالقيم الافتراضية، لكن لن يُحفظ أي شيء.
السماكات في «حاسبة التسعير» و«حاسبة الوزن»: تُعدَّل من بطاقة «السماكات ووزن المتر» في تبويب «حاسبة التسعير».
ملاحظة: الخادم يعيد حساب السعر دائماً عند استلام الطلب، فلا يستطيع أحد تغيير السعر من المتصفح. أسعار الشراء والتكاليف لا تُرسل أبداً إلى صفحة العملاء.
من تبويب أسعار الشراء تسجّل كل فاتورة مورد: المنتج، المورد، الكمية، سعر الوحدة، العملة، سعر الصرف، ومصاريف الشحن والجمارك للوحدة.
عند أول تشغيل تُضاف منتجات تجريبية: 4 أنواع شرائح، و3 إكسسوارات، ومكينتان. الإكسسوارات والمكائن أسعارها تجريبية ومخفية عن العملاء، فعدّل أسعارها ثم فعّل «يظهر في حاسبة العملاء».
من تبويب الربط تضيف رابطاً (مثلاً من n8n أو Make أو Zapier)، فيستقبل طلب POST بصيغة JSON عند كل حدث من هذه الأحداث:
| الحدث | متى يُرسل |
|---|---|
quote.created | عميل أرسل طلب عرض سعر |
quote.status_changed | غيّرت حالة الطلب (تم التواصل، مقبول...) |
product.created / product.updated / product.deleted | إضافة منتج أو تعديله أو حذفه |
purchase.created | تسجيل سعر شراء جديد |
settings.updated | تغيير LME أو سعر الصرف أو الربح... |
إذا وضعت مفتاحاً سرياً، يُرفق مع كل طلب الترويسة X-Aluminum-Signature: sha256=<HMAC> لتتحقق أن الطلب قادم من نظامك.
الأمان:
http أو https يشير إلى عنوان عام على الإنترنت. تُرفض العناوين الداخلية مثل localhost و127.0.0.1 و192.168.x.x و10.x.x.x وعنوان بيانات السحابة 169.254.169.254. يُفحص الرابط عند الحفظ، ثم مرة أخرى قبل كل إرسال، لأن النطاق قد يتغيّر لاحقاً.WEBHOOK_ALLOW_PRIVATE_TARGETS=1 يلغي هذا الفحص، وهو للاختبارات والتطوير المحلي فقط. لا تضعه في الإنتاج، فلوحة الإدارة تُظهر تحذيراً أحمر ما دام مفعّلاً.مثال: تبني في n8n مساراً يبدأ بـ Webhook ← ثم WhatsApp ← ثم Google Sheets، فيصلك كل طلب عرض سعر على واتساب ويُسجَّل في جدول.
WHATSAPP_TOKEN و WHATSAPP_PHONE_NUMBER_ID إلى ملف .env.WHATSAPP_VERIFY_TOKEN.WHATSAPP_APP_SECRET. هذا إلزامي: بدونه تُرفض كل رسائل Meta الواردة (POST) برمز 401، لأن النظام لا يستطيع التأكد أنها من Meta. يُفحص التوقيع X-Hub-Signature-256 على جسم الطلب كما وصل بالضبط.https://موقعك/webhooks/whatsapp مع نفس كلمة السر، واشترك في حدث messages. خطوة التحقق (GET) تعمل بكلمة السر وحدها، دون App Secret.هذا الربط مستقل تماماً عن MazBot: تشغيل MazBot لا يحتاج أي متغير من متغيرات WHATSAPP_*.
بعد ذلك يعمل النظام كالتالي:
This is the beginning of the README. Read the rest at the original. Read the full README ↗