FloCafe
FloCafe는 구독 없이 무료로 주문·테이블·주방 디스플레이·로컬 데이터를 관리하는 로컬 퍼스트 레스토랑 POS입니다
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
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_*.
بعد ذلك يعمل النظام كالتالي:
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗