All projects

AYATEI Initiative

Website for a vocational training non-profit in Ethiopia

Role
Sole developer, with the founder as client
Timeline
July–October 2026
Built with
React · TypeScript · Tailwind CSS · Express · MongoDB Atlas · PayPal
AYATEI Initiative: Home
Home. The opening of the narrative, with the language selector in the header.

The problem

Many young Ethiopians see no route to stable work and risk dangerous irregular migration instead. AYATEI (African Young Adult Training & Employment) is building a trade-training compound as an alternative. It needed one place to tell that story, take student applications, attract partners and collect donations, in the languages its audience actually reads.

What I built

A seven-language public website with a working back office behind it.

Narrative home page
A chaptered scroll story with paired imagery and an embedded video from the founder, moving from the migration routes to the alternative AYATEI offers.
Application and partner forms
Validated in the browser and again on the server, rate-limited per IP, protected by a honeypot field and stored in MongoDB Atlas. Nothing personal is kept in the visitor's browser, which matters for people applying from shared phones and internet cafés.
Donation studio
Eight contribution tiers, each with its own PayPal hosted button and QR code. Card details never touch the site.
Seven languages
English, Amharic, Oromo, Tigrinya, Somali, Swahili and French, 492 strings each, with Ethiopic script support and automatic detection of the visitor's browser language.
Admin panel
Staff move applicants and partners through stages (New, Contacted, Interview, Accepted), search, filter, add notes and export to CSV.
Hardening
Security headers served by the Express server, signed HttpOnly session cookies, SEO metadata, a sitemap and a robots file.

My role

Sole developer, working with the founder as the client. I designed and built the front end, wrote the Express API and data layer, integrated PayPal, deployed to Hostinger and iterated on rounds of client feedback.

The October audit

The site looked finished. When I reviewed it end to end I found that forms saved only to the visitor's own browser, five of the seven languages fell back to English, the admin page was unreachable and the PayPal button vanished when switching tier. I rebuilt those pieces properly, took known package vulnerabilities from 7 to 0, and cut public assets from 39 MB to 19 MB.

Tech stack

Front end
React 19, TypeScript, Vite 6, Tailwind CSS v4, Motion, Lenis, Lucide icons
Routing and i18n
Custom History API router; custom language context with typed locale files (no i18n library)
Back end
Node.js, Express, Nodemailer
Data
MongoDB Atlas
Payments
PayPal hosted buttons and QR codes
Hosting
Hostinger, deployed automatically on push to main

Screenshots

AYATEI Initiative: Student application form
Student application form. Server-validated, with a three-menu date of birth for slow devices.
AYATEI Initiative: Donation studio
Donation studio. Tier selection on the left, PayPal QR for the active tier on the right.
AYATEI Initiative: Amharic
Amharic. The Future page fully translated, rendered in Ethiopic script.

What I'd improve next

Email notifications
Submissions are saved, but nobody is emailed when one arrives. The mailer is written and needs configuring on the host.
Native-speaker review of translations
Oromo, Tigrinya and Somali are the most likely to contain mistakes, and the newer Amharic text should be checked too.
Automated tests
I'd start with the server-side validation and an end-to-end test that submits a form and finds it in the admin panel.
Wider device testing
Real low-end Android phones and Safari matter most for this audience.
Donation tracking
A PayPal webhook would let staff see donations alongside partners and applicants.
Next projectSelam Wellness

Have a manual process eating your time?

Let's automate it. Tell me what's slowing your business down and I'll help turn it into a better system.

Hiring? Email me or download my CV.