Once those basics are setup it's a matter of attracting users. First and foremost your software needs to solve a problem that people are encountering. Once there's a reason to use the project, then there need to be incentives to assist in the development. Tell users clearly how they can help and provide some issues in the style of first-timers-only issues. There's going to be a good number of drive by contributions, but if they're handled correctly some of them can turn into repeat contributions. In that vein, issues/PRs/etc need to have prompt responses to keep people interested, they need to point out resources, and otherwise convince the community members they're being heard. Overall growing and cultivating a community is a ton of work.
For context I've been maintaining a fairly popular open source synthesizer project for over a decade. Feel free to ask more specific questions and I should be able to point out some ideas.
Documentation is always important, and what I am working on for my own project exclusively right now.