According to the French gun legislator, 20 000 firearms are seized each year in France, 15 to 20% of which are misidentified or unidentified. This leads to errors in the legal classification of weapons and has the following consequences:
- A lack of criminal prosecution, or conversely, unjustified prosecution
- Over-solicitation of firearms experts
- Erroneous sales of weapons subject to authorization by civilian gunsmiths
Project summary
Develop an app for the law enforcement forces where they just need to take a photo of a firearm to obtain an identification result.
History of the product:
- 2021/09/13: the Direction of Numeric of French Ministy of the Interior hires a developer and a data scientist to develop a Minimum Viable Product for 10 months.
- 2022/03: first prototype in production (basegun.fr)
- 2022/09: tests with real users from police and gendarmerie
- 2024/02: solution deployed to all professional mobile phones of gendarmerie forces in France on basegun.interieur.gouv.fr
Dependancies:
- make
- docker
- docker-compose
- pnpm
See also Debugging section for all the env variables needed for the website to work fully operationally.
# install in dev mode
make build
# run
make up
# stop
make down
- Login into keycloak
- Go to the Basegun realm
- Then in "Realm settings", go to "Keys"
- Copy the RS256 public key and paste it in the docker compose.
-
If the interface of the website does not appear on localhost:3000, there is an issue with frontend. In terminal, run
docker logs basegun-frontend
-
If the interface shows up properly but there is a bug at image upload, there is an issue with the backend. Try to find error log:
- In terminal, run
docker logs basegun-backend
- If you cannot access terminal or don't see anything, go to
localhost:5000/logs
to see latest logs.
- In terminal, run
-
Beside frontend and backend services, we use some containers in dev which simulate some services provided by our cloud provider: s3 storage, mail server... See our infrastructure repo for more info about app architecture.
- Set your User Agent to 'SAID'
- Click on the button 'Contacter un expert' on the result page or go to localhost:5173/expert-contact This will redirect you to a login page where you have two options :
- If you want to test the police path, use
police
as username andpassword
as password. - For the gendarmerie path, use
gendarmerie
as username andpassword
as password. (see keyclock conf)
- Update tag in Makefile
make tag
This will create a draft release in github (to validate) and some docker image packages with this tag.
If you made a tagging error, run
make untag
. This will delete the tag locally and in the remote.
Due to its usage of python library Ultralytics, BaseGun uses copyleft GNU Affero General Public License v3.0 (AGPL-3.0).