هيثم العسولي

← كل المشاريع · SHEET A-130

صوت

أتمتة العملية الانتخابية، من التصويت إلى النتائج.

خانة العنوان
الدورمنفردًا: الموبايل والخادمالسنة2025
الحالةصدرالغرفةالجوّال
بُني بـReact Native · TypeScript · OTP verification · Firebase · Zustand · React Query · Reanimated · Restyle · Zod
أين تجده
صوت
ELEVATION · A-130 · SCALE 1 : 1

1 · ملاحظات عامة

ما هو، ولماذا وُجد.

تطبيق يُرقمن العملية الانتخابية من طرف إلى طرف: تسجيل الناخبين، والدخول بهوية مُتحقَّق منها، والإدلاء بالصوت، وإعلان النتائج. مبني للشفافية في كل مرحلة.

التصويت أقلّ ما يُبنى تسامحًا. فالخلل في تطبيق عادي يزعج شخصًا؛ والخلل هنا يُبطل نتيجة ومعها الثقة.

يغطي «صوت» الدورة كلها: يسجّل الناخبون ويدخلون حساباتهم بهوية مُتحقَّق منها، ويدلون بأصواتهم، وتُعلن النتائج عبر النظام نفسه. وكانت الأولوية الهندسية طوال العمل أن تكون كل مرحلة قابلة للتحقق لا سريعة فحسب.

2 · التحديات

DETAIL 1

شخص واحد وصوت واحد على جهاز لا تتحكم به

المشكلة

يستطيع أي أحد تثبيت التطبيق مرتين، على هاتفين، برقمين. فالهوية القائمة على الجهاز ليست هوية، وفحوص جانب العميل تُتجاوَز ببساطة.

كما نُفّذ

تُربط الأهلية بهوية مُتحقَّق منها تُفحص على الخادم عبر رمز لمرة واحدة، ويفرض سجل الاقتراع نفسه التفرّد لكل ناخب في كل انتخاب. ويُعامَل الجهاز كغير موثوق طوال الوقت.

DETAIL 2

الجميع يصوّت في الساعة الأخيرة

المشكلة

حركة الانتخاب ليست منتظمة: لا شيء لأيام ثم كل شيء دفعة واحدة قبيل الإغلاق. والنظام الذي يعمل في الاختبار قد ينهار في اللحظة التي تهمّ بالضبط.

كما نُفّذ

تُبقى عمليات الكتابة صغيرة وعديمة الأثر التكراري فلا يستطيع إرسال مُعاد أن يُحسب مرتين، وتُقدَّم قراءات النتائج من تجميعات لا بإعادة حسابها مع كل طلب.

3 · النتائج

  1. 3.1منشور على Google Play.
  2. 3.2هوية مُتحقَّق منها وفرض صوت واحد لكل ناخب على الخادم.

4 · الواجهات

صوت — 1
ELEVATION 1
صوت — 2
ELEVATION 2
صوت — 3
ELEVATION 3
صوت — 4
ELEVATION 4
صوت — 5
ELEVATION 5

الورقة التالية

خير →

تبرّع مباشرةً للمحتاجين.