Well, this is all empirical but the main thing I take into account is Time. Like, if there is any new tech I need to learn, usually it's added into how much time I would spend building the app itself. Then I dig into the complexity of the app. I accumulate these in points and put into a scale of my hourly rate. For example, the highest I charged anyone for a very difficult project is 150/hr which I rate at a 10, the lowest for a simple project is 85/hr.
I add the factors together and see where it rates out of 10 then make the final price per hour.
I like being straight forward, so I use Trello for task management, Github for version control & Slack for communication between me & the client.
Hope this helps!!!