Probablemente obtenga tantas vistas diferentes como habrá respuestas. Pero aquí está mi perspectiva.
Para empezar, más de 5000 líneas de código es un proyecto muy muy pequeño. Ahora, ¿cómo haces para diseñar proyectos que crecen? En primer lugar, diseñas tu sistema y no un código. El código es realmente secundario a la arquitectura. Comience apoyando los requisitos mínimos actuales. Ponga un dibujo simplista de los componentes involucrados. Personalmente me gusta UML, pero cualquier cosa visual será buena. Idealmente, desea adherirse a las buenas prácticas de diseño aquí (interfaces, separación de preocupaciones, etc.).
Una vez que admita requisitos mínimos en su diseño, codifíquelo. Nuevamente, intente adherirse a las buenas prácticas de codificación.
Después de eso, agregue iterativamente más funcionalidad a medida que surjan nuevos requisitos. Idealmente, también desea actualizar su diseño.
Lo importante, según mi experiencia, es no diseñar su sistema en anticipación de requisitos no existentes. De lo contrario, su proyecto crecerá muy rápidamente y se volverá muy complejo en poco tiempo. Nuevamente, adhiérase a las buenas prácticas y comience con los requisitos actuales concretos.