Cara, primeiro é importante mostrar o projeto, bom ou ruim é bom ele ver a luz do dia, tanto que pode aparecer ocasionalmente alguém interessado em te ajudar.
Como eu lido com o perfeccionismo? Tenho um mantra que aprendi com o lendário Henrique Bastos.
- Primeiro faz funcionar
- Segundo faz direito
- Terceiro se precisar faz ficar mais rápido
Acredito que isso vai resolver seus problemas, tu vai fazer funcionar vai ficar tudo de uma forma que tu não vai gostar, mas depois tu vai melhorando e código é algo vivo conforme for andando tua opinião pode mudar.
Vou dar um exemplo, tenho um e-commerce open source está a 3 anos e ainda não conseguimos entrar em alpha:
https://github.com/jonatasoli/capi-cart
Eu fiz ele sendo uma MVP e prova de conceito de um framework novo, ai na época eu queria testar trabalhar com entidades auto contidas junto com o famoso padrão "clean code". Na época eu achei interessante criar uma abstração com interfaces e métodos abstratos em python, com os anos eu vi que esse padrão é muito ruim na minha visão, trabalhar direto com injeção de dependências e funções de primeira ordem é muito mais fácil de manter.
Então devagar eu vou melhorando, como o sistema é usado não da pra fazer grandes refactors, mas, vou ajustando e essa é minha vida de desenvolvedor de software.
Acho que no final o mais importante é teu projeto ser visto e até usado, caso ele não seja a obra prima de engenharia de uma olhada nas libs populares da linguagem que você mais gosta, você vai ver sempre algo que não ta 100% bem arquitetado mas, todo mundo usa.