Back to the island
The ElCoS app icon: a white line drawing of a head shaped like a light bulb, on purple Market stall · iOS and Android

ElCoS app

Snap the receipt the moment you've paid. The treasurer approves it, books it and pays you back. No more envelopes of crumpled paper.

Built
Sept–Oct 2026
For
ElCoS tutor association, Aarhus University
Role
Solo: app, server, deploy
Status
v1.2 on the App Store
See it on the App Store
The app's home screen: a big 'Take a picture of a receipt' button, shortcuts to receipts and feedback, and links to the association's other tools The new receipt form: camera, photos or PDF, purchase date, amount, the tutor group, budget line and purpose
The story

A shoebox of receipts

Tutors spend their own money all the time: food for intro week, decorations, a crate of soda. Getting it back meant keeping the paper receipt, handing it in later, and hoping the treasurer could read it and work out what it was for.

The ElCoS app moves that whole trip onto the phone. The photo is taken right after the purchase, with the details the treasurer needs, so nothing gets lost in a pocket.

From first commit to the App Store in four days.

The first version was committed on 27 September 2026 and was running on the association's own server the next day. It was on the App Store on 1 October. Within ten days of the first commit it also had push notifications, a feedback inbox and Android support.

How it's used

The life of a receipt

Every receipt moves through the same four steps, and both the tutor and the treasurer can see where it is.

  1. TutorIndsendt

    Photo or PDF, amount, the team and the budget line it belongs to.

  2. TreasurerGodkendt

    Checked and approved. The tutor sees the new status.

  3. TreasurerBogført

    Entered in the accounts and exported to a spreadsheet.

  4. TreasurerRefunderet

    Money sent to the account number from the tutor's profile.

Afvist · A receipt can also be rejected, for example if it's missing or for the wrong budget.

Submitting one, step by step

  1. Log in with a code

    Type your e-mail, get a 6-digit code, done. No passwords to forget.

  2. Photograph the receipt

    Use the camera right at the till, pick photos, or attach a PDF for online orders.

  3. Say what it was for

    Pick your tutor group, and the budget lines come from that group's budget, so it lands in the right place.

  4. Follow it

    “My receipts” shows every receipt and its status. The treasurer gets a push notification the moment it arrives.

Screenshots

In the app

From the App Store listing. Dark mode with ElCoS purple, and a light mode if you prefer.

Features

More than receipts

Treasurer view

All receipts in one list, filtered by status, with approve, reject, booked and refunded, and a CSV export.

Feedback and ideas

Members send feedback from the app; admins get it in an inbox and are notified when something new arrives.

Push notifications

Treasurers hear about new receipts, admins about new feedback.

Profile

Name, phone and bank details saved once, so refunds just work.

Association hub

The home screen links to the association's other tools, like Kapselregnskab and Events.

Store ready

Delete your account from the app, a privacy policy, and a demo login for Apple's reviewers.

Under the hood

How it's built

One TypeScript codebase for both phones, and a small PocketBase server on the association's own VPS.

A push to main that touches the server makes GitHub Actions log in to the VPS, pull, rebuild the container and wait until it's healthy. Database and receipt images live outside the code, so a deploy never touches them.

Timeline

  1. First version: tutor portal with receipts.

  2. Running on the VPS, deploys through GitHub Actions. New front page, feedback and an admin role.

  3. Ready for the App Store: delete account, demo login, privacy policy.

  4. Android polish and Google Play setup.

  5. Live on the App Store.

  6. Push notifications on iOS.

  7. Budget lines follow each tutor team's budget.

  8. Version 1.2.0.

Stack

More from the island