Some of the key roles of the local government are the maintenance of civil registries and the issuance of birth and marriage certificates. A problem faced is that carrying out these roles manually, leads to poor tracking and maintenance of these important documents, therefore automation of this process can lead to better maintenance of civil registries and better tracking of these important documents.
This project aims to automate the process of maintaining and tracking civil status registries and the issuance of birth and marriage Certificates.
For this project, a sample scenario of the Molyko Municipal council is considered
A web-based application is implemented offering an interface for the civil status registrar to select either birth or marriage certificate options and in each case, the capability of collecting and storing relevant data, both on a case by case basis, and in bulk by uploading data from a CSV file with the capability to generate and print PDFs of both certificates
The civil status registry project aims at automating the process of maintaining and tracking civil status registries and the issuance of birth and marriage certificates by developing a web-based civil status application, which offers a civil status registrar functionality to select either birth or marriage certificate options and in each case, the capability of collecting and storing relevant data, both on a case by case basis, and in bulk by uploading data from a CSV file with the capability to generate and print PDFs of both certificates
The roles of civil registries in Cameroon are maintaining and issuance of birth and marriage certificates to citizens. The birth certificate is required for identification, Education, Inheritance, voting. While marriage certificates are used to prove that two individuals are legally married and it is required for; Inheritance, registration of children.
These certificates are processed manually on paper; All vital information and events are directly recorded on standardized forms, their fields are manually filled in cursive writing, which prohibits their subsequent exploitation by optical character recognition[1]. This paper-based approach is very difficult to maintain and it is time-consuming as it may take a week to process and issue a birth certificate. Detailed information on the procedure of obtaining these certificates can be found in [2]
There is currently no official exposed method for automated verification of the authenticity of an ID card number, so for this project, ID card numbers collected as relevant data for either birth or marriage certificates are assumed to have been pre-authenticated
The rest of the report is given as follows. Chapter 1 talks about the Analysis and Implementation stage of the research, how it was carried out, its functional and non-functional dependencies. Chapter 2 Shows code fragments on how key features were implemented. Chapter 3 shows the results gotten from the implementation stage. Chapter 4 talks about what happened and why it happened, possible sources of errors with the application. Chapter 5 sums up the project and its implications and suggestions for future research. Chapter 6 includes all the evidence that was cited in the main body of the report using the citation and referencing style. Chapter 7 shows details for setting up the application locally and the API documentation for the civil status registry application
CHAPTER 1
The current process implemented by the local government to manually maintain civil registries and issue birth and marriage certificates brings along a couple of issues and flaws, keeping track of and maintaining these important documents is very difficult as registries are paper-based.
With registries being physically stored in the respective municipal council in which they were registered, this prohibits access to the documents associated with these registries by other municipal councils across the region as they can only be got from the municipal council from which they were initially registered, This brings along inconsistencies with the data in cases where a citizen has multiple documents registered at different municipal councils
Before and while carrying out this research, certain questions were raised such as;
- What are the requirements for birth and marriage certificates?
- Who has the authorization to create civil registries?
- How is access to the database and application granted to the civil status registrar?
- Who has the authorization to create civil registries?
- Who authorizes and creates accounts for civil registrars within the application?
- How are documents printed in bulk in cases where the registries were entered in bulk in the form of a CSV file?
- Should the database maintain a PDF copy of each birth or marriage certificate or generate one from the database on each request?
- How are the relevant data required for both birth and marriage certificates validated and authenticated?
- How is the application going to be protected from attacks and illegal access by non-authorized persons?
- Which database paradigm to use for storing and maintaining the registries?
The paper tries to answer these questions and shed more light on areas for further work and exploration
The case study for this research is the Molyko municipal council. The process of manually maintaining and tracking civil status registries and the issuance of birth and marriage certificates within the Molyko Municipal council was analyzed.
Detailed information on how the research was carried out to get the requirements for birth and marriage certificates are found in [1]
In gaining the requirements for birth and marriage certificates, I also used an article on civil registration and vital statistics in Cameroon [1] I found on the Unicef website which had detailed information on how the process of maintaining civil status documents is performed in Cameroon, as well as the organization structure and all legal authorities in charge for maintaining births and marriage certificates along with all relevant requirements and data needed for registering birth and marriage certificates.
The answers and guides got from the research were used as a template to develop the database schemas for each registry and design the system
With the chosen case study, the main users and business stakeholders are civil status registrars. The management or organizational stakeholder is the Ministry of Territorial Administration and Decentralization (MINATD)
The requirements are specified for the user take holder ( The civil status registrar) and the management stakeholder ( the system admin )
- The Civil Status Registrar
- Login into the application
- Select either birth or marriage options
- For each selected case, collect data on a case by case basis
- For each selected case, collect data in bulk by using CSV files
- Store and maintain registries for both civil status documents
- For each selected case, generate certificates in the format of printable PDF documents
- Retrieve accounts in case of forgotten password
- The System Admin 8. Manage user accounts 1. Create, delete user accounts 9. Unrestricted access to the entire database
These requirements are seen as attributes to the functional requirements. Functional requirements are implemented with them in mind and someplace more emphasis on one or more of them than others.
- The application should be user-friendly, users should be able to become familiar with and competent in using the application. This can be measured by the training time needed before novice users get acquainted with using the application
- The system has to be reliable due to the importance of the data and the damages that can be caused by incomplete or incorrect data, hence it has to produced accurate and desired results at all times.
- The platform should be available and operational to all users at all working hours
Requirement | 1.1: Login into the application |
Pre-condition | Be a Civil status registrar appointed by the local government |
Operation | Enter the following information in the login form on the login page
|
Requirement | 1.2: Select either birth or marriage options |
Pre-condition |
|
Operation |
|
Requirement | 1.3: Collect data on a case by case basis |
Pre-condition |
|
Operation |
|
Requirement | 1.4: Collect data in bulk by using CSV files |
Pre-condition |
|
Operation |
|
Requirement | 1.5: Store and maintain registries for both civil status documents |
Pre-condition |
|
Operation |
|
Requirement | 1.6: Generate certificates in the format of printable PDF documents |
Pre-condition |
|
Operation |
|
Requirement | 1.7: Retrieve accounts in case of forgotten password |
Pre-condition |
|
Operation |
|
Requirement | 2.1: Manage user accounts |
Pre-condition |
|
Operation |
|
Requirement | 2.1: Unrestricted access to the entire database |
Pre-condition |
|
Operation | The JSON web token attributed to system admins have unrestricted access to all exposed API endpoints |
The design is structured into 3 parts;
For this application, a cloud-based MongoDB[3] database was developed to store and maintain the data for each civil status document and store data for each user of the application. The schema and design of the data models were based on the already available requirements for each civil status document and also required information on each user of the application
Field | Data type | Description |
givenname | string | Child’s given name |
surname | string | Child’s surname |
born_on | date | Date of birth of the child |
born_at | string | Child’s place of birth |
sex | enum | Child’s sex, either male or female |
father_name | string | Fathers name |
father_born_at | string | Fathers place of birth |
father_born_on | date | Fathers date of birth |
father_resident_at | string | Where father currently lives |
father_occupation | string | Fathers current occupation |
father_ref_doc | number | Fathers ID card number |
mother_name | string | Mothers name |
mother_born_at | string | Mothers place of birth |
mother_born_on | date | Fathers date of birth |
mother_resident_at | string | Where mother currently lives |
mother_occupation | string | Mothers current occupation |
mother_ref_doc | number | Mothers ID card number |
drawn_up_on | date | Date when the certificate was made |
Field | Data type | Description |
bride_given_name | string | The given name of the bride |
bride_surname | string | The surname of the bride |
bride_id_num | number | The ID card number of the bride |
bride_place_birth | string | The place of birth of the bride |
bride_born_on | date | The date of birth of the bride |
bride_father_name | string | The bride’s fathers name |
bride_mothers_name | string | The bride’s mothers name |
bride_family_head | string | The head of the brides family |
bride_witness_name | string | Name of the bride’s witness |
bride_profession | string | The bride’s current profession |
bride_nationality | string | The bride’s nationality |
bride_resident_at | string | The bride’s current resident |
groom_given_name | string | The given name of the groom |
groom_surname | string | The surname of the groom |
groom_id_num | number | The ID card number of the groom |
groom_place_birth | string | The place of birth of the groom |
groom_born_on | date | The date of birth of the groom |
groom_father_name | string | The groom’s fathers name |
groom_mothers_name | string | The groom’s mothers name |
groom_family_head | string | The head of the grooms family |
groom_witness_name | string | Name of the groom’s witness |
groom_profession | string | The groom’s current profession |
groom_nationality | string | The groom’s nationality |
groom_resident_at | string | The groom’s current resident |
marriage_type | enum | Marriage type Polygamy or Monogamy |
objections | enum | Records if objections were made on the marriage, value is either Yes or No |
matrimonial_regime | enum | Records how property is handled, value either Joint or Separate |
Field | Data type | Description |
name | string | The uses name |
role | enum | Users role, value either registrar or admin |
The users’ email address | ||
password | password | Password to the users’ account |
passwordChangedAt | date | Keeps track of when last the users password changed |
passwordResetToken | string | An optional field containing a reset token [4] which lets users reset forgotten passwords |
A REST API [5] was developed using ExpressJs [6] and NodeJs following the REST architectural style [5], allowing for interaction with the MongoDB database. The design pattern was based on the Model-view-controller architecture [7]. The API documentation is found below in the appendix.
- Clone this repository
- Download and install Node js
- Windows
- (64-bit installer)[https://nodejs.org/dist/v14.17.3/node-v14.17.3-x64.msi]
- (32-bit installer)[https://nodejs.org/dist/v14.17.3/node-v14.17.3-x86.msi]
- Mac OS
- (Installer)[https://nodejs.org/dist/v14.17.3/node-v14.17.3.pkg]
- Linux
- Windows
- Open a terminal window
- Windows ** Ctrl + Shift + T **
- Mac OS ** Control + Option + Shift + T **
- Ubuntu ** Ctrl + Alt + T **
- In your terminal window navigate to the cloned repository folder
- In the folder run the command * npm install * to install the projects dependencies
- When the project dependencies have been installed run the comman * npm start * to initialize the database and the server
- In your browser run the URL * localhost:3000/ * this URL points to the applications home page, from where you can proceed to login into the application