Anda mungkin mendapatkan banyak pandangan berbeda karena akan ada jawaban. Tapi ini perspektif saya.
Sebagai permulaan, 5000+ baris kode adalah proyek yang sangat kecil. Sekarang, bagaimana Anda merancang proyek yang tumbuh. Pertama, Anda merancang sistem Anda dan bukan kode. Kode sebenarnya sekunder untuk arsitektur. Mulailah dengan mendukung persyaratan minimum saat ini. Masukkan beberapa gambar sederhana dari komponen yang terlibat. Saya pribadi suka UML, tetapi visual apa pun akan bagus. Idealnya, Anda ingin mematuhi praktik desain yang baik di sini (antarmuka, pemisahan masalah, dll).
Setelah Anda mendukung persyaratan minimal dalam desain Anda, buat kode. Sekali lagi, cobalah untuk mematuhi praktik pengkodean yang baik.
Setelah itu, secara iteratif tambahkan lebih banyak fungsionalitas saat persyaratan baru muncul. Idealnya Anda ingin memperbarui desain Anda juga.
Yang penting, berdasarkan pengalaman saya, bukan mendesain sistem Anda untuk mengantisipasi kebutuhan yang tidak ada. Kalau tidak, proyek Anda akan tumbuh sangat cepat dan akan menjadi sangat kompleks dalam waktu singkat. Sekali lagi - patuhi praktik yang baik dan mulai dengan persyaratan saat ini yang konkret.