ELA — Poland's graduate outcomes portal
One codebase, three platforms, a recurring budget line removed.
- 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
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
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.
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.
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.
Proposed and built a cross-platform mobile strategy using CapacitorJS, wrapping the existing Angular application into native shells and publishing to both stores.
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.