In my case, when I start a project there are a few steps
- Write down the idea, purpose and reason (essentially why you want to make it)
- Develop some designs, UI, visualise it
- Use a suitable project template, that’s decoupled (meaning stuff like frontend & backend are subjprojects, see pnpm's workspaces if you want to do a mono repo)
- Using that idea, do some spiking, in a short time, research and explore
Usually after step 4, I start developing the proper solution - after finding the right ground, the right solution, I expand on it, and build what the projects potential can be.
When referring to step 3, I have a template project for a frontend and backend. Whereby all components of each are decoupled. Meaning, I can remove or add anything I want to use it as I please. Such as my backend is a Haskell project, where I am using individual libraries that I can remove or add. E.g Servant, PostgresSQL,