Development Setup¶
Here are the steps you need to take to get up and running with development tasks.
Backend¶
The backend is written in python and uses fastapi as light weight framework.
To get started you will need a current version of python (>= 3.8) and poetry.
Change into the project folder (the one with the pyproject.toml file in it) and run
poetry install. This will install all backend dependencies and get you ready to run.
nox is used for automation of common tasks and you can find detail
We also strongly encourage you to use pre-commit which will catch most problems before you commit.
This decreases cycle times. All you need to do is poetry run pre-commit install.
Prerequisites¶
At the moment you still need 1 external thing:
a factcast database to talk to
This is at the moment not provided as mock but we will do so down the line.
Running the Backend¶
Configure the application in accordance to the Quickstart Guide.
Run poetry run uvicorn fact_explorer.app.main:app --reload --port 8080 --log-level debug and the backend will start.
Running Tests¶
Just type poetry run pytest
Installing Optional Dependencies¶
If you want to be able to develop against the full feature-set you will need to install
the additional optional dependencies cryptoshred and schema-registry and perform
the configuration as per the quickstart guide. This means you will also need the infrastructure
that goes along with this. For details on what that is, please look at the documentation of the
corresponding projects.
Frontend¶
The frontend is a next app. To get up and running you simply change into the
frontend folder src/fact_explorer/frontend and run
npm installnpm run dev
and open http://localhost:3000 in your local browser.
There is a more detailed Readme on the frontend setup in that folder as well.
More details can be found in the README in the frontend folder.
Documentation¶
You can run poetry run nox -s docs -- serve in your shell. This will automatically open
a reloading version of the docs in a browser window. This makes it easier to change documentation.