Начать надо с документации. Затем поработать хорошо над архитектурой.
Опиши вначале все сущности / объекты, опиши их структуру. Нарисуй связи между ними.
В какую бд это положить - вопрос последний.
После этого начни описывать flow запроса - когда и что будет вызываться, как ты будешь расширять функциональность.
Когда сделаешь эту «неприятную» работу, сам поймёшь как и что нужно писать (и в какой последовательности).
Чем больше времени потратишь на этот этап и сделаешь его подробнее и лучше подработаешь, тем больше сэкономишь в итоге.