Wifaq
Reports and Excel data for a network of marriage-office branches, in one Arabic system. It replaces the separate Excel sheets each branch kept with one system: members, contracts and collections in one place, reports per branch and employee, and Excel import and export with checks.
- Role
- Front-end developer: the whole dashboard, on a mock API that switches to Django REST Framework with one setting.
- Engagement
- Freelance
- Surfaces
- Admin dashboard (AR, RTL)
- Links
- Private client project

The problem
A network of marriage offices ran on separate Excel sheets per branch, so nobody had one view of members, contracts, collections or how each branch and employee was doing.
What it does
- 01Reports on registrations, branches, employees, matching, collections and monthly activity, filtered by date and branch and exported.
- 02The existing Excel sheets are imported with column mapping, error and duplicate checks and a file of the rows that failed; exports pick their columns by permission.
- 03Each member has a contract paid in instalments, every payment proven by a transfer receipt, with the remaining balance tracked.
- 04A dashboard for all branches and one per branch, with key figures, charts and the latest activity.
- 05General managers, branch managers and employees each see only what their role allows; viewing ID cards and photos is restricted and logged.
- 06Matching suggests candidates with a compatibility score and its reasons, and follow-ups are scheduled per member.
What I did
- Built the whole frontend in Next.js 16 with TypeScript, Tailwind CSS 4 and shadcn/ui, right-to-left throughout.
- Wrote a service layer with a mock and an HTTP adapter per resource, so the app runs on in-browser demo data and switches to Django REST Framework through one environment variable.
- Built the role-based permissions and data scope for super admins, branch managers and employees.
- Built Excel import with validation and export with chosen columns, loading SheetJS only when needed.
- Kept filters, tabs and pagination in the URL, so every view is a shareable link.
Screens
Inside the product.
Click any screen to view it full size.
Stack
Frontend
- Next.js 16 (App Router)
- React 19
- TypeScript
- Tailwind CSS 4
- shadcn/ui
Data
- TanStack Query
- TanStack Table
- React Hook Form
- Zod
- Axios
Charts & files
- Recharts
- SheetJS (xlsx)
- date-fns