Register / Work / Amwag Attendance

Entry قيد

Amwag Attendance

Governance you can actually trust.

A production-grade bilingual attendance platform for a multi-branch company: branch and IP validation, role-based access, analytics, PDF reporting, and backup-and-restore workflows — engineered for the days when things go wrong.

Open full screenshot: Branch directory table listing Arabic branch names beside their codes, employee counts, IP rules and status
Branch directory. The operational records that drive assignment, attendance filters, and network rules — Arabic and English branch names side by side.
localhost:3000/en/admin · branches
Category
Internal platform · Workforce operations
Role
System architecture · Full-stack engineering · Product ownership
Stack
Next.js · TypeScript · MySQL / MariaDB
Built
In the IT Help Desk role at Amwag Travel, – present
Status
In productionStated
Evidence
7 screens, captured from a local instance with sample employee data

Problem المشكلة

Attendance records feed payroll and accountability, check-ins must provably happen at the right branch, and off-the-shelf tools didn’t fit the operation’s rules.

My part دوري

Designed and built it end to end: the data model and validation architecture, employee and administration experiences, reporting and backup subsystems, and the production deployment.

Outcome النتيجة

The platform runs the company’s real attendance operation across branches, in both languages.Stated Qualitative outcomes only. No invented metrics.

The check-in pipeline

التحقق

Every record earns its trustworthiness before it exists. Identity, branch IP allow-lists, and shift rules are evaluated server-side before any record is written.

  1. Employee signs in

    A branded, bilingual entry point; language is a first-class toggle, not a setting.

    Open full screenshot: Bilingual Amwag Attendance sign-in screen with an English/Arabic toggle
    Sign in — language is a first-class toggle, not a setting.Shown
    localhost:3000/en/login
  2. Branch & IP validated

    Check-ins must provably happen at the right branch, not from a phone at home.

    When a legitimate exception occurs, it goes through an explicit, logged administrative override — instead of loosening the rules for everyone.

    Open full screenshot: Branch IP rules screen for adding exact IP or CIDR allow-list entries
    Branch IP rules — the governance core: exact-IP and CIDR allow-lists decide, per branch, where a check-in is allowed to happen.Shown
    localhost:3000/en/admin · branch IPs
  3. Shift rules applied

    Validation strict enough to prevent abuse, forgiving enough for legitimate edge cases like network changes and branch visits.

    Open full screenshot: Employee management screen with shift, branch, and overtime rules
    Employee management — branch assignment, shift windows, off-days, and overtime rules in one focused workspace, with bulk import.Shown
    localhost:3000/en/admin · employees · sample data
  4. Record written

    Only now does the record exist. Administrative changes to records are attributable, so exceptions stay accountable.

    Open full screenshot: Attendance logs with employee, branch, status, and date-range filters and a PDF export button
    Attendance logs — filter by employee, branch, status, and date range, then export the exact filtered view as a formal PDF.Shown
    localhost:3000/en/admin · attendance logs · sample data
  5. Analytics & reports

    Anomalies are surfaced, not buried: the admin home answers “what needs my attention today?” before anything else.

    Open full screenshot: Dashboard action queue listing items that need review beside attendance by branch, sorted by who needs attention
    Admin dashboard. An action queue, and branches sorted by who needs attention.Shown
    localhost:3000/en/admin · dashboard · sample data

The situation

السياق

Context

Attendance sounds like a solved problem until it meets a real company: multiple branches, shifting schedules, employees and administrators with very different needs, and records that feed payroll and decisions. Off-the-shelf tools didn’t fit the operation’s rules — so the company needed its own system, and needed it to be dependable.

Business problem

  • Attendance records must be trustworthy — payroll and accountability depend on them.
  • Check-ins must provably happen at the right branch, not from a phone at home.
  • Administration needed visibility across branches without manual collation.
  • Reports had to leave the system in a form managers actually use: PDF, in Arabic and English.

User problem

Two very different users share one system. An employee needs check-in to take seconds and to trust that their record is correct. An administrator needs to see anomalies quickly, manage exceptions fairly, and produce reports without exporting to spreadsheets and fixing them by hand.

If either experience fails, people route around the system — and the data stops being true.

Constraints

  • Full bilingual interface — Arabic and English across every screen and every generated document.
  • Validation strict enough to prevent abuse, forgiving enough for legitimate edge cases (network changes, branch visits).
  • Data loss is unacceptable: backups and restore had to be first-class features, not scripts on a server.
  • Runs on pragmatic infrastructure — reliability through design, not through expensive platforms.

The approach

النهج

My role

I designed and built the platform end to end: the data model and validation architecture, the employee and administration experiences, the reporting and backup subsystems, and the production deployment — plus ongoing product decisions as the operation’s rules evolved.

Product strategy

The strategy: make the honest path the easy path. Check-in is near-instant when you’re where you should be; every exception has a legitimate route through an administrator. Governance features were framed as protecting employees’ records, not surveilling them — which is also simply what the system does.

The system

النظام

UX & system architecture

The platform is really two products on one data model:

  • Employee surface — check in/out, personal history, and request flows, optimised for speed on a phone.
  • Administration surface — branch dashboards, anomaly review, employee management, report generation, and system settings including backups.

Role-based access control separates what each role can see and change, down to the action level — an administrator of one branch is not an administrator of all branches.

  1. Client

    • Next.js app
    • Employee UI
    • Admin UI
    • AR / EN
  2. Service

    • TypeScript API
    • Auth & RBAC
    • IP / branch validation
    • PDF generation
  3. Data

    • MySQL / MariaDB
    • Attendance records
    • Scheduled backups
    • Restore workflow

Technical implementation

  • Next.js + TypeScript end to end — one language, typed contracts between UI and API.
  • Validation pipeline — identity, branch IP allow-lists, and shift rules evaluated server-side before any record is written.
  • Reporting engine — parameterised queries feeding bilingual PDF exports for payroll periods and branch summaries.
  • Backup & restore — scheduled database backups with an administrator-facing restore workflow, tested rather than assumed.Shown
  • Auditability — administrative changes to records are attributable, so exceptions stay accountable.Stated

The interface

الواجهة

Design decisions

Internal tools deserve design too. The interface uses a calm dashboard language with clear status colors, dense-but-readable tables, and bilingual typography that keeps Arabic and English equally legible. Anomalies are surfaced, not buried: the admin home answers “what needs my attention today?” before anything else.

Open full screenshot: Admin dashboard showing today's attendance stats, an action queue, and branch performance
Admin dashboard — answers “what needs my attention today?” first: present / absent / late tiles, an action queue, and branches sorted by who needs attention. Open it to see the full page.
localhost:3000/en/admin · dashboard · sample data (“Sample employees shown”)
Open full screenshot: Branch directory table listing branches, codes, employee counts, and IP rules
Branch directory — the operational records that drive assignment, attendance filters, and network rules.
localhost:3000/en/admin · branches
Open full screenshot: System backup history with encrypted, restore-ready database snapshots
System backup — encrypted, restore-ready database snapshots as a first-class feature, not a script on a server.
localhost:3000/en/admin · system backup
Footer line reading: Developed by Eng/Abdelhmeed Elshorbagy, with GitHub, Instagram and LinkedIn icons
Signed. Every screen of the platform carries the same footer line.
localhost:3000/en/admin · footer

Trade-offs

المفاضلات

Strictness vs. reality

IP validation is a strong signal but not a perfect one — networks change, employees travel between branches. The trade-off: strict automatic validation with an explicit, logged administrative override, instead of loosening the rules for everyone.

Building restore, not just backup

Backups that have never been restored are a hope, not a plan. Building a real restore workflow took meaningful extra effort and was worth every hour.

Outcome & lessons

النتيجة

Qualitative outcomes — no invented metrics.

In production

The platform runs the company’s real attendance operation across branches, in both languages.Stated

Trustworthy records

Validation at write time means reports are generated, not reconciled.

Operationally safe

Backups, restore, and role-based access make the system dependable, not just functional.Shown

Lesson

Users forgive a plain interface; they never forgive a wrong record.

Internal platforms live or die on trust. Investing early in validation, auditability, and restore workflows is what separates a tool people use from a tool people work around.