Start with a useful outcome
Decide what a visitor should be able to do, which data the application needs and which external services it depends on. A static website, an API and a background task have different requirements. Describe them separately even when they share one repository.
Keep responsibilities visible
Treat source code, runtime settings and stored data as separate concerns. Code belongs in version control. Configuration describes the environment. Persistent data needs a backup and recovery process. This separation makes it easier to change one component without rebuilding every other component.
Make the next step repeatable
Record the build command, the expected output and the checks that show a release works. Another maintainer should be able to follow the same steps. Keep the last working release and a practical way to return to it. The guides here cover these fundamentals from first project to API access.