GFCase Study · Full-Stack ERPدراسة حالة · ERP فل ستاك
Full-Stack ERP · AI Copilot · Multi-tenant
ERP فل ستاك · مساعد ذكي · متعدد المستأجرين

Velora ERP

A production-ready, multi-tenant ERP platform covering CRM, sales, inventory, invoicing, payments, RBAC, and an AI Business Copilot that generates prioritized recommendations directly from live database metrics.

منصة ERP جاهزة للإنتاج، متعددة المستأجرين، تغطي إدارة العملاء والمبيعات والمخزون والفواتير والمدفوعات وصلاحيات الأدوار، مع مساعد أعمال ذكي يولّد توصيات مرتبة مباشرةً من مقاييس قاعدة البيانات الحية.

Full-Stack Buildبناء فل ستاك NestJS · Next.js PostgreSQL · Prisma AI Copilot Multi-tenant · RBAC Docker · Power BI
My RoleدوريArchitecture · backend APIs · frontend · auth/RBAC · AI Copilot · Docker · deploymentالمعمارية · APIs الخلفية · الواجهة · المصادقة/RBAC · المساعد الذكي · Docker · النشر
CollaboratorالمتعاونKook — data modeling, SQL analytics, Power BI dashboards, KPI definitionsكوك — نمذجة البيانات، تحليلات SQL، لوحات Power BI، تعريفات KPI
StackالتقنياتNestJS · Next.js · Prisma · PostgreSQL · Docker · Tailwind · Claude Haiku · OpenRouter
StatusالحالةProduction-deployed · Hostinger · actively developedمنشور على Hostinger · قيد التطوير الفعلي
Velora ERP dashboard overview
01 — Context & Problem
01 — السياق والمشكلة

SMEs manage sales, inventory, and finances across disconnected tools with no audit trail.

الشركات الصغيرة تدير مبيعاتها ومخزونها وماليتها عبر أدوات منفصلة بدون سجل تدقيق.

Small and mid-sized businesses lack integrated ERP systems and rely on spreadsheets for sales orders, inventory, invoicing, and customer management. This creates data fragmentation, no accountability trail, and no operational visibility for decision-making.

تفتقر الشركات الصغيرة والمتوسطة إلى أنظمة ERP متكاملة وتعتمد على الجداول لإدارة أوامر البيع والمخزون والفواتير وسجلات العملاء. هذا يخلق تشتتاً في البيانات، وغياباً للمساءلة، وضعفاً في الرؤية التشغيلية لاتخاذ القرار.

Business requirements

متطلبات العمل

  • One platform covering the full sales-to-cash cycle.
  • Multi-company support with data isolation per tenant.
  • Role-based access control across all modules.
  • AI-generated insights from real operational data.
  • Power BI analytics for executive decision-making.
  • Full audit trail on every critical action.
  • منصة واحدة تغطي دورة المبيعات حتى التحصيل كاملة.
  • دعم متعدد الشركات مع عزل البيانات لكل مستأجر.
  • تحكم قائم على الأدوار عبر جميع الوحدات.
  • رؤى مولّدة بالذكاء الاصطناعي من البيانات التشغيلية الفعلية.
  • تحليلات Power BI لدعم القرار التنفيذي.
  • سجل تدقيق كامل على كل إجراء حساس.

My contribution

مساهمتي

  • System architecture and multi-tenant data model.
  • NestJS backend: all ERP APIs, business logic, and guards.
  • Next.js frontend: all UI modules and routing.
  • Authentication system and JWT-based RBAC.
  • AI Business Copilot: query, prompt, parse, cache.
  • Docker containerization and Hostinger deployment.
  • GitHub integration and branch strategy.
  • معمارية النظام ونموذج البيانات متعدد المستأجرين.
  • الخلفية NestJS: كل APIs الـ ERP ومنطق الأعمال والحراس.
  • الواجهة Next.js: كل وحدات UI والتوجيه.
  • نظام المصادقة و RBAC المستند إلى JWT.
  • مساعد الأعمال الذكي: الاستعلام والـ Prompt والتحليل والتخزين المؤقت.
  • Docker والنشر على Hostinger.
  • ربط GitHub واستراتيجية الفروع.
Product Screens
شاشات النظام

The working ERP interface, across daily operations and administration.

واجهة النظام الفعلية عبر العمليات اليومية والإدارة.

Velora ERP customer management screen
Customer managementإدارة العملاء
Velora ERP product import screen
Product import and data handlingاستيراد المنتجات ومعالجة البيانات
Velora ERP reports dashboard
Reports and business metricsالتقارير ومؤشرات الأعمال
Velora ERP audit log
Audit logسجل التدقيق
Velora ERP user management form
User and role managementإدارة المستخدمين والأدوار
Velora ERP admin dashboard
Admin dashboardلوحة تحكم الإدارة
02 — System Architecture
02 — معمارية النظام

One data source, two interfaces — operational UI and analytics layer.

مصدر بيانات واحد، واجهتان — عملياتية وتحليلية.

Platform data flow
تدفق البيانات في المنصة
Users / Roles (RBAC)
→
Next.js Frontend
→
NestJS API
→
PostgreSQL
→
AI Copilot · Power BI
Multi-tenant isolationعزل متعدد المستأجرينEvery query is scoped to companyId. Tenants share the database schema but cannot access each other's data.كل استعلام مرتبط بـ companyId. يشترك المستأجرون في مخطط قاعدة البيانات لكن لا يمكن لأحدهم الوصول لبيانات الآخر.
RBAC permission guardsحراس صلاحيات RBACPermission keys (SALES_CREATE, INVOICES_READ, etc.) are enforced at the API level using NestJS guards before any business logic runs.مفاتيح الصلاحيات (SALES_CREATE, INVOICES_READ, ...) تُطبَّق على مستوى الـ API باستخدام حراس NestJS قبل تشغيل أي منطق أعمال.
Shared PostgreSQL source of truthPostgreSQL كمصدر مشترك للحقيقةThe same database powers the operational ERP frontend and feeds both the AI Copilot and the Power BI analytics layer — no ETL duplication.قاعدة البيانات ذاتها تشغّل واجهة ERP التشغيلية وتغذي المساعد الذكي وطبقة Power BI — بدون تكرار ETL.
03 — What I Built
03 — ما الذي بنيته

A complete ERP covering the full business lifecycle for SMEs.

ERP متكامل يغطي دورة حياة الأعمال كاملة للشركات الصغيرة والمتوسطة.

Dashboardلوحة التحكمKPI overview, AI Copilot panel, recent activity, and quick-action shortcuts.نظرة عامة على KPI، لوحة المساعد الذكي، النشاط الأخير، واختصارات الإجراءات السريعة.
CRM — CustomersCRM — العملاءCustomer records with status (Lead / Active / Inactive), linked orders and invoices.سجلات العملاء بحالة (Lead / Active / Inactive)، مع الطلبات والفواتير المرتبطة.
Products & Inventoryالمنتجات والمخزونProduct catalog with SKU, cost/sale prices, stock quantity, reorder levels, and inventory transaction log.كتالوج المنتجات مع SKU وأسعار التكلفة والبيع وكميات المخزون ومستويات إعادة الطلب وسجل حركات المخزون.
Sales Ordersأوامر البيعOrder lifecycle (Draft → Confirmed → Cancelled) with line items and customer linkage.دورة حياة الطلب (مسودة ← مؤكد ← ملغى) مع بنود السطر وربط العميل.
InvoicesالفواتيرInvoice management (Draft → Sent → Partial → Paid → Overdue / Cancelled) with sequential, collision-free numbering.إدارة الفواتير (مسودة ← مرسلة ← جزئية ← مدفوعة ← متأخرة / ملغاة) مع ترقيم تسلسلي خالٍ من التعارض.
PaymentsالمدفوعاتPayment recording against invoices with method (Cash, Card, Bank Transfer, Online), balance tracking, and overpayment guards.تسجيل المدفوعات مقابل الفواتير بالطريقة (نقدي، بطاقة، تحويل بنكي، إلكتروني)، تتبع الرصيد، وحراس الدفع الزائد.
Users & RBACالمستخدمون والصلاحياتRole-based access control with 25+ granular permission keys enforced at the API layer across all modules.تحكم في الوصول قائم على الأدوار مع أكثر من 25 مفتاح صلاحية دقيق يُطبَّق على مستوى الـ API في جميع الوحدات.
Audit Logسجل التدقيقImmutable event log recording user, action, entity, and timestamp on every create/update/delete operation.سجل أحداث غير قابل للتعديل يسجل المستخدم والإجراء والكيان والطابع الزمني على كل عملية إنشاء/تحديث/حذف.
8
ERP modules in one platform
وحدات ERP في منصة واحدة
25+
granular permission keys
مفتاح صلاحية دقيق
Multi-tenant
isolated per company
بعزل كامل لكل شركة
EN + AR
AI Copilot response language
لغة مساعد الأعمال الذكي
04 — AI Business Copilot
04 — مساعد الأعمال الذكي

Recommendations generated from real database metrics, not generic prompts.

توصيات مولّدة من مقاييس قاعدة البيانات الفعلية، لا من استفسارات عامة.

The AI Business Copilot queries live PostgreSQL data — stock alerts, overdue invoices, and weekly sales trends — structures that into a context-aware prompt, sends it to Claude Haiku via OpenRouter, and returns a prioritized narrative in the user's chosen language. Results are cached for 20 minutes per company to avoid API rate limits while keeping insights current.

يستعلم مساعد الأعمال الذكي عن البيانات الحية من PostgreSQL — تنبيهات المخزون، والفواتير المتأخرة، واتجاهات المبيعات الأسبوعية — يهيكلها في Prompt واعٍ بالسياق، يرسله إلى Claude Haiku عبر OpenRouter، ويعيد سردًا مرتبًا بلغة المستخدم المختارة. تُخزَّن النتائج مؤقتًا 20 دقيقة لكل شركة لتجنب حدود الـ API مع الحفاظ على حداثة الرؤى.

AI Copilot pipeline
مسار مساعد الأعمال الذكي
PostgreSQL
stock · invoices · sales
→
Parallel
queries
→
Structured
context
→
Claude Haiku
(OpenRouter)
→
Parse &
cache 20 min
→
Dashboard
narrative
Stock alertsتنبيهات المخزونProducts where stockQty ≤ reorderLevel are surfaced with SKU and quantity for the AI to prioritize.المنتجات التي stockQty ≤ reorderLevel تُسحب مع SKU والكمية لمعالجتها بالذكاء الاصطناعي.
Collection prioritiesأولويات التحصيلOverdue invoices are ranked by balance and days-overdue so the AI can surface the highest-risk accounts first.الفواتير المتأخرة مرتبة بالرصيد وعدد أيام التأخير حتى يطفو الأعلى خطرًا أولاً.
Weekly sales trendاتجاه المبيعات الأسبوعيRevenue this week vs last week (confirmed orders) gives the AI a real growth/decline signal to include in the narrative.إيرادات هذا الأسبوع مقارنة بالأسبوع الماضي (الطلبات المؤكدة) يعطي المساعد الذكي إشارة نمو أو انخفاض حقيقية.
05 — Engineering Challenges
05 — التحديات الهندسية

The critical problems were financial integrity, race conditions, and access control.

المشكلات الحرجة كانت سلامة البيانات المالية وتعارض العمليات والتحكم في الوصول.

Invoice payment bypass

تجاوز دفع الفاتورة

Payments could exceed the invoice total without a guard, leaving invoices in an inconsistent paid state. A server-side balance check — comparing total payments against invoice amount before accepting a new payment — prevents overpayment and keeps invoice status accurate.

كانت المدفوعات يمكن أن تتجاوز إجمالي الفاتورة بدون حارس، تاركةً الفواتير في حالة دفع غير متسقة. فحص الرصيد من جانب الخادم — مقارنة إجمالي المدفوعات بمبلغ الفاتورة قبل قبول دفعة جديدة — يمنع الدفع الزائد ويحافظ على دقة حالة الفاتورة.

Sales order race conditions

تعارض عمليات أوامر البيع

Concurrent confirmation of the same order could trigger duplicate inventory deductions. The fix wraps the confirm operation in a database transaction with a status check inside — if the order is already confirmed when the transaction reads it, the second request is rejected before any inventory change occurs.

التأكيد المتزامن لنفس الطلب كان يمكن أن يتسبب في خصم مزدوج من المخزون. الحل يلف عملية التأكيد في transaction قاعدة بيانات مع فحص الحالة داخلها — إذا كان الطلب مؤكدًا بالفعل حين تقرأه الـ transaction، يُرفض الطلب الثاني قبل حدوث أي تغيير في المخزون.

Missing audit trail

غياب سجل التدقيق

Without an audit log, there was no accountability for who changed what and when. A dedicated AuditLog model records actor, action, entity type, entity ID, and timestamp on every create/update/delete — giving the platform a complete, immutable history of changes.

بدون سجل تدقيق، لم تكن هناك مساءلة عن من غيّر ماذا ومتى. نموذج AuditLog مخصص يسجل المُنفِّذ والإجراء ونوع الكيان ومعرّفه والطابع الزمني على كل إنشاء/تحديث/حذف — مما يمنح المنصة تاريخًا كاملًا وغير قابل للتعديل للتغييرات.

Import permission security

أمان صلاحية الاستيراد

Bulk data import was not covered by the existing permission model, leaving it open to any authenticated user. A dedicated IMPORT_DATA_MANAGE permission key was added to the RBAC system and enforced on the import endpoint, giving admins explicit control over who can write bulk records.

استيراد البيانات بالجملة لم يكن مشمولًا بنموذج الصلاحيات الموجود، مما تركه مفتوحًا لأي مستخدم موثَّق. تمت إضافة مفتاح صلاحية IMPORT_DATA_MANAGE لنظام RBAC وتطبيقه على نقطة نهاية الاستيراد، مما يمنح المسؤولين تحكمًا صريحًا في من يمكنه كتابة السجلات بالجملة.

Invoice number collisions

تعارض أرقام الفواتير

Sequential invoice numbering under concurrent requests could generate duplicate numbers. The solution uses a PostgreSQL advisory lock at the company level during invoice creation — only one process can generate the next number at a time, making collisions structurally impossible.

الترقيم التسلسلي للفواتير تحت الطلبات المتزامنة كان يمكن أن يولّد أرقامًا مكررة. الحل يستخدم PostgreSQL advisory lock على مستوى الشركة أثناء إنشاء الفاتورة — فقط عملية واحدة يمكنها توليد الرقم التالي في آن واحد، مما يجعل التعارضات مستحيلة هيكليًا.

AI response language consistency

اتساق لغة استجابة المساعد الذكي

Early prompts sometimes returned mixed-language responses even when Arabic was specified. The prompt was tightened to explicitly declare the target language and require the entire narrative — all bullet points, labels, and explanations — to be written in that language only, with no switching.

كانت الاستفسارات الأولى تعيد أحيانًا ردودًا بلغات مختلطة حتى عند تحديد العربية. تم تشديد الـ Prompt ليعلن صراحةً اللغة المستهدفة ويطلب كتابة السرد كاملًا — كل النقاط والتسميات والشروحات — بتلك اللغة فقط بدون تبديل.

06 — Technology Stack
06 — التقنيات المستخدمة

A production stack built for reliability, type safety, and extensibility.

منظومة إنتاجية مبنية للموثوقية وسلامة الأنواع والتوسع.

BackendالخلفيةNestJS · TypeScript · Prisma ORM
FrontendالواجهةNext.js · React · Tailwind CSS
Databaseقاعدة البياناتPostgreSQL · Prisma Migrations
AI CopilotClaude Haiku · OpenRouter API
Auth & RBACالمصادقة والصلاحياتJWT · NestJS Guards · 25+ permission keys
AnalyticsالتحليلاتPower BI · DAX · SQL views
Infrastructureالبنية التحتيةDocker · Hostinger · GitHub
Data qualityجودة البياناتAdvisory locks · DB transactions · caching
07 — Impact & Outcome
07 — الأثر والنتيجة

A production ERP foundation with intelligence built in, not bolted on.

أساس ERP إنتاجي مع الذكاء الاصطناعي مدمجًا لا مضافًا.

Velora ERP gives SMEs one integrated platform to run sales, inventory, invoicing, and customer management — with multi-tenant isolation, fine-grained RBAC, a complete audit trail, and an AI Business Copilot that surfaces actionable insights from the company's own live data rather than generic recommendations.

يمنح Velora ERP الشركات الصغيرة والمتوسطة منصة واحدة متكاملة لإدارة المبيعات والمخزون والفواتير والعملاء — مع عزل متعدد المستأجرين، وصلاحيات دقيقة، وسجل تدقيق كامل، ومساعد أعمال ذكي يطفو رؤى قابلة للتنفيذ من البيانات الحية للشركة بدلاً من توصيات عامة.

Final outcome

النتيجة النهائية

8
core ERP modules unified in one platform
وحدات ERP أساسية موحّدة في منصة واحدة
25+
granular permission keys enforced through RBAC
مفتاح صلاحية دقيق مطبّق عبر نظام الصلاحيات
20
minute AI insight cache per company
دقيقة للتخزين المؤقت لرؤى الذكاء الاصطناعي لكل شركة
2
AI response languages: Arabic and English
لغتان لاستجابة المساعد الذكي: العربية والإنجليزية

A full-stack, production-deployed ERP system covering the complete business lifecycle — from sales order to payment collection — with an AI Business Copilot that queries real operational data, generates prioritized Arabic or English recommendations via Claude Haiku, and integrates with a Power BI analytics layer for executive insight. Financial integrity, race-condition safety, role-based access, and a complete audit trail are built into the platform architecture, not added as afterthoughts.

نظام ERP فل ستاك منشور على الإنتاج يغطي دورة حياة الأعمال كاملة — من أمر البيع حتى تحصيل الدفعة — مع مساعد أعمال ذكي يستعلم عن البيانات التشغيلية الفعلية ويولّد توصيات مرتبة بالعربي أو الإنجليزي عبر Claude Haiku، ويتكامل مع طبقة Power BI للتحليل التنفيذي. سلامة البيانات المالية وأمان تعارض العمليات والوصول القائم على الأدوار وسجل التدقيق الكامل مدمجة في معمارية المنصة، لا مضافة لاحقًا.

08 — Future Development
08 — التطوير المستقبلي

The platform is built to grow beyond its current modules.

المنصة مبنية للنمو خارج وحداتها الحالية.

Expenses & budgeting moduleوحدة المصروفات والميزانية Purchase orders & supplier managementأوامر الشراء وإدارة الموردين PDF Invoice generation Expanded Power BI analyticsتوسعة Power BI Analytics Conversational AI Copilot (chat interface)مساعد ذكي محادثي (واجهة دردشة) VAT & tax compliance Mobile app (React Native)تطبيق الجوال (React Native)