So, you convinced a client and bagged a project. You're really excited about this project and ready to dive into code.
But wait, Hold your horses. Diving directly into code is not a good idea especially when you are new.
A project proposal is very important before beginning the coding.
Why? Because it documents the deliverables, basic functionalities, estimated time, estimated cost and a description of the project.
Any Problem here? Yes, before specifying the deliverables, you must make sure you have the skills and tools to deliver those. We all learn continuously, but you should not promise something which you have never done before. Basic functionalities are tricky, some functionalities require much more effort than others. Try to keep them as level as you can. The most tricky part is estimation of cost and time. For this part, you need prior experience of something similar. Only then you could predict closely.
You have to divide the project in multiple parts, where each part is independent as much as possible. Do this recursively to each part until you get file level granularity.
Why? Because without such vision, your project would most likely fail to finish on time.
Any Problems Here? Yes, You would surely miss something (probably many things). Still, some vision is better than no vision. With such vision, future increments will be easier.
Whether you like GitHub, GitLab, Azure DevOps or some other service, but you should use source control. Always maintain a main/master branch where your code is properly tested and working. Do all other enhancement in another branch and merge on successful testing.
Why? If your code breaks on some change and you forgot the change, you will have something to fallback and start again.
Any Problem Here? Most of new developers find it to be unnecessary overhead. But if you really do it, it will help you out.
Adding issues, assigning yourselves, working on them and closing them. This would look like waste of time at first. But this helps in the development a lot.
How? By tracking issues and continuously adding them, you can estimate the time and effort required in the project. Your knowledge about the timeline grows and you will be better equipped when the next project comes.
Any Problems Here? Keep the issues as unit as possible. Big features should be milestones and issues are the stepping stones to reach there.
Solo development is difficult, you will loose the motivation sometimes, especially when you see no sign of progress. Hence, follow these tips to see the progress and the vision as well.