Our products
Prompzy. Designed, engineered and operated by Vervain Tech.
Prompzy is a Vervain Tech Ltd product, taken in-house from concept to public release on Google Play and the App Store. It is a live, multi-platform marketplace with real-time scheduling, card payments and merchant payouts, and it demonstrates the standard of engineering we bring to every client engagement.
Prompzy
Book appointments and shop local, anywhere in the world.
The problem
Independent businesses still take bookings by phone and message, and sell only to passing trade. Customers ring round for availability, wait for replies, and have no reliable way to discover, trust or pay small sellers beyond their own street. Booking and shopping live in separate apps, and the tooling that large retailers take for granted is out of reach for a barbershop, a clinic or a corner shop.
The solution
Prompzy brings services and products into one marketplace. Customers book any professional against live availability, reschedule or cancel in a tap, and shop real businesses near them or worldwide with secure card payment, collection or delivery, order tracking, deals and loyalty rewards. Businesses get a complete storefront: services, products and inventory, staff and schedules, bookings, payments, deals and transparent payout tracking.
Why it matters to clients
Prompzy is a production system, not a demo. It proves that we can take a product from discovery and design through multi-platform engineering, payments integration, store compliance, release automation and live operations. The same team, practices and platform choices are available for your project.
Sectors served
Two shop types, service-based and product-based, cover the full spectrum of local commerce.
Personal care and wellbeing
Barbers, hair and beauty salons, nail and grooming studios, massage, fitness trainers and gyms.
Health and clinical
Dentists, clinics, physiotherapists, pharmacies, vets and pet groomers.
Trades, repair and automotive
Mechanics, electricians, plumbers, gas and lift engineers, phone, computer and appliance repair.
Professional and creative services
Tutors, photographers, tailors, cleaners, caterers and event professionals.
Food and grocery retail
Mini marts, supermarkets, grocers, butchers, bakeries, farm shops, farmers and producers.
General and specialist retail
Electronics and phone shops, clothing and modest-fashion boutiques, hardware, florists, bookshops, beauty suppliers.
Independent sellers
Sole traders and micro-businesses selling to a local or global audience without their own e-commerce stack.
Multi-site and staffed businesses
Team and enterprise plans with per-provider calendars, delegated collection and staff payment routing.
Architecture and design patterns
The engineering practices that keep Prompzy maintainable at scale, and that we apply to client systems.
Clean, multi-module architecture
Presentation, application, domain and data layers in separate Gradle modules with shared business logic across Android, iOS and Web. Feature modules own their screens and contracts; platform code is limited to thin adapters.
MVI with unidirectional data flow
Every screen has an explicit State, Intent and Effect contract. ViewModels reduce intents to immutable state, side effects are typed, and Compose renders from a single state object, which makes behaviour predictable and fully testable.
Offline-first, write-through caching
Reads come from a local Room database first, with delta sync against the backend using last-updated timestamps. Every mutation writes through the cache before reporting success, so the app stays fast and consistent on poor connections.
Repository and data-source pattern
Remote and local data sources sit behind repository interfaces injected with Koin. Platform-specific SDK failures are translated at the boundary into a typed domain error vocabulary, with no catch-all exception handling in business logic.
Denormalised, scalable data model
Firestore documents are shaped for the queries the app makes. Server-side fan-out keeps denormalised copies consistent, composite indexes are versioned with the schema, and a cross-repo schema contract keeps client and backend aligned.
Documented decisions
Architecture Decision Records cover offline caching, Stripe separate charges and transfers, and notification orchestration. Runbooks, go-live checklists and per-feature smoke-test documents accompany every release.
Testing strategy
Quality is enforced as a policy, not left to chance. A feature is not done until its tests pass.
Unit tests
Every ViewModel, mapper, use case and pure function has unit tests targeting 100% line and branch coverage, including empty, null, error and concurrency edge cases. Coroutine flows are asserted with Turbine; dependencies are mocked with Mokkery.
Integration tests
Repository, cache and sync paths are tested end to end against in-memory databases and backend emulators, covering delta sync, write-through invariants and cross-user data isolation.
Instrumented UI tests
Every UI surface has Compose UI tests on real Android devices and emulators with mandatory full coverage of its states, plus Espresso where platform views are involved.
Smoke and contract tests
Each feature that crosses the backend boundary ships with a smoke-test document defining its input and output contract, executed against the test environment before release.
Adaptive and accessibility checks
Screens are verified across phone, tablet, foldable flip and book postures, in portrait and landscape, in light and dark themes, and in right-to-left languages.
Continuous integration
Lint, static analysis, unit and instrumented tests run in GitHub Actions and Bitbucket Pipelines on every change. Fastlane builds signed releases and uploads them to both stores, with Crashlytics monitoring in production.
Architecture and technology
Every item below is in production in Prompzy today. This is the platform expertise available to our clients.
Client platforms
- Kotlin Multiplatform
- Compose Multiplatform
- Android
- iOS with Swift interop
- Web via Kotlin/Wasm
- Desktop (JVM)
UI and design system
- Material 3 Expressive
- Adaptive layouts and window size classes
- Navigation 3
- Foldable and large-screen postures
- Localisation, 7+ languages, RTL
- Accessibility
Application architecture
- Clean architecture, multi-module
- Koin dependency injection
- Coroutines and Flow
- Ktor networking
- kotlinx.serialization
- Room and SQLite offline cache
- Encrypted preferences
Backend and data
- Firebase Authentication
- Cloud Firestore with security rules
- Cloud Functions in TypeScript
- Cloud Storage
- Supabase
- Cloud Messaging push
- Google Maps Platform geocoding and distance
Payments and commerce
- Stripe Payments
- Stripe Connect payouts
- Subscriptions and tiered plans
- Refunds and split settlement
- ML Kit QR scan-to-collect
- Deals and loyalty engine
Quality, security and delivery
- Unit, integration and instrumented tests
- Crashlytics monitoring
- App Check and biometric sign-in
- Fastlane release automation
- GitHub Actions and Bitbucket Pipelines
- Store listing and compliance kits