You're right, it's not just a technical issue. I'm outlining a general roadmap below; please remember to consult the legislation and your advisor for your specific situation.
The first step is an inventory. What personal data are you processing, for what purpose, based on which legal ground; where is it stored, who has access, how long is it kept, and who is it shared with. No step taken without this table will be sound.
The second step is purpose limitation and data minimization. The most common mistake I see in software projects is collecting more fields than necessary "just in case." Data not collected is data that doesn't need protecting. Every field in the form must have a justification.
The third step is disclosure and explicit consent if required. When and how these are obtained is part of the interface; it's not a checkbox added later. That's why you need to talk to the developer early on.
The fourth step is retention and destruction. How long data is kept and what happens after that period must be written down and reflected in the software. A destruction policy remains on paper in a system without a delete function.
The fifth step is data subject requests. When someone asks for their data or requests deletion, it must be defined who handles it, within what timeframe, and through which channel. Specify in the requirements whether the software supports this.
Finally, data processing clauses should be added to the contract you sign with your developer; if your supplier has access to the data, the framework of this relationship must be in writing.