ADORSYS-GIS / ADORSYS-GIS/converse-frontends
[Epic]: Retire the Expo app and re-point delivery
- Linguagem predominante
- TypeScript
- Estrelas
- 0
- Forks
- 0
- Merge médio
- 1h 49min
- PRs com merge (30d)
- 253
Descrição
## Executive Summary
We want to complete the ADR 0009-scheduled retirement of `apps/self-service` because the Next.js
console has reached parity and the Expo app is now pure drift: two design systems, two codec paths,
and RN-only tooling maintained for a surface nobody ships. This epic exists to solve the fact that
the repo currently ships **nothing at all** — automatic image builds were already disabled in #258
as a stopgap, and delivery needs to be re-pointed at the console before that stopgap becomes the
permanent state by default.
## Strategic Intent
The intent of this epic is to finish the ADR 0009 cutover: delete the retired Expo surface
(`apps/self-service`, `packages/ui`) and the client code that only existed to serve it, then
re-point the release pipeline — Helm chart, image workflow, Storybook publishing — at
`apps/console` so the repo produces a real, deployable artifact again.
## Problem Statement
- Automatic image builds have been off since #258; the repo has shipped no image since. That was a
deliberate stopgap, not a destination.
- Two parallel design systems exist (`packages/ui` for Expo, `packages/ui-web` for the console);
`packages/chart-core` has already been extracted out of the Expo path, so nothing new depends on
`packages/ui`.
- `packages/hooks` still carries an Expo-era client-side auth/query layer that the console does not
use — the console does auth server-side.
- `charts/converse-frontend` and `docker-image.yml` still target the Expo build, not
`apps/console`.
- `storybook-pages.yml` is hardcoded to `packages/ui/**`, so `packages/ui-web` — the package the
console actually uses — has never once published its Storybook.
- Net effect: engineering time is split maintaining two UI stacks and two delivery paths, one of
which (Expo) is already dead weight per ADR 0009, and the live path (console) has no working
release pipeline of its own.
## Desired Outcome
`apps/self-service` and `packages/ui` no longer exist in the repo; `packages/hooks` contains only
code with live importers; `charts/converse-frontend` and the image workflow build and publish
`apps/console`; `packages/ui-web`'s Storybook publishes via `storybook-pages.yml`. The repo builds,
tests, and ships from a single UI stack.
## Scope (In / Out)
### In Scope
- Deleting `apps/self-service`, `packages/ui`, the nginx/`envsubst` runtime-config chain, and the
`EXPO_PUBLIC_*` env surface.
- Pruning `packages/hooks` of the superseded auth/query layer that only the Expo app consumed.
- Re-enabling `docker-image.yml` against `apps/console` and updating `charts/converse-frontend` to
match.
- Widening `storybook-pages.yml`'s path filter so `packages/ui-web` publishes.
### Out of Scope
- Any new console feature work (tracked separately under Epics 1–4).
- Backend/cratestack changes (tracked under Epic 6).
- The operational decision of *when* to cut a production release — this epic makes the pipeline
capable of publishing a console image; it does not itself schedule a rollout.
## Source of truth (links)
- ADR 0009, Decision 1 and Follow-up 7: https://github.com/ADORSYS-GIS/converse-frontends/blob/main/docs/adr/0009-nextjs-console-replacement.md
- #258 (image builds disabled as a stopgap): https://github.com/ADORSYS-GIS/converse-frontends/pull/258
## Stakeholders
- Product Owner / Technical Lead / Delivery Owner: @stephane-segning
- Engineering Team: converse-frontends console workstream
## Key Assumptions
- `packages/chart-core` is confirmed already extracted from the Expo path, so deleting
`packages/ui`/`apps/self-service` strands nothing — needs re-confirmation at delete time via a
workspace-reference grep, not assumed from this document alone.
- No external consumer (mobile app store listing, partner integration) still depends on the Expo
app being live; #258 already disabled its builds without incident, which is treated as evidence
for this but should be confirmed with the delivery owner before the final deletion PR merges.
## Constraints
- Must not break `apps/console` or any package it depends on — verified by a full green build/test
run after each deletion/pruning step, not by inspection alone.
- No dangling workspace references (`pnpm-workspace.yaml`, `package.json` workspaces, imports) may
remain after `apps/self-service`/`packages/ui` are removed.
## Risks
| Risk | Probability | Impact | Mitigation |
| --- | --- | --- | --- |
| A live import into `packages/ui` or the `packages/hooks` auth/query layer is missed | Medium | High (broken build) | `pnpm build` + full workspace grep before merge |
| Deleting the nginx/`envsubst` chain removes a config path something else quietly depends on | Low | Medium | Grep for `EXPO_PUBLIC_*` and `envsubst` usage repo-wide before deletion |
| Re-pointing `docker-image.yml`/Helm chart at the console ships a broken image to the GitOps chain | Medium | High | Deliberate manual-triggered first release, verified against the ai-helm ArgoCD app before automatic builds are re-enabled |
## Success metrics
| Metric | Current | Target | Source |
| ------ | ------- | ------ | ------ |
| `apps/self-service` present in repo | Yes | No | `git ls-files apps/self-service` |
| `packages/ui` present in repo | Yes | No | `git ls-files packages/ui` |
| `packages/hooks` files with zero importers | >0 | 0 | workspace-wide import grep |
| `docker-image.yml` build target | Expo app, `workflow_dispatch` only | `apps/console`, deliberate trigger | `.github/workflows/docker-image.yml` |
| `storybook-pages.yml` covers `packages/ui-web` | No | Yes | `.github/workflows/storybook-pages.yml` |
## Child User Stories
- Story 5.1 — Delete the Expo surface
- Story 5.2 — Re-point delivery at the console
Each child story carries its own acceptance criteria and verification evidence; this epic tracks
their roll-up. Estimation model: points are XS=1, S=2, M=3, L=5, XL=8, one point ≈ half a dev-day
for an advanced engineer including tests, the governance PR, and review turnaround. Team is 4
advanced + 2 senior = 6 delivery engineers (scrum master carries no delivery points); at 70% focus
a 2-week sprint ≈ 48 points. Epic points are the sum of ticket points: **12**.
## Human accountable owner
@stephane-segning
## AI Usage Declaration
- Ticket decomposition
## Human verification completed
- [ ] Intent checked against source of truth
- [ ] Scope reviewed by Product Owner
- [ ] Technical feasibility reviewed by Technical Lead
- [ ] Risks reviewed
- [ ] Acceptance criteria reviewed
- [ ] No unverified AI claim remains
- [ ] I am the accountable owner and accept responsibility for this epic.
Guia de contribuição
Avaliação
Esta issue ainda não foi avaliada.