← All projects

ASSOJ

A site for a youth empowerment NGO, built pro bono

Live 2025 - Present Pro bono: build, deployment, domain and email

The website of ASSOJ (Associação para o Empoderamento Juvenil), a Mozambican non-profit founded in 2020 that trains young people in entrepreneurship and innovation, and incubates the businesses that come out of it. I built and deployed it for free, and the brief I set myself was that it should cost the organisation nothing to keep running.

Highlights

  • Deliberately pro bono. This is the same ecosystem I work in professionally (innovation, incubation, youth skills), so contributing to an organisation doing it from the non-profit side is not charity, it is participation.
  • Designed for zero running cost: a static Astro build on a free host, so the only recurring expense is the domain. Money an NGO spends on hosting is money not spent on its programmes.
  • Handled the whole delivery, not just the code: domain registration, DNS, and email on the domain configured into the managers' own inboxes so they could actually send and receive.
  • Replaced an earlier hand-written holding page with a real site the organisation can grow into.

Built with

Astro React Tailwind CSS MDX Netlify

What it is#

ASSOJ (Associação para o Empoderamento Juvenil) is a Mozambican non-profit, founded in 2020 and based in Matola. It trains young people in entrepreneurship and innovation, runs a business incubator, and puts on programmes for job readiness and life skills.

I built and deployed their website. For free, deliberately.

Why I did it for nothing#

I get asked this, so let me answer it properly rather than sound like someone who cannot say no.

It is the same ecosystem I work in. My day job is building platforms for a national digital innovation programme: incubation, capacity building, connecting young people to opportunity. ASSOJ does that work from the non-profit side, in the same city, for the same demographic. Contributing to it is not charity, it is participation in a field I am already part of. The organisation’s partner list overlaps with people I work with anyway.

The money was better spent elsewhere. An NGO with a training budget should not be spending it on a brochure site. That is not a moral point, it is an allocation point: their constraint is programme funding, and a website is the cheapest thing on their list to solve if someone competent does it.

It gave me something I actually wanted, which is a delivery I fully own from end to end, with no committee and no legacy stack. I chose the tools, the hosting and the architecture. That is worth real money to me as a reference project, and it is why calling this purely altruistic would be dishonest.

NOTE

I am wary of unpaid work as a habit, because it sets a bad precedent and quietly says your time has no value. The version I am comfortable with is narrow: a cause I would support anyway, a scope I set myself, and something I get back that is not money.

The brief I set myself: zero running cost#

The interesting constraint was not the design, it was the running cost.

A site handed to an organisation that cannot maintain it becomes a liability in about eighteen months: a bill nobody remembers approving, a platform nobody has the password for, and eventually an expired domain and a dead link on every business card.

So the target was that the only recurring expense should be the domain itself:

  • A static build. Astro compiles to plain HTML, so there is no server, no database, and no runtime to patch. React handles the interactive pieces and MDX makes the content writable.
  • A free host. Static hosting at this traffic level costs nothing, permanently, from several providers.
  • No content management system. Adding a CMS would have meant either a paid service or a server to maintain. For an organisation that updates its site a handful of times a year, MDX files are the right answer and the honest one.

The failure mode I was designing against is a website that dies quietly of neglect, which is how most small-organisation websites actually end.

Delivery, not just code#

The part that mattered most to them was not the site. It was:

  • Domain registration and DNS. Including the unglamorous detail that I could only pay for one year rather than two, because my card expires before then. Worth writing down somewhere they can find it, since a lapsed domain is the single most likely way this breaks.
  • Email on the domain. Configured and, crucially, wired into the managers’ own existing inboxes, so they can send and receive without learning a new tool. An address that nobody checks is worse than no address.
  • Replacing the holding page. There was a hand-written coming-soon page before this. Getting off it was the actual request.

If I had handed over a repository and stopped, they would have had a folder of files. The deliverable was a working address with working email.

What I would do differently#

Write the handover down. Domain renewal date, who owns the account, where the DNS lives, how to add a blog post. Right now a meaningful amount of that knowledge is in my head, which is exactly the fragility I was designing against everywhere else.

Decide the content plan before building the blog. The site supports a blog because blogs are good for a programme-driven organisation. Whether anyone would write in it was a question I should have asked first.

Status#

Live at assoj.org. Astro with React, Tailwind and MDX, on static hosting.