Work · Vodafone
Digital Label
Price tag and campaign content for in-store devices
My role
Full-Stack Developer
Status
In production
Client project — source code and internal details are not public.
Overview
Digital Label is the backend and admin panel that feed price tags to the phones and tablets on display in stores: device models and variants, installment plans, campaigns, gifts and lock-screen content. I built the first version end to end with Next.js and TypeScript, then migrated the backend to Java 21 / Spring Boot 3 with a teammate.
The problem
Price and campaign information on in-store devices has to stay consistent across regions and stores, with approvals and an audit trail.
Key features
- Catalog of categories, brands, models, variants, devices and installment plans
- Approval workflows for variants and installments; price-change log
- Campaigns, gifts, lock-screen and transition-screen management
- Region, directorate and store hierarchy
- Device endpoints for registration, heartbeat, version checks and logs, feeding an online/offline report
- Excel import with preview and approve/reject, plus export
- LDAP sign-in with role and permission management
Architecture
- First version: Next.js API routes with TypeORM on PostgreSQL and a Next.js admin panel
- Second version: Java 21 / Spring Boot 3 split into an admin API and a mobile API
- JWT and LDAP authentication; S3-compatible storage behind a CDN
- Docker images deployed through a CI/CD pipeline
Technical challenges
- Rewriting the backend in Java while keeping the response format the in-store devices expect
- Meeting an 80% unit-test coverage requirement on the new backend
Tech stack
TypeScriptNext.jsReactTypeORMPostgreSQLLDAPJWTAWS S3Redux ToolkitTailwind CSSJava 21Spring Boot 3Docker