Back

AWCSA System

Addis Ababa Women, Children and Social Affairs Bureau — a full-stack government management platform digitizing 48+ services across 9+ directorates.

System Entry Point
Admin Analytics Dashboard
Service Catalog

Overview

AWCSA digitizes and streamlines the full spectrum of social welfare operations for the Addis Ababa City Administration. The platform serves multiple stakeholder types — government employees, applicants, and care center facilities — through a unified, role-aware interface.

The system covers adoption case management (applications, child registration, matching, home visits, reviews), child welfare tracking across care facilities, women's empowerment programs and association management, Edir (Iddir) association registration and member management, disability and elderly services, complaint handling and resolution, and a bilingual content management system for public-facing information.

Built with a NestJS backend and Next.js 15 frontend, the platform handles complex workflows including multi-step approvals, automatic audit trails, role-based access control with 5 levels of authorization, and full English/Amharic bilingual support.

Technology Stack

Backend

  • NestJS
  • TypeScript
  • Prisma ORM
  • PostgreSQL
  • Zod
  • Passport (JWT)
  • Argon2

Frontend

  • Next.js 15
  • React 19
  • Radix UI
  • TanStack Query
  • React Table
  • next-intl i18n
  • Tailwind CSS 4

Infrastructure

  • Docker (multi-stage)
  • GitHub Actions CI/CD
  • Fly.io / Render
  • PostgreSQL 15

Contributions

Architected the entire backend API — 16 NestJS modules, ~35 controllers, ~40+ services

Designed the 18-model Prisma schema with 28 enums covering the full social welfare domain

Built an adoption lifecycle state machine with 9 child-statuses and multi-step approval workflows

Implemented a bilingual content management system (Amharic/English) with JSON-field storage

Created automatic audit logging via Prisma middleware with deep-object-diff change tracking

Engineered granular RBAC with 5 guard levels (JWT, Roles, Permissions, Deputy Bureau, Public)

Set up Docker multi-stage builds + GitHub Actions CI/CD for production deployment

Designed recursive organizational hierarchy: Bureau → 10 Sub-Cities → 120+ Woredas

Engineering Challenges

Adoption Lifecycle State Machine

9 distinct child statuses (adopted, in-adera, in-care, found-child, returned, with-blood-relative, etc.), each with dedicated business logic, validations, and state transitions. Required 9 specialized services to handle each status independently.

Automatic Audit Logging via Middleware

A Prisma middleware layer intercepts all create/update/delete operations and logs changes to an AuditLog table. Uses deep-object-diff to compute only changed fields and fetches old values before updates — all running asynchronously to avoid blocking requests.

Granular RBAC with 5 Guard Levels

4 permission operations (READ, WRITE, DELETE, UPDATE) across any resource, mapped to roles via a RolePermission join table. Implemented 5 guard levels: JWT authentication, Role-based, Permission-based, Deputy Bureau scoping, and Public/Protected routing.

Bilingual Content System (EN/AM)

All public-facing text fields stored as JSON { en: '...', am: '...' }, enabling full English/Amharic bilingual content management through the API with zero additional translation infrastructure.

Architecture

Frontend

Next.js 15 + React 19

Radix UI · TanStack Query · next-intl

Backend

NestJS — 16 Modules

Auth · Adoption · Women · Edir · Disability · CMS · Admin · Dashboard

Database

PostgreSQL 15

18 Models · 28 Enums · 53 Migrations

Infrastructure

Docker (multi-stage) · GitHub Actions · Fly.io / Render

Access

Source Code

Private Repository

Request Walkthrough