Custom software work covers web applications, SaaS platforms, customer and staff portals, internal tools, admin dashboards, APIs and the databases and integrations underneath them — built around specific roles, records and business rules rather than configured from a template.
The first release should complete one valuable journey end to end for real users, and test whatever assumption would make everything else irrelevant if it were wrong. What cannot be deferred, even in a minimal product, is the machinery that makes it operable: authentication, authorisation, a way to see what users are actually doing, and a route to correct data when something goes wrong. Products rarely fail from missing features; they fail from being built broadly before anyone established that the narrow version was wanted.
The parts that get underestimated are consistent across projects. Error, empty and recovery states, which are treated as polish and are actually most of the interface. Third-party integrations, which fail, rate-limit and change shape, and need timeouts, retries and reconciliation from the first release. Data migrations, which need rehearsal and a rollback path. And accessibility, which is a build-stage requirement rather than an audit performed afterwards.
Ownership should be settled before the first line of code. Repository, environments, credentials and hosting accounts in your organisation's name while the work happens, not transferred at the end. Source delivered with documentation, schema and migration history, deployment steps and known limitations. The practical test is whether a different developer could operate the system from what you were given, and that is worth confirming during the project rather than discovering afterwards.