mongulu-cm / mtchoun-mouh

Notification platform for passport delivrance for Cameroon consulate at Marseille(France)
https://mtchoun-mouh.mongulu.cm/
GNU General Public License v3.0
4 stars 2 forks source link
aws-dynamodb aws-lambda python310 terraform

Mtchoun' mouh

Ghomala language meaning news/message in French

All Contributors coverage Commitizen friendly

The goal of the project is to allow you to review a notification immediately after your passport is issued at the consulate in Marseille, France. If you want to see what it looks like, go to: https://mtchoun-mouh.mongulu.cm/

Functional context

Current behavior

When a user goes to the Cameroonian Consulate in Marseille to apply for a passport, he is reminded that in order to know if his passport has been issued, he must regularly look at a page on the consulate website. This page contains all the passport arrival notices in chronological order, beginning with the mention Passport arrival notice of the dd month year .
You have to scroll through this page from the beginning to a release date later than the filing date. The reason is that these are images and not published text; it is therefore impossible to use the browser's search function.

Problem

Proposed solution

The user registers on a platform via his name and email address which will then allow to notify him automatically notified by email of the release of his passport with the following constraints:

The solution will therefore be external to the Consulate's services and the data source will be the Consulate's website.

Technical context

If you are here, it means that you are interested in an in-house deployment of the solution. Follow the guide :) !

Architecture

Click on the arrow to view ![Design](architecture.png)

Prerequisites

Open in Gitpod

Deployment

Pyramid test

Unit tests

    cd infra/api/
    pytest test_extract.py
    pytest test_notify.py

Integration tests

To launch integration tests locally :

    act -j <job_name> --secret-file .env

To invoke register handler locally (lambda function):

    cd infra/api
    secretsfoundry run -p ../ --script "lambda invoke -v --config-file config-register.yaml"

To invoke scan handler locally (lambda function):

    cd infra/api
    secretsfoundry run -p ../ --script "lambda invoke -v --config-file config-scan.yaml"

End to end

sudo apt-get install -y chromium-browser
pip install -r requirements.txt
pip install -r infra/api/requirements.txt
pytest infra/api/test_liveness_mtchoun-mouh.py

Application monitoring

The API Gateway and Lambda services save logs in CloudWatch.
The tracking of the visits on the website is done with https://fr.matomo.org/ (opensource alternative to Google Analytics). Sentry is used to detection and tracking of errors (UI+backend)

Application performance

It is possible to track the evolution of the number of registered users per day by exploiting the ReturnedItemCount parameter of the Register table in Cloudwatch DynamoDB graphs.

How to contribute ?

You noticed a problem, or you want to suggest an improvement ? Do not hesitate to open an issue :) !

Contributors ✨

Thanks goes to these wonderful people (emoji key):


fabiolatagne97

⚠️ 💻 🎨

ngnnpgn

🤔

This project follows the all-contributors specification. Contributions of any kind welcome!