Custom software
Applications shaped around a specific operational model rather than a generic product template.
01 — Engineering practice
VEWAI LTD designs and builds custom software, web platforms, cloud infrastructure and automation for organisations whose processes have outgrown off-the-shelf tools.
vewaigroup.com

VEWAI LTD works with organisations that need software written for their own process rather than adapted to somebody else's.
The work spans the whole path from a described problem to a running system: understanding how something currently works, deciding what should be automated and what should stay a human decision, designing the data and the interfaces around it, and then building, testing and maintaining the result.
The positioning on this site describes the capabilities the company offers. It is not a record of past engagements, and nothing here should be read as a performance claim.
Applications shaped around a specific operational model rather than a generic product template.
Browser-based systems with durable data models, predictable state and maintainable front-end code.
Environments, deployment paths and infrastructure definitions that stay legible as systems grow.
Connections between internal tools and third-party services, with explicit contracts and error handling.
Repetitive, rule-based work moved into software so that people handle exceptions instead of routine.
Screens organised around the decisions users actually make, tested against real task flows.
Custom development is worthwhile when a process is specific enough that configuring a general product costs more than building the thing itself.
The starting point is the domain: the entities involved, the states they move through, the rules that govern those transitions and the people responsible at each step. Once that model is explicit, the software becomes a direct expression of it instead of a layer of workarounds.

A web application is easy to start and hard to keep coherent. The difficulty is rarely the first release; it is the twentieth change after it.
Work on web platforms concentrates on the parts that decide long-term cost: a clear separation between data access, business rules and presentation; state that is predictable rather than incidental; and rendering choices made deliberately with performance and indexing in mind.
Interfaces are built responsively from the smallest useful viewport upward, with semantic markup, keyboard operability and sufficient contrast treated as part of the specification rather than a later correction.
Structure
Predictable routing, clear module boundaries, typed interfaces.
Performance
Considered rendering, measured payloads, images sized for their slots.
Accessibility
Semantic HTML, contrast, reduced-motion support, keyboard paths.

Cloud work is judged by how quickly someone new can understand what runs where, and how safely it can be changed.
That means environments defined in code, deployment paths that are the same for everyone, secrets handled through managed mechanisms rather than shared files, and observability sufficient to answer questions about a live system without guesswork.
Scaling decisions follow measured behaviour. Architecture is kept only as distributed as the problem genuinely requires.
A
Document how the work happens today, including the informal steps and the exceptions people handle manually.
B
Automate the deterministic parts. Route the ambiguous parts to a person with the context needed to decide.
C
Integrations get defined contracts, validation, retries, idempotency and visible failure states instead of silent drops.
Interface design begins with the sequence of decisions a person makes inside a task. Screens are then arranged so that the information required for each decision is present at the moment it is needed, and nothing else competes for attention.
A consistent type scale, spacing system and component vocabulary keeps a growing product coherent, and makes new screens cheap to add without a redesign.
Task flows documented before layouts are drawn.
A shared design system rather than per-screen styling.
Empty, loading and error states specified, not improvised.
Contrast, focus order and motion preferences respected.
Understand the current process, the systems in place and the constraints that cannot move.
Agree the scope, the data model, the success criteria and the order of delivery in writing.
Produce the architecture and interface structure, and validate them against real task flows.
Develop in reviewable increments, each one deployable and verifiable on its own.
Test automatically where it pays off and manually where human judgement is required.
Deliver documentation, environment definitions and the knowledge needed to operate the system.
Testing is treated as a design activity: code that is difficult to test is usually code with unclear responsibilities.
Automated coverage concentrates on business rules and integration boundaries, where regressions are expensive and easy to miss. Manual verification covers the flows people rely on daily. Reviews look at naming, boundaries and failure behaviour, not only correctness.
Environments are reproducible so that a defect can be observed before it is fixed, and the fix can be demonstrated rather than asserted.
Decisions are recorded in writing so they survive staff changes and long gaps. Progress is reported in terms of what now works, not in percentages. Risks are raised while they are still cheap to address.
Trade-offs are presented with their consequences so that the client can make an informed choice rather than approve a recommendation blindly.

Project enquiries are handled by email. A short description of the problem, the systems currently in use and any fixed constraints is enough to begin.