This project makes local council meetings searchable.
It provides backend infrastructure (fastAPI and SQLite database) for capturing meeting information including transcripts (which may be extracted from video caption files or synthesized separately from meeting audio).
It also provides a vuetify frontend for searching meetings transcripts.
Currently, the project supports one provider, Public I, a company that provides AV services to many councils in the UK and Ireland.
Contributions of all types are welcomed, but we particularly encourage people to add support for different providers.
To add support for a new provider, subclass api/providers/provider.py and implement the required methods.
The API can be developed and deployed with docker:
docker compose -f docker-compose.base.yaml -f docker-compose.dev.yaml build
docker compose -f docker-compose.base.yaml -f docker-compose.dev.yaml upIn production:
docker compose -f docker-compose.base.yaml -f docker-compose.prod.yaml build
docker compose -f docker-compose.base.yaml -f docker-compose.prod.yaml up -DMake sure to add an admin_password.txt and admin_user.txt to the secrets directory in the project root.
The api domain can be set with TRAEFIK_DOMAIN in the .env file. For deployment, TRAEFIK_SSLEMAIL should also be set for automatic SSL provisioning via letsencrypt.
The API uses fastAPI and can be initialised with
fastapi dev api/API.pyUse fastapi run api/API.py for deployment.
The --port flag can be used to specify the desired port.
The vuetify and Vue.js frontend can be run in development mode from the council-searcher directory with:
npm run devOther standard vite scripts are available:
npm run build
npm run preview
And linting can be carried out with:
npm run lint
Separate development and production environment files, council-searcher/.env.development and council-searcher/.env.production, can be used to set the desired API endpoint to be used by the front-end.