Skip to content

Features

Everything the app does, and why it does it that way.

Horizon Vikoba replaces a workbook, so it has to do the whole job, not the easy half. This is the whole job.

01

Members and offices

Who is in the group, what they hold, and since when.

  • A member record carries their photo, join date and the office they hold — chairperson, accountant, secretary or member.
  • The office lives on the membership, not on the person, so someone can be the accountant of one group and an ordinary member of another.
  • Deactivating a member ends their sessions at once. Nothing they wrote is deleted.
  • The secretary can reset a member's password without going through anyone else.
02

Hisa and Jamii, month by month

The workbook grid, kept as you go instead of typed up at year end.

  • Members down the side, twelve months across, opening balance and Jumla — the same shape the annual report has always had.
  • Kiingilio and faini are recorded alongside, so a member's statement shows everything they have paid in.
  • Each member starts a year with the balance carried from the last one, so nothing is retyped.
  • Every figure is a whole number of cents. No decimal ever drifts.
03

Loans, and the three signatures

A member asks. The chairperson, the accountant and the secretary each answer.

  • A member raises their own request — nobody raises one on somebody else's behalf.
  • The app writes the request letter, Ombi la Mkopo, from what the member typed and from who stands behind the loan. They print it and sign it by hand.
  • All three offices must approve before money moves. Any one of them can reject, which ends the request.
  • Nobody signs their own loan: an officer who is the borrower steps aside and the remaining two decide.
  • A signature covers specific terms. Revise the amount, term, rate, penalty or date and every earlier approval is cleared, so everyone looks again.
  • If a required office has no active holder the loan is blocked and says so. It is never waved through.
  • Someone who already has a loan out can still ask. The page shows the officers every other live loan and what is late on it, and leaves the judgement to them.
04

Riba is charged once

A one-off percentage of the principal, set by how long the loan runs.

  • The rate table ships with the group's own rates — 5% for one month, 7.5% for two, 10% for three to six — and the chairperson can edit it.
  • Rates are stored in basis points, so 10% is 1000 and never becomes 0.09999.
  • Adhabu is added on top at approval: total payable = principal + riba + adhabu.
  • A per-month model would charge 40% on a four-month loan where this charges 10%. That difference is the point.
05

Repayments that reconcile

An append-only ledger, with every balance derived from it.

  • The schedule is generated once at approval, dated monthly from disbursement, clamped at month end — 31 January plus one month is 28 February.
  • Integer division leaves at most a few cents over; they go on the final instalment, so the schedule sums to exactly the total payable.
  • Recording a repayment and removing it again are exact inverses. A loan completes itself when it is paid off, and reopens if a repayment is deleted.
  • Within an instalment a payment settles riba and adhabu first, then principal.
  • An instalment is overdue only once its due date has passed. One due today is still on time — and the database and the screen agree on that boundary.
  • Officers can take a payment from the loan list, from the repayments desk, or from the loan's own page. The desk lists every loan still owing, arrears first.
06

The cash book

What came in, what went out, and what is actually in hand.

  • Collections, loans disbursed, expenses and sundry income, month by month, with a running balance.
  • A repayment is filed by the day it was paid, so January's payment against November's loan belongs to January's book.
  • Cash in hand is kept apart from contributions brought forward, because a group that has spent part of its welfare fund holds less than its Jamii total says.
07

Closing the year

Faida worked out, gawio split to the exact cent, balances carried forward.

  • Faida is riba charged plus sundry income, less miscellaneous expenses.
  • Gawio splits that profit between members in proportion to their Hisa, using the largest-remainder method — the parts sum to the pool exactly, with no cent created or lost.
  • Closing Hisa and Jamii become next year's opening balances, and closing cash becomes next year's opening cash.
  • A year that made no profit still closes. Its balances have to carry forward either way.
  • Closing is reversible. Reopening a year discards its share-out so it can be recalculated.
08

Reports the group already recognises

Seven of them, each with a year switcher, each ready to print.

  • The annual report's per-member table foots to the group total, or it does not render.
  • Hisa and Jamii come out as the twelve-month grid the workbook used.
  • Mikopo lists every loan with its dates, principal, riba, adhabu, repayments and balance owed.
  • Any member can open their own statement; officers can open anyone's.
09

Everyone can see the book

That is the point of a savings group, so it is how the app behaves.

  • Every member sees every loan — pending, active and repaid — with an "only mine" filter. Only the controls differ by office.
  • One member cannot open another's request letter. That much is private to the borrower and the officers.
  • Members read the contributions register and their own statement, and can request a loan. They cannot record or remove anything.
10

Many groups, one installation

Each group's book is closed to every other group.

  • A single login can belong to several groups and switch between them from the sidebar, holding a different office in each.
  • Isolation reduces to one question answered in one place: which group is this request allowed to act in? A loan or member id from another group is simply not found.
  • The platform owner creates groups and appoints chairpersons. They hold no office anywhere and cannot read any group's books.
  • To look inside, the platform owner impersonates one of the group's own officers. A banner on every screen says whose eyes the data is being seen through, and the act is written to the group's own audit log — so the group can see that an outsider looked.
11

Built so the numbers cannot drift

The parts of the app you would want to check before trusting it with money.

  • Every amount is a whole number of cents, held as an integer. No floating-point value ever touches a balance.
  • Permissions are one table, and the guards run on the server for every page and every action — never in the interface alone.
  • Some rules are hard-wired because they guard money: nobody approves their own loan, nobody changes their own role.
  • Every act of consequence is written to an audit trail the group can read.
  • Pages are rendered on the server, so the app stays usable on a slow connection and a modest phone.
12

Bring the workbook you already have

Your existing annual report goes in, checked figure by figure.

  • The importer validates every figure against the workbook's own totals rows, and refuses to write anything if a single one disagrees.
  • It reconciles spelling drift between sheets and prints each name mapping, so you can check it before it lands.
  • Anything it had to guess is flagged as a guess rather than quietly applied.
  • Loans that predate the app are recorded as approved outside it, dated to when the money went out — unattributed, and never backdated onto an officer.

Who can do what

One table decides it, and the checks run on the server for every page and every action, never in the interface alone.

OfficeCan
ChairpersonOfficer powers, plus group settings, the interest table and closing the year.
AccountantOfficer powers: members, contributions, loans, repayments, the cash book and reports.
SecretaryOfficer powers, plus resetting members' passwords.
MemberReads the loan book and the contributions register, opens their own statement, requests a loan.

See it against your own numbers.