Project structure
As FastIoT is considered a framework, certain directories and files are expected to be always at the same location. For a new project this should usually be handled using the CLI (s. Setting up your first FastIoT Project for more details).
├── configure.py => This file sets up your project and defines where to find tests, library, … . S. Project configuration using configure.py for details.
├── deployments
│ ├── my_deployment => A deployment configuration to configure a list of services running on a (remote) system
| │ ├── .env => Environment variables
│ │ └── deployment.yaml => Deployment configuration (data model fastiot.cli.model.deployment.DeploymentConfig)
│ └── integration_test => An deployment to be started on the CI runner
│ └── […]
├── pyproject.toml => Python project configuration with dependencies, project description, library building information, …. To build a library you may use the command fastiot.cli.commands.build_lib.build_lib()
├── Jenkinsfile => File for the CI runner, if needed
├── README.md => It’s always nice to have a Readme
├── requirements.txt => Python Packages to be installed in your venv and in all containers (fixed requirements)
├── src => All your code belongs in here
│ ├── my_lib => The library
│ └── […] => Some library code to be used by all services
│ ├── my_services
│ │ ├── __init__.py
│ │ ├── a_service
│ │ │ ├── __init__.py
│ │ │ ├── my_service.py => A file containing your actual service, this file will be obfuscated
│ │ │ ├── manifest.yaml => A manifest describing your service (ports, mounts, …) (data model fastiot.cli.model.manifest.ServiceManifest)
│ │ │ └── run.py => This is the entry point used by docker for your service not to be obfuscated when building using fastiot.cli.commands.build.build(). S. Service Entry Point - run.py for details.
│ │ ├── […] => More services as needed
│ ├── […] => More packages containing services if you like to split them into separated packages
│ └── my_tests => Put any tests files here and configure the package accordingly in your configure.py, may be started using the fastiot.cli.commands.run.run_unittests() command.