Você provavelmente terá tantas opiniões diferentes quanto respostas. Mas aqui está a minha perspectiva.
Para iniciantes, mais de 5000 linhas de código são um projeto muito pequeno. Agora, como você desenvolve projetos que crescem? Primeiro, você projeta seu sistema e não um código. O código é na verdade secundário à arquitetura. Comece apoiando os requisitos atuais mínimos. Coloque um desenho simplista dos componentes envolvidos. Eu pessoalmente gosto da UML, mas qualquer coisa visual será boa. Idealmente, você deseja aderir às boas práticas de design aqui (interfaces, separação de preocupações etc.).
Depois de oferecer suporte a requisitos mínimos em seu design, codifique-o. Novamente, tente aderir às boas práticas de codificação.
Depois disso, adicione iterativamente mais funcionalidades à medida que novos requisitos surgem. Idealmente, você deseja atualizar seu design também.
O que é importante, com base na minha experiência, não é projetar seu sistema antecipando requisitos inexistentes. Caso contrário, seu projeto crescerá muito rapidamente e ficará muito complexo em pouco tempo. Novamente - aderir às boas práticas e começa com requisitos atuais concretos.