The problem
A maintenance request passes through many hands: a tenant reports damage, someone assesses it, a contractor gets assigned, the work gets checked. Each step has its own screen, states and edge cases, and it all has to work on a desktop in the office and on a phone on site.
What I did
- Built new functionality for registering, managing and processing maintenance workflows in Angular and TypeScript, with RxJS for the state that changes while you look at it.
- Worked on the web and mobile apps from one codebase, using Ionic and Capacitor for the native builds.
- Turned functional requirements and UX designs into components the rest of the team could reuse.
- Reviewed code with a focus on consistency and maintainability, and helped decide on the technical architecture.
- Found and reduced technical debt as part of normal sprint work, not as a separate project.
End-to-end tests with Playwright and MCP
Workflows with many steps are exactly where regressions hide, and exactly where writing E2E tests by hand is slow. I set up automated end-to-end tests with Playwright and used the Playwright MCP server, so an AI assistant could drive a real browser through the app while I wrote and refined the tests.
The result was broader test coverage of the workflows and a faster feedback loop: a change that broke a step showed up in the pipeline instead of in a user report.
What I take along
Shared code between web and mobile only pays off if the components are designed for both from the start. Retrofitting a desktop screen for a phone is always more work than building it responsive in the first place.