Development¶
Run all this commands:
lets postgreslets apply-migrations-devlets apply-seeds-devif you have data inseeds/directorylets webin separate terminallets uiin separate terminal, this will start vite dev server
Note
You might need to install npm dependencies: cd ui && npm install
http://localhost:8080 - web application with lets ui
http://localhost:3001 - web application with lets ui-build-dev
http://localhost:8081 - http api
To create a project for development purposes you can run:
lets http
and then execute this command:
curl -X POST http://localhost:8081/flags/load -H "Content-Type: application/json" \
-d '{"project": "test", "version": 1, "variables": [{"name": "user.id", "type": 2}], "flags": ["TEST_FLAG"], "values": [["TEST_VALUE", 1]]}'
Default username is admin and password is admin if you run with configs/local.yaml configuration file (default)
To start API handlers (not required for web application):
lets httpin separate terminal (this will start http server onhttp://localhost:8081)
To test the HTTP service with the example Flask client:
make sure
uvis installedrun
lets httpin one terminalrun
lets run-example-clientin another terminalopen
http://127.0.0.1:5000or call it with curl
lets run-example-client uses uv run --no-project --with requests --with flask --with evo-featureflags-client so it ignores this repository’s server dependencies and you do not need to create a virtualenv for the example.
The example client is in examples/http/ and connects to the FeatureFlags HTTP API. You can use it to verify that flag evaluation works end-to-end against the local service.
To build UI and copy it to web/static directory:
lets ui-build-dev
To release package:
lets release 1.0.0 --message="Added feature"
This pushes a v* tag, which triggers the release workflow: the package is
published to PyPI and a GitHub Release is created automatically. Release notes
are taken from the version’s section in CHANGELOG.md (or auto-generated
from merged PRs when the section is missing), so update the changelog before
releasing. Non-final versions (e.g. 1.26.0rc1) are marked as pre-releases.
Pre-commit
./scripts/enable-hooks.sh
./scripts/disable-hooks.sh
Architecture¶
Check important architecture decisions in adr/ directory.