Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
52 lines
877 B
Markdown
52 lines
877 B
Markdown
# Codebase Structure
|
|
|
|
> The code structure inspired by https://github.com/Netflix/dispatch.
|
|
|
|
Very good structure on how to make a scalable codebase is also in [this repo](https://github.com/zhanymkanov/fastapi-best-practices).
|
|
|
|
Just a brief document about how we should structure our backend codebase.
|
|
|
|
## Code Structure
|
|
|
|
```markdown
|
|
src/
|
|
/<service name>/
|
|
models.py
|
|
services.py
|
|
prompts.py
|
|
views.py
|
|
utils.py
|
|
routers.py
|
|
|
|
/_<subservice name>/
|
|
```
|
|
|
|
### Service.py
|
|
|
|
Always a single file, except if it becomes too long - more than ~500 lines, split it into \_subservices
|
|
|
|
### Views.py
|
|
|
|
Always split the views into two parts
|
|
|
|
```python
|
|
# All
|
|
...
|
|
|
|
# Requests
|
|
...
|
|
|
|
# Responses
|
|
...
|
|
```
|
|
|
|
If too long → split into multiple files
|
|
|
|
### Prompts.py
|
|
|
|
Single file; if too long → split into multiple files (one prompt per file or so)
|
|
|
|
### Routers.py
|
|
|
|
Never split into more than one file
|