Skip to content
All case studies
2019 — 2020Angular developer · Frontend lead

ELA — Poland's graduate outcomes portal

One codebase, three platforms, a recurring budget line removed.

Delivered at OPI-PIB
1 → 3
codebase to platforms
2
published mobile apps
public sector
accessibility obligations

Context

Frontend of ELA, the national system that tracks the employment and earnings of Polish graduates, built at OPI-PIB for the Ministry of Science. Alongside the portal itself I proposed and built a cross-platform mobile strategy that reused the same Angular repository instead of funding two native applications.

The product

What it does
Publishes how Polish graduates actually fare in the labour market — earnings and employment from graduation up to five years out, per field of study and per institution.
Who uses it
Prospective students choosing a course, plus researchers and analysts working from the underlying datasets and reports.
Where the data comes from
Social security records (ZUS) matched against the national higher-education system (POL-on).
Who runs it
Built and maintained by OPI-PIB, the state research institute, on behalf of the Ministry of Science and Higher Education.

The problem

The institution needed a highly responsive, accessible public portal built from detailed graphic prototypes — and, separately, a mobile presence. The default answer was commissioning native iOS and Android applications, which meant three codebases and three maintenance contracts for one product.

Architecture

Architecture — simplified
Adobe XDdetailed prototypesOne repositoryAngular · TypeScriptCapacitorJSnative shell, same appWebresponsive · accessibleiOSCapacitorJSAndroidCapacitorJS1 → 3platforms per fixEvery fix lands once and reaches all three targets.

Scroll sideways to see the whole diagram

One Angular repository, three delivery targets. There is no parallel mobile codebase and no platform-specific fork — the same application is wrapped for iOS and Android, so every fix and every feature lands once and reaches all three.

Technical specification

Frontend
Angular, built from Adobe XD prototypes, responsive across the device range a public portal has to serve.
Mobile
CapacitorJS wrapping the same Angular application, published as iOS and Android apps.
Team
Two frontend developers, two UX designers and a tester; I led the frontend implementation.
Accessibility
Built to the accessibility obligations that apply to Polish public-sector services — keyboard navigation, semantics and contrast as acceptance criteria.
Scope
Public portal plus the mobile strategy; the analytical datasets and reports sit behind the same interface.

How I built it

  1. Led the frontend implementation in a team of two frontend developers, working alongside two UX designers and a tester — the prototypes were theirs, making them real, responsive and fast was mine.

  2. Translated complex Adobe XD prototypes into an Angular interface that stayed faithful to the design while remaining genuinely responsive across the range of devices a public portal has to serve.

  3. Treated accessibility as a requirement rather than an audit item — public-sector reach in Poland makes keyboard navigation, semantics and contrast part of the definition of done.

  4. Proposed and built a cross-platform mobile strategy using CapacitorJS, wrapping the existing Angular application into native shells and publishing to both stores.

  5. Kept it as one application rather than a web build plus a mobile fork — there is no second codebase, which is where the recurring saving actually comes from.

Outcome

  • A single codebase serving web, iOS and Android instead of three parallel builds.
  • Removed a recurring annual line from the institution's development and maintenance budget — the exact figure is theirs to disclose, not mine.
  • Two published mobile applications from a repository that was never meant to produce any.
  • An accessible, responsive public portal delivered faithfully from the original design system.

Looking for someone who can own the whole thing?

Full-time role, contract project, or an architecture that needs a second opinion — tell me the shape of it. If I am not the right person I will say so quickly.

Get in touch