Guide for contributors working on Groupint source code.
git clone https://github.com/OSINT-for-Ukraine/groupint.git
cd groupint
poetry installPython 3.11 is required (pyproject.toml).
pip install pre-commit
pre-commit installOn commit, linters and formatters run automatically. Fix reported issues before pushing.
poetry run streamlit run interface.pyEnsure Neo4j is reachable and NEO4J_URI is set in .env.
poetry run pytestExample incident tests: tests/test_atlos_export.py, tests/test_watchlist_channels.py.
Rebuild after code changes:
./scripts/up-desktop.sh --build
# or
docker restart groupint-streamlit| Path | Purpose |
|---|---|
interface.py |
Main Streamlit app |
pages/2_Incidents.py |
Incidents UI |
core/tg_api_connector.py |
Telethon operations |
core/telegram_session.py |
StringSession persistence |
core/incidents/ |
Incident pipeline |
db/dal.py, db/queries.py |
Neo4j access |
draw_graph/ |
Plotly graph builders |
scripts/incident-worker.py |
Background worker |
docker-compose.desktop.yml |
Desktop stack |
- Create a branch named for your change.
- Make focused commits with clear messages.
- Ensure pre-commit passes.
- Push and open a PR to
main. - Wait for CI and review.
Do not commit .env, secrets.toml, session files, or API keys.
Modular sources live under docs/. To build a single manual and PDF:
./scripts/build-docs.sh| Output | Path |
|---|---|
| Merged Markdown | docs/groupint-manual.md |
dist/groupint-manual.pdf |
Prerequisites for PDF:
# Arch / Manjaro
sudo pacman -S pandoc texlive-basic
# Debian / Ubuntu
sudo apt install pandoc texlive-xetexMerge only (skip PDF if pandoc is not installed, or force skip):
BUILD_DOCS_PDF=0 ./scripts/build-docs.shEdit the chapter list in scripts/merge_docs.py when adding new guides. CI uploads dist/groupint-manual.pdf as a workflow artifact on pushes to main.
User documentation: docs/index.md.