Project Layout

This repository provides the layout for a typical Dockerized microservice. Here’s what you’ll find here, and you can browse the source code online here.

root
├── aws-cors.xml             # Policy descriptions for storage
├── aws-s3-policy.json
├── b2-cors.json.json
├── media
│   ├── celeryconfig.py      # celery-worker parameters
│   ├── config.yaml          # application settings
│   ├── constants.py         # global constants
│   ├── main.py              # top-level startup
│   ├── models
│   │   ├── __init__.py      # models for database schema
│   │   ├── api.py           # open-core API models
│   │   ├── base.py          # declarative base
│   │   └── media.py         # open-core media models
│   ├── models               # models for database schema
│   ├── openapi              # OpenAPI 3.0 specifications
│   │   ├── api.yaml         # top-level API spec
│   │   ├── album.schema.yaml  # open-core API model schema
│   │   ├── album.path.yaml    # open-core API routing paths
│   │   └── ...              # add your custom specs here
│   ├── rbac.yaml            # endpoint permissions
│   ├── _version.py          # application version
│   └── controllers          # controller classes
│       ├── __init__.py      # controller initialization
│       ├── album.py
│       ├── auth.py
│       ├── file.py
│       ├── health.py
│       ├── metrics.py
│       ├── picture.py
│       └── storage.py
├── docs                     # documentation directory
├── Dockerfile.media         # container image builder scripts
├── Dockerfile.media-worker
├── entrypoint-worker.sh     # container startup script
├── .github
│   └── PULL_REQUEST_TEMPLATE.md  # template for code submission
├── .gitlab-ci.yml           # CI pipeline definition
├── i18n                     # application language translations
│   ├── messages.pot         # extracted language strings
│   ├── ar                   # arabic message mappings
│   └── de (...)             # german messages (and so on)
├── Makefile                 # administrative utilities
├── .readthedocs.yml         # doc configuration
├── requirements.txt         # python dependencies
├── CONTRIBUTING.md
├── LICENSE.txt
├── README.md
└── tests
    ├── conftest.py          # pytest settings
    ├── requirements.txt     # python test dependencies
    ├── test_base.py         # base class for writing tests
    └── test_xxx.py          # various tests