HAEIFIN
An Arabic-first financial ecosystem spanning mobile, web, administration and its public website: multi-currency books, debts, reports, cloud teams, friends, expense groups, rotating savings and text/voice assistance.
About the project.
HAEIFIN starts as a personal notebook on the device and extends to shop or partnership accounts, shared cloud books and financial relationships reviewed by both parties. Its application combines recording, statements, payment records and reporting, with Mudir helping users find data and prepare reviewable actions. A separate dashboard runs subscriptions, support, notifications, cloud operations and AI, while a bilingual public website explains the product.
What we walked into.
Combine multi-currency accounting precision with everyday language, continuity through weak connectivity and sharing boundaries both parties can understand.
What we did.
Separate ledger logic from interface and synchronization, center entry on the account and its effect, then add collaboration, cloud and AI with explicit review and permissions.
What it became.
An implementation spanning the local ledger, reports, collaboration, cloud and administration. This case study describes the current code and guide; native, voice and notification capabilities depend on device, configuration and plan, and do not imply uniform store availability or validation of every flow on every device.
What was actually broken.
Balances, due dates and small payments become scattered across memory and conversations; multiple currencies and shared expenses add ambiguity.
The hard surface area.
- 01Keep currencies independent while explaining estimated totals.
- 02Make corrections and settlements traceable.
- 03Support local work with optional sharing and clear permissions.
- 04Explain broad capabilities through everyday Arabic and a customizable interface.
What the project includes
Product ecosystem
A financial mobile app with a web experience
HAEIFIN brings onboarding, accounts, entries, dues and reports into a React Native and Expo application, then adds collaboration and assistance when enabled. SQLite keeps daily records on the device, with a web experience for supported journeys. Individuals, shop owners and partners work through the same product. Camera access, attachments, biometrics, calendars and notifications depend on the device; web compatibility does not imply every native capability runs in a browser.
A separate administration application
A dedicated Next.js dashboard supports the team operating HAEIFIN: users, licenses, plans, billing, AI, cloud books, social operations, support, push campaigns, audit, diagnostics and remote configuration. A user profile brings subscription history, devices and service requests together. Owner-only controls remain separate from other administrative access. Product operations and customer service therefore have their own workspace rather than being mixed into the user’s financial notebook.
An Arabic and English education website
The public website explains personal, shop, partnership and exchange-recordkeeping uses, with dedicated feature pages for accounts, dues, currencies, reports and Mudir. It also includes plan comparisons, download information, help, articles, a changelog and legal pages. Invitation and sharing landing pages support the handoff into the application. These lightweight pages are separate from administration; store or download availability follows the actual release configuration rather than the presence of a store logo.
Books, accounts and entries
Local onboarding tailored to the work
A local notebook can start without an online account. The user selects a language, book name and purpose—personal, shop, exchange recordkeeping or business partnership—then currencies, a base currency and balance terminology. This establishes what the records mean before the first transaction. Onboarding can also restore an existing backup instead of opening an empty book, making a device change part of the initial journey.
Separate books for home, business and partnerships
One list brings together books stored on the device and accessible cloud books, including archived records. Each has its own accounts, currencies, categories and settings, so home expenses do not mix with business activity. Users can create, switch, rename, archive and restore books through dedicated journeys. Book counts and reopening archived books follow plan entitlements; archiving keeps inactive work out of the daily list without presenting it as erasing its history.
People and business accounts with opening balances
Create accounts for people, customers, suppliers, employees, partners or a custom type. Profiles can carry phone, WhatsApp, email, photo, description, categories, extra fields and a default currency. Existing balances are entered with their currency and direction: owed to the user or owed by the user. The account page keeps its balance, history and actions alongside the identity and context needed to understand those figures.
Income, expenses and money accounts use distinct meanings
General accounts organize income and expenses, such as household spending. Cashboxes, banks and wallets describe where money is held and what entered or left, while a person’s account expresses what was given or received. These different labels help users distinguish an actual expense from a receivable or an internal cashbox transfer. The interface explains the meaning of a balance without requiring accounting terminology for every action.
Account organization, corrections and duplicate merging
Pinning, search, filters and archiving keep active accounts easy to reach. Users can restore archived accounts, edit their details and change supported account types. When two accounts represent the same party, a merge journey explains balance transfer, duplicate archiving and undo rather than silently hiding one history. Balance correction is a separate, traceable action, so fixing an older mistake remains understandable when the statement is reviewed later.
From an amount to its effect on the balance
The entry editor collects the account, amount, currency and direction while distinguishing cash from credit. The user chooses the date, note and optional due date, then confirms; the entry appears in the statement and balances are recalculated. An amount calculator, currency shortcuts and ready notes reduce repetitive typing. A warning for a similar recent entry helps the user notice possible duplication without taking the final recording decision away from them.
Progressive detail instead of a crowded form
Detail levels keep the entry screen short for simple amounts and notes, then expose categories and attachments at the standard level and references, time and extra fields at the advanced level. Application, book and account preferences determine the chosen presentation. Custom categories, fields and reusable notes make records searchable in the user’s own language. Image/PDF attachments and storage depend on device and plan; attachment upload is not available in the current web experience.
Split entries and reviewed batch entry
A split entry distributes a transaction across multiple parties or lines and checks balance separately for each currency; currencies are not implicitly converted because they appear together. Batch entry provides shared defaults for the rows while preserving individual row details before saving. This supports entering a busy day or several payments in an organized sequence, with review before recording rather than reopening the full editor for every item.
Corrections, voids and undo preserve the trail
An edited transaction uses reversal and replacement with an explanation instead of silently rewriting history. Users can inspect original or voided entries, use immediate undo where supported and open transaction details from a statement. Activity history also records imports, backups and restores. Beneath the interface, entries balance per currency and amounts use precise arithmetic, making the route to a balance inspectable rather than leaving only an unexplained final figure.
Dues and currencies
Debt overview, due-date views and calendar
The dues area separates receivables and payables or displays both, then distinguishes overdue, today, upcoming and undated items. Opening a debt reveals its original amount, paid portion and remainder; the calendar provides a date-based view. The result is a practical follow-up list: whom to contact today, what has not fallen due and which obligations lack dates, rather than collapsing every debt into a single total.
Partial payments and settlement allocation
Recording a payment includes its amount and money account, then shows how it changes the outstanding obligation. Normal allocation pays older debts first, while an explicitly selected debt can take priority. An overpayment remains as credit instead of disappearing; settlement in another currency requires an explicit rate. This supports customers paying in stages or settling several obligations together while keeping the remaining amount explainable.
Due reminders and notification preferences
Reminders can be scheduled before a due date, on the day and after it becomes overdue, with timing and repetition governed by settings and entitlements. Phone-calendar integration is separate and can hide amounts from calendar events. Preferences cover in-app, phone and email channels as well as friend, subscription, device and product alerts. Current WhatsApp reminders prepare text for manual sending; automatic WhatsApp delivery and recurring financial entries are not currently available features.
Independent currencies and reviewable reference rates
Users enable the currencies they need and choose a base currency. Balances retain their original denomination; reference rates produce a clearly labelled estimate without rewriting older entries. Rates can be edited and their history reviewed. This matters when, for example, Syrian-pound and dollar records coexist: a larger raw number in one currency is not automatically treated as more valuable than a smaller amount in another.
Cashbox transfers, exchange records and debt transfers
Transfers between cashboxes, banks and wallets specify the source, destination and amount. Exchange recording adds two currencies and an explicit rate. Transferring a debt between parties is a separate journey that can include different currencies, commission and a receiving due date where enabled. These flows explain how the transaction affects the notebook; they record an event rather than executing bank transfers, currency exchange or collection on the user’s behalf.
Statements and reports
Statements explain the balance line by line
An account presents transactions as a timeline or table, with a running balance showing the effect of each entry. Users select the currency, period or custom range, inspect balances as of a chosen date and optionally include voided entries for review. A row opens its full transaction details. This supports personal checking and resolving balance disagreements with another party because amounts remain attached to their date, note and direction.
Search and reusable filters
Search can locate accounts or entries through names, phone numbers, notes and amounts according to the current screen. The entries report combines date range, account, currency, transaction type, category and amount limits. Named saved filters allow the same view to be reopened without rebuilding it. This answers practical questions such as reviewing one party’s activity over a period or finding a transaction when only a word from its note is remembered.
Daily, period-entry and category reports
The daily report focuses on records for one date and allows navigation between days and into their transactions. The period-entry report broadens review to a date range with filters. Category reporting groups records by the user’s classifications to show where spending or activity is concentrated. These serve distinct tasks—checking a day, auditing a period and understanding distribution—rather than presenting several names for the same table.
Balances, receivables, payables and account summaries
The balances report brings accounts together and supports an as-of date with navigation into each account. Receivables focuses on people who owe the user, payables on obligations to others, and the account summary concentrates on one party. Multi-currency ranking considers estimated base-currency value when rates are available instead of adding dollars and pounds as if they were the same unit. Original balances remain available for inspection.
Dues and debt ageing for follow-up
Dues reporting connects obligations to their dates and status. Debt ageing distributes outstanding amounts into age bands so a recent obligation is not treated like one that has been overdue for much longer. Users can move from the summary to the underlying account or entry. Together these reports help prioritize approaching deadlines, overdue items and longer-standing balances while retaining currency and direction distinctions.
Activity, balance movement, money accounts and team work
Most-active accounts reveals where activity is concentrated over a period. Balance movement shows change through time, while money-account reporting focuses on cashboxes, banks and their flows. A multi-member cloud book adds a team report associating activity with its author. The catalogue contains twelve general reports and this conditional thirteenth report, with supported report exports. Their figures come from the notebook rather than fabricated business-performance claims.
Export statements with the business identity
Account statements, book data and supported reports can be exported as PDF, Excel and CSV. A business card supplies the logo, trading name, contact details, address and footer so documents identify their source. Users choose the file and the sharing options available on their device; exporting does not automatically contact the account holder. These review documents are also distinct from a restorable notebook backup.
Cloud and collaboration
Move a book to the cloud and use multiple devices
Cloud setup requires a signed-in user and an eligible plan, with a backup step before uploading a local book. The uploaded book can be opened on registered devices while connection and synchronization status remain visible. Continued local recording does not imply immediate delivery to another device; changes travel when connectivity and allowed access return. Users therefore choose continuity and sharing for particular books without moving every local notebook online.
A visible workflow for synchronization conflicts
A dedicated attention page lists refused or conflicting commands instead of hiding them behind a generic synchronization-success message. Users can resend against the book’s current state, keep their value for supported conflicts or resolve a notice without deleting its trail. Adjusted operations have their own notices. A read-only book prevents disallowed resubmission, explaining why progress stopped and what actions remain available.
Book teams, invitations and ownership transfer
A book owner invites another person through a link or code and assigns the relevant role: owner, administrator, editor or viewer. This separates reading records from entering transactions and managing members. Team activity identifies who changed what and when; device controls show sessions and the main device. Seat availability follows the owner’s plan, and ownership transfer requires acceptance so responsibility cannot silently move to another person.
Friends, discovery, invitations and privacy
A friend can be found through a username, code, QR or link, with phone contacts available on supported devices. The inbox distinguishes accepting, rejecting and withdrawing requests; discovery preferences, blocking and muting control the relationship. People without the app can be invited and later complete identity/claim journeys when joining. Becoming friends establishes a relationship between two people, not access to every account in either notebook.
Link one account and request entry approval
The user selects which account and book to connect to a friend and what balance or notes may be shared. Linking an existing account does not automatically expose its entire private history; sharing starts from the allowed balance and information. A sent entry reaches the other party for review and acceptance or rejection, with sent and pending status views. This distinguishes a unilateral record from a transaction both parties have acknowledged.
Groups for trips, households and partnerships
An organizer creates a trip, household, family, partnership or custom group, adds members or shares a join link/QR under the group’s policy. A guest without the app can receive a dedicated link and later claim their membership with confirmation. Membership, permissions and joining rules are separate from friendship, so everyone on a trip need not expose their notebooks to each other. The group keeps shared spending tied to a specific purpose.
Expense splitting and confirmed settlements
An expense records its payer, amount, currency and receipt, then divides shares equally, by fixed amounts or by shares. Members accept or object to their portion; authorized users can review or cancel the expense. Suggested transfers simplify settlement, but reporting a payment still requires recipient confirmation. Balances remain currency-specific, and leaving or removing members respects settlement conditions. Sharing an expense record does not execute a real payment.
Rotating savings: contributions, turns and payouts
A rotating savings association is a separate mode from an expense group. Its organizer sets the contribution, currency, weekly/fortnightly/monthly cadence, first payout, collector and turn order—manual, need-based or a one-time draw. Round views show member status; reported contributions need receipt confirmation. Payouts may be recorded fully or partially with the recipient’s confirmation. Membership is controlled after ordering, and turn swaps, withdrawal, acceptance and rejection follow explicit consent rules.
Mudir and AI
Natural language becomes an editable proposal
A user can describe a transaction in everyday language and receive an entry card rather than a generic answer. Tools cover ordinary entries, split transactions, debt transfers and new-account proposals. Cards expose the account, amount, currency, direction, date and due date for review and editing before confirmation. Missing details can trigger a clarification question, and unsupported requests are not represented as completed work. The final financial decision remains with the user.
Ask the notebook about balances, dues and reports
Questions such as how much a party owes, who is overdue or what entered and left a cashbox this month map to a balance, dues or report request. Mudir can open in the context of a specific account so the intended party is clear. Balance, transaction and obligation facts come from notebook data, with cards leading back to the original screen. The assistant shortens access to information while statements and reports remain the reviewable reference.
Draft reminders, messages and statement sharing
Mudir can prepare a polite reminder, a message to a selected account or a statement for a chosen period. The message card shows the recipient, exact wording and channel and allows editing before opening the user’s WhatsApp or email application. Sending remains the user’s action there, with device sharing as a supported fallback. Drafting and delivery are distinct so the book owner controls what leaves the device and where it goes.
Assistance for friends and shared requests
Mudir can show friends, the link status with a particular person, entries awaiting the user’s reply and recent social activity. It can prepare a payment request or reminder with its amount and wording, or a card to accept, reject or dispute one incoming entry. The card shows the proposed action, and nothing reaches the friend before the user confirms. Assistance therefore covers shared follow-up as well as private bookkeeping.
Typing, voice notes and live conversation
Mudir offers typing, voice-note and live-conversation journeys subject to device, service and plan support. Users choose its account-page opening mode, voice and local playback speed, or switch the assistant off. The call interface handles listening, responses, interruption, weak connectivity and session ending; proposed actions still require review. These are connected-service paths, not an offline on-device AI promise, and voice behavior is not assumed identical across every device or provider.
Conversation history and usage credits
Saved conversations can be listed and reopened, with action history distinguishing displayed, saved, cancelled and failed proposals. This separates what Mudir suggested from what actually entered the notebook. Usage credits follow plan and service entitlements; when access changes, available saved-chat reading is distinct from making a new request. Credit purchase and management belong to the billing system rather than implying unlimited AI use.
Data, security and experience
Backups and explicit restore decisions
A versioned backup contains book data and can be password-protected and saved outside the phone. Restoration reads and previews the file before confirming a supported merge or creating an independent new book. Cloud books and friendship links have restoration boundaries, and large-attachment exclusions may be explained separately. Backups are a user-controlled recovery mechanism, distinct from device synchronization and from exporting a read-only statement.
Preview file and contact imports
Instead of retyping an older notebook, the import journey offers a template, Excel/CSV selection and a preview of rows and errors before confirmation. Import brings structured external data into the book; it is distinct from manually composing several entries inside the app. Supported devices can also use permitted phone contacts to create accounts more quickly. Previewing exposes missing information before the file becomes recorded data.
Attachments, storage and activity visibility
Entries support attachments within device and plan limits, with a storage screen for photos and their space usage. The data area explains where records live and separates backup, export, import and attachments. Activity history brings together significant changes and data operations so users can trace recording, corrections and recovery work. Capturing or uploading files requires a supported device and permissions; the web experience is not presented as proof of native attachment success.
Identity, sessions and application lock
Account journeys include email, Google and phone-code sign-in according to provider setup, plus profile and linked-method management. Users can inspect devices and sessions and sign out of one or all devices. Their HAEIFIN identity is distinct from the local notebook retained on the phone under the sign-out or deletion flow. Optional locking combines PIN, supported biometrics and an auto-lock interval, complemented by book roles and sharing approvals rather than a blanket encryption claim.
Personalize reading without changing financial meaning
Arabic and English control layout direction, alongside appearance, text size, digit style, accent color and row-height preferences. Home can omit zero decimals while statements remain precise. Debit/credit colors can be swapped without reversing their words, and users choose balance terminology or their own labels. Statement format, visible fields, detail levels, default currency and entry shortcuts can be adjusted to fit the user’s reading habits and workflow.
In-app help and contextual support tickets
Help includes searchable answers, policy links, version/update information and diagnostics. A user can open a problem, question, payment or suggestion ticket, with optional screenshot and permitted diagnostic context. Replies remain in the conversation with its status, reducing repeated explanations. The administrative side can connect the ticket to the app version, device and related crash reports when available, helping support understand the actual failure context.
Product operations and subscriptions
Plans, licenses and payment requests
Plans define book, seat, storage, cloud and AI entitlements. Users can inspect their plan, purchase a plan or credits and follow request status. Configured payment methods include payment reporting and evidence; administration reviews pending, approved and rejected requests, gives rejection reasons and grants the plan or credits on approval. Supported transfer checks and repeated-receipt warnings assist review. This is not universal automatic bank collection for every payment method.
Manage a subscriber through the service lifecycle
The subscriber profile combines account status, sign-in methods, current and historical plans, AI credits, social access, devices and sessions. Authorized staff can grant or extend plans, revoke licenses, add documented credits, suspend/reactivate access and end sessions. Links to billing, support and cloud records reduce navigation between disconnected tools. Audit records preserve administrative actions so service decisions remain traceable rather than becoming unexplained account changes.
Operate cloud and social features with privacy boundaries
Cloud administration shows book ownership, membership, plan, storage, devices, upload/sync state and operational history; the page explicitly excludes ledger accounts, entries and amounts. Social administration uses counters, request status and reports, with reference-based support tracing and link revocation where needed rather than exposing friendship names or financial notes. This enables continuity support and problem investigation without making routine administration a view into notebook finances.
AI operation and cost visibility
Administration provides provider/model controls, service enablement and text/voice/live-conversation model selection by plan or user override. Usage reporting shows requests and cost by model, user, plan and day, with model-evaluation information where available. This supports balancing assistance quality, operating cost and entitlement allocation. Models and provider settings remain operational choices, so the product does not promise a fixed model or guaranteed accuracy simply because these tools exist.
Targeted push campaigns with preview and scheduling
The campaign editor collects a title, message, optional image and destination link. Supported targeting includes countries, app version, recent activity or selected users, with an estimated device audience. Staff can preview, test on a device and send immediately or schedule a time. User-side news and alert preferences complement the campaign tools, making communication a manageable product function rather than an indiscriminate broadcast to every device.
Remote configuration, updates, diagnostics and audit
Operational settings include current/minimum versions, Arabic and English maintenance messages, trial and grace periods, subscription recheck timing, feature availability and service options. Diagnostics connects errors or crashes to the version, platform and screen; audit supports reviewing user, administrator and system actions. These tools support the product after release through troubleshooting and controlled changes, without inventing uptime or success-rate claims that were not measured.
How the system is wired.
- Application
- React Native, Expo and TypeScript with Expo Router and web support.
- Local data
- SQLite plus shared ledger-domain, contract and synchronization packages.
- Services
- NestJS, Prisma and PostgreSQL for identity, cloud, collaboration and plans.
- Admin and website
- Next.js administration dashboard and a lightweight HTML/CSS/JavaScript marketing website.
The decisions behind each choice.
TypeScript
- Shared ledger logic across application layers.
- Explicit data contracts for connected features.
SQLite + Expo
- Local persistence for daily work without connectivity.
- Device features within available permissions.
NestJS + Prisma
- Separate modules for identity, cloud, collaboration and plans.
- Relational data modeling for relationships and access roles.
How the platform stays trustworthy.
- Optional PIN or supported biometric lock and session controls.
- Book-level roles and approval for shared entries.
- Optional password-protected backups and visible change history.
- The assistant proposes; the user reviews before recording.
Built to scale, not just to ship.
Separate application, shared domain packages, services and administration support evolution while keeping ledger meanings and access boundaries consistent.
- Independent local or cloud books.
- Managed roles, seats and plans.
- Social features and reports grounded in the same accounts.
- Service and feature availability according to entitlements.
What the build taught us.
- Transaction language is part of correctness: an expense differs from a debt or cashbox transfer.
- Base-currency estimates must not hide original balances.
- Approval and confirmation matter when an entry affects another person.
- Implementation must be distinguished from availability on every device, service and plan.
