Probabilmente ottieni tante visualizzazioni diverse quante saranno le risposte. Ma ecco la mia prospettiva.
Per cominciare, oltre 5000 linee di codice sono progetti molto piccoli. Ora, come procedi nel progettare progetti che crescono. In primo luogo, progetta il tuo sistema e non un codice. Il codice è in realtà secondario rispetto all'architettura. Inizia con il supporto dei requisiti minimi correnti. Metti un disegno semplicistico dei componenti coinvolti. Personalmente mi piace UML, ma qualsiasi cosa visiva sarà buona. Idealmente, si desidera aderire alle buone pratiche di progettazione qui (interfacce, separazione delle preoccupazioni ecc.)
Una volta supportati i requisiti minimi nella progettazione, codificalo. Di nuovo, cerca di aderire alle buone pratiche di codifica.
Dopodiché, aggiungerai iterativamente più funzionalità man mano che sorgono nuovi requisiti. Idealmente, vuoi aggiornare anche il tuo design.
Ciò che è importante, in base alla mia esperienza, non è progettare il sistema in previsione di requisiti non esistenti. Altrimenti il tuo progetto crescerà molto rapidamente e diventerà molto complesso in breve tempo. Ancora una volta: aderire alle buone pratiche e iniziare con requisiti attuali concreti.