"Inspiration is everywhere, you just need to know where to look at."
Project for running a pointer that is able to track any satellite in orbit, or any object, anywhere, for that matter.
See side-note on project scope.
We use poetry as dependency management tool.
Install the project and dependencies with poetry:
poetry install
Add the following variables to the environment :
N2YO_API_KEY
: api key for N2YO api
Several tools, such as linting and formatting, are used to help develop qualitative code.
We use pre-commit hooks to check if the development follows the project's standards. Please install the git hooks with the following command:
poetry run pre-commit install
We use poethepoet for running the project and other tasks.
Run the following command to see the available commands:
poetry poe
Running the main scripts is thus as simple as:
poetry poe run --duration 5 --verbose
Arguments are optional, these are for demonstration purposes. The above command will run the tracker for 5 seconds, and print the results to the console.
Tests are run with pytest.
Run all tests with following command:
poetry poe test
This project is, in addition to performing it's main task, a playground for learning and experimenting with different technologies and techniques. To this end, several features are implemented with a variable degree of usefulness and pertinence to the main task. Techniques and technologies will be listed here:
- development and version control
- git as version control system
- pre-commit as git hook manager, with
poetry run pre-commit run --all-files
(first time might take a while for installing the hooks) - commitizen and conventional-commit as commit message formatter
- devcontainer as development environment
- dependency management and task running
- poetry as dependency management tool
- poethepoet as task runner
- testing
- pytest as testing framework
- pytest-cov as coverage plugin
- linting and formatting
- containerization
- docker as containerization tool
- docker-compose as orchestration tool
Things I would like to implement in the future (in no particular order):
- CI pipeline (GitHub or GitLab)
- postgresql database for state storage, interaction with sqlalchemy
- geospatial (temporal ?) integration (postgis, geopandas, geoalchemy, ...)
- S3 storage (for satellite TLEs, for example)
- sphinx (or other) as documentation generator
- helm charts for deployment