متتبع ميزانية مفتوح المصدر ومستضاف ذاتيًا للمطورين: امتلك بياناتك المالية
إذا كنت مطورًا، فبياناتك المالية تعيش على الأرجح في خادم شخص آخر. كل تطبيق تتبع ميزانية أو مصروفات، مثل Mint وYNAB وCopilot وLunch Money، يخزن معاملاتك وأرصدة حساباتك وأنماط إنفاقك في سحابته. وأنت تثق بأنه لن يتعرض لاختراق، ولن يبيع بياناتك، ولن يُغلق (RIP Mint, 2024).
هناك خيار أفضل إذا كنت مرتاحًا مع Docker وPostgres: استضف متتبع ميزانية مفتوح المصدر بنفسك، وأبقِ كل شيء داخل بنيتك الخاصة.
متتبع مصروفات مفتوح المصدر تنشره بنفسك
Expense Budget Tracker هو نظام مفتوح المصدر بالكامل لتتبع المصروفات والميزانية، مبني على Postgres. تستنسخ المستودع، وتشغّل make up، فتحصل على تطبيق يعمل على localhost:3000 مع قاعدة بيانات حقيقية تتحكم بها أنت.
لا حاجة إلى إنشاء حساب، ولا إلى مغادرة بياناتك جهازك، ولا إلى رسوم اشتراك. الترخيص MIT، أي يمكنك نسخه وتعديله وفعل ما تريد به.

المكدس واضح ومباشر: Next.js لواجهة الويب، وPostgres 18 للتخزين، وعامل TypeScript يجلب أسعار الصرف اليومية. وكل شيء يعمل داخل حاويات Docker عبر ملف docker-compose.yml واحد.
استضافة ذاتية عبر Docker أو نشر على AWS
يأتي المستودع بخياري نشر جاهزين مباشرة:
Docker Compose محلي: أربعة أوامر فقط وتكون جاهزًا:
git clone https://github.com/kirill-markin/expense-budget-tracker.git
cd expense-budget-tracker
open -a Docker # start Docker if not running
make up # Postgres + migrations + web + worker
افتح http://localhost:3000 وابدأ بإدخال المعاملات. وتبقى بيانات Postgres داخل Docker volume. هذا هو الإعداد كله.
AWS CDK: نشر إنتاجي كامل عبر سكربت واحد:
bash scripts/bootstrap.sh --region eu-central-1
سيشغّل هذا ECS Fargate وRDS Postgres وALB مع HTTPS وCognito للمصادقة وWAF وCloudWatch للمراقبة ونسخًا احتياطية آلية وCI/CD عبر GitHub Actions. والتكلفة التقديرية نحو 50 دولارًا شهريًا، وتحصل مقابلها على بنية تحتية بمستوى مؤسسي تمتلكها بالكامل. ويشرح دليل النشر كل خطوة، من إنشاء حساب AWS إلى إعداد DNS في Cloudflare.
وبما أن النظام مجرد Postgres مع Docker، فيمكنك أيضًا استضافته ذاتيًا في أي مكان آخر. DigitalOcean أو Hetzner أو Raspberry Pi في خزانة منزلك أو Kubernetes الخاص بشركتك. إذا كان يشغل Docker وPostgres، فيستطيع تشغيل هذا.
نقطة SQL API للوصول البرمجي
معظم تطبيقات الميزانية تمنحك واجهة ويب ولا شيء آخر. أما هذا فيكشف عن SQL Query API عبر HTTP، أي نقطة POST /v1/sql تستقبل تعليمات SQL خام وتعيد JSON.
curl -X POST https://api.your-domain.com/v1/sql \
-H "Authorization: ApiKey ebta_a7Bk9mNp..." \
-H "X-Workspace-Id: workspace-id" \
-H "Content-Type: application/json" \
-d '{"sql": "SELECT category, SUM(amount) AS total FROM ledger_entries WHERE kind = '\''spend'\'' AND ts >= DATE_TRUNC('\''month'\'', CURRENT_DATE) GROUP BY category ORDER BY total"}'
تولّد مفتاح API من Settings، وتختار معرّف مساحة العمل المستهدفة، وبعدها يستطيع أي عميل HTTP الاستعلام عن بياناتك. هذه نقطة REST بسيطة: لا GraphQL، ولا طبقات ORM، ولا SDK تحتاج إلى تعلمه. فقط SQL يدخل، وJSON يخرج.
ونموذج الأمان صارم: تُخزن مفاتيح الـ API بصيغة SHA-256 hashes، ولا تُحفظ القيم الصريحة، والاستعلامات محصورة في SELECT وINSERT وUPDATE وDELETE فقط، ولا توجد DDL، وهناك مهلة 30 ثانية للتعليمة، وحد أقصى 100 صف في الاستجابة، وحدود معدل لكل مفتاح عند 10 طلبات في الثانية. كما تمر كل الاستعلامات عبر Postgres Row Level Security، أي العزل نفسه الذي تستخدمه واجهة الويب، ولذلك لا يستطيع مفتاح API الوصول إلا إلى بيانات مساحة عمل مالكه.
مبني لوكلاء الذكاء الاصطناعي وLLMs
SQL API هو ما يجعل تكامل الذكاء الاصطناعي عمليًا في التمويل الشخصي، لأن وكيل الذكاء الاصطناعي يحتاج إلى وصول مباشر إلى قاعدة البيانات ليقرأ البيانات المالية ويكتبها.
فكر في طريقة تفاعلك مع المساعدات الذكية اليوم. تلصق لقطة شاشة لكشف بنكي في Claude أو ChatGPT، وتطلب منه تصنيف المصروفات، فيعطيك ملخصًا نصيًا جميلًا. ثم تنسخ الأرقام يدويًا إلى الأداة التي تستخدمها. هذا سير عمل من 2023.
أما مع SQL API، فإن وكيل الذكاء الاصطناعي لا يكتفي بتحليل بياناتك، بل يكتب إلى قاعدة بياناتك. ويصبح سير العمل هكذا:
- تضع كشفًا بنكيًا، CSV أو PDF أو لقطة شاشة، داخل وكيل الذكاء الاصطناعي
- يقرأ الوكيل كل معاملة، ويطابق الفئات مع فئاتك الحالية، ويكتبها عبر
INSERTإلىledger_entries - يتحقق الوكيل من رصيد الحساب مقابل رقم البنك
- تقضي أنت 5 دقائق في المراجعة بدل ساعة من الإدخال
وقد صُمم مخطط قاعدة البيانات لهذا. سبعة جداول مسطحة، ولا JSON متداخل، ولا join معقد مطلوب للعمليات الأساسية. جدول ledger_entries بسيط عمدًا، صف واحد لكل حركة حساب مع أسماء أعمدة واضحة. يمكن للنموذج اللغوي كتابة أوامر INSERT صحيحة من المحاولة الأولى لأن لا شيء فيه يربكه.
كما يتضمن Expense Budget Tracker دردشة ذكاء اصطناعي مدمجة في واجهة الويب. صِل مفتاح OpenAI أو Anthropic API، فتحصل على مساعد يملك أداة query_database، أي يمكنه تنفيذ SELECT وINSERT وUPDATE وDELETE مباشرة في Postgres لديك. ارفع لقطة شاشة لتطبيقك البنكي، فيحلل الذكاء الاصطناعي كل معاملة، ويطلب منك التأكيد، ثم يدخلها. وهو يتبع بروتوكولًا صارمًا: يكتشف فئاتك الحالية أولًا، ويتحقق من التكرارات، ويتأكد من تطابق الأرصدة، ولا يكتب إلا بعد موافقتك الصريحة.
وتدعم دردشة الذكاء الاصطناعي نماذج Claude من Anthropic ونماذج GPT من OpenAI. وكلاهما يستخدم أداة قاعدة البيانات نفسها مع قواعد الأمان نفسها، مثل قوائم الكلمات المسموحة ومهلات التنفيذ وفرض RLS. ويمكنك أيضًا استخدام SQL API مع أي وكيل خارجي، مثل Claude Code أو OpenAI Codex أو سكربتات مخصصة أو Zapier webhooks. أعطِ الوكيل مفتاح ebt_ الخاص بك، ووجّهه إلى نقطة النهاية لديك، وسيحصل على وصول كامل للقراءة والكتابة ضمن حدود مساحة عملك.
مزايا متتبع الميزانية
هذا ليس دفتر مصروفات بسيطًا بلا روح. فالخصائص التي تتوقعها من منتج تجاري موجودة كلها:
- شبكة ميزانية: الصفوف هي الفئات، والأعمدة هي الأشهر. الأشهر الماضية تعرض الفعلي، والأشهر القادمة تعرض توقعك. خطط 12 شهرًا إلى الأمام وشاهد الأرصدة المتوقعة بسرعة
- دعم متعدد العملات: خزّن كل معاملة بعملتها الأصلية. تُجلب أسعار الصرف اليومية من ECB وCBR وNBS تلقائيًا. ويحدث التحويل إلى عملة التقارير عبر استعلامات SQL وقت القراءة، من دون أعمدة محسوبة مسبقًا ولا خسارة في الدقة
- أرصدة الحسابات: تتبع الحسابات الجارية والادخار وبطاقات الائتمان والنقد والاستثمارات. لكل حساب رصيد جارٍ مشتق من دفتر الأستاذ
- التحويلات: انقل المال بين حساباتك، بما في ذلك عبر العملات. إدخالان في دفتر الأستاذ يحملان
event_idنفسه، أحدهما سالب والآخر موجب - تصنيف المعاملات: فئات حرة تحددها أنت. لا تصنيف إجباري. والذكاء الاصطناعي يتعلم فئاتك من بياناتك الحالية
- واجهة متعددة اللغات: الإنجليزية والإسبانية والصينية والعربية والعبرية والفارسية والأوكرانية والروسية. مع دعم كامل لـ RTL
- عزل مساحات العمل: يضمن Postgres Row Level Security عزل بيانات كل مستخدم بالكامل. وحتى إذا شاركوا خادم قاعدة البيانات نفسه، فلن يتمكن المستخدمون من رؤية بيانات بعضهم
- وضع تجريبي: زر في الواجهة يبدل إلى بيانات تجريبية داخل الذاكرة. لا حاجة إلى قاعدة بيانات لاستكشاف الواجهة
مخطط Postgres مبني للمطورين
يمكنك استيعاب المخطط كله في رأسك:
ledger_entries: صف واحد لكل حركة حساب، وهو الجدول الأساسيbudget_lines: خطة ميزانية append-only مع مبدأ last-write-wins لكل خليةbudget_comments: ملاحظات على خلايا الميزانيةexchange_rates: أسعار صرف يومية، عامة بلا تحكم في الوصولworkspace_settings: عملة التقارير لكل مساحة عملaccount_metadata: تصنيف السيولةaccounts: عرض VIEW مشتق منledger_entries
لا ORM. ولا إطار ترحيلات معقد. فقط ملفات SQL مرقمة داخل db/migrations/ يطبقها سكربت shell. يمكنك قراءة كل ترحيل وفهم كل جدول وكتابة الاستعلامات مباشرة على المخطط.
وتتم تغييرات المخطط عبر الترحيلات. ودور قاعدة البيانات app، المستخدم من واجهة الويب، يملك صلاحيات محدودة ولا يستطيع إنشاء الجداول أو تعديل المخطط. أما دور tracker، المستخدم فقط من سكربت الترحيل، فيتولى DDL. وهذا هو فصل المسؤوليات الذي تتوقعه من نظام إنتاجي جيد.
لماذا يستضيف المطورون بياناتهم المالية بأنفسهم
أنت تملك أصلًا المهارات لتشغيل هذا. أنت تفهم Docker وPostgres وAWS، أو أي سحابة تفضلها. والسؤال هو هل الفوائد تستحق الجهد.
ملكية كاملة للبيانات: بيانات تمويلك الشخصي لا تغادر بنيتك أبدًا. لا تؤثر فيك اختراقات الأطراف الثالثة. ولا توجد سياسات خصوصية تقرؤها. ولا تحليلات لعادات إنفاقك تُباع إلى المعلنين.
قابلية التخصيص: أضف أعمدة إلى المخطط، وابنِ تقارير مخصصة بـ SQL خام، ووصل النظام بأدواتك الحالية. تريد بوت Telegram يرسل لك تقرير إنفاق يومي؟ اكتب سكربتًا يستدعي SQL API. تريد تصور البيانات في Grafana؟ وجّهها إلى قاعدة Postgres. الشيفرة لك لتعدّلها.
لا احتجاز مزود: إذا توقفت عن استخدام واجهة الويب، فبياناتك ما تزال داخل قاعدة Postgres قياسية. صدّرها عبر pg_dump، أو استعلم عنها من أي عميل SQL، أو انقلها إلى شيء آخر بالكامل.
التعلّم: قاعدة الشيفرة مثال واقعي على Next.js مع Postgres وDocker وAWS CDK وRow Level Security ومصادقة بمفاتيح API وتكامل أدوات الذكاء الاصطناعي. وإذا كنت تبني SaaS خاصًا بك، فستجد فيها أنماطًا تستحق الاقتباس.
ابدأ مع متتبع الميزانية المفتوح المصدر
git clone https://github.com/kirill-markin/expense-budget-tracker.git
cd expense-budget-tracker
make up
افتح http://localhost:3000. أدخل أول معاملة. واضبط ميزانية للشهر الحالي. وإذا أردت التجربة من دون قاعدة بيانات، فانقر زر Demo في الترويسة للانتقال إلى بيانات تجريبية داخل الذاكرة.
وعندما تصبح جاهزًا للإنتاج، اتبع دليل النشر على AWS أو عدّل إعداد Docker Compose ليناسب بنيتك الخاصة.
المستودع موجود على github.com/kirill-markin/expense-budget-tracker. أضف له نجمة، أو انسخه، أو فقط اقرأ الشيفرة. الترخيص MIT، استخدمه كما تريد.
إذا كنت تدير خوادم وقواعد بيانات في عملك أصلًا، فإن تشغيل المكدس نفسه لتمويلك الشخصي خطوة صغيرة، لكنك في المقابل تحصل على تحكم كامل في البيانات.