Borealis

operations · laravel · 2023

Alumni membership, application to renewal in one place

Asociación de Ex-Becarios Paraguayos en el Japón

A membership platform for an alumni association: public applications with an approval workflow, member records, a searchable directory, dues, and automated greetings.

The operation

The Asociación de Ex-Becarios Paraguayos en el Japón is the alumni association of Paraguayans who studied in Japan on scholarships. It needed one place to run its membership rather than several.

The system covers the whole member lifecycle: a public application form, an admin approval step, member profiles and scholarship records, a searchable directory, dues tracking, and automated birthday greetings that go out on a scheduled job every morning.

The member register, with dues status on every row and a one-click export of the active list.
The member register, with dues status on every row and a one-click export of the active list.

The part that was actually hard

Logging in as a Paraguayan. Members identify themselves by email, by cedula, or by mobile number, depending on who they are and what they remember. One login field accepts all three, and a normalizer standardizes Paraguayan mobile formats so the same person typing their number two different ways still gets in. Keeping those login fields consistent with the profile data behind them, duplicates and placeholders included, is its own scheduled reconciliation.

Approving somebody. An approval is not a status change. It provisions the user account, the member profile and the scholarship records together, generates credentials, and sends the welcome mail, as one coordinated transaction with file uploads and email side effects hanging off it.

Shipping safely to the hosting they already had

Worth its own section, because this is the constraint institutional clients actually have and it is usually treated as a reason to give up on good practice.

The hosting the association already paid for offers no command line at all, which is normally the point where a developer asks the client to move hosts. Instead, releases run automatically, the tests have to pass before anything ships, and the site puts itself into maintenance mode, updates and comes back on its own through protected addresses only the release process knows.

The association did not have to change hosting, spend anything more, or learn anything new. It still got releases that cannot ship broken.

Where it stands

Built in 2023 and in production use since then, at socios.aebpj.org.py. The interface, the emails and the reports are all in Spanish.

Different business, same shape of problem?

Every system written up here started with somebody describing an operation that had outgrown the way it was being run. If that sounded familiar, tell me how yours works today.

Talk through your version