Internship Cover Combined

Download as pdf or txt
Download as pdf or txt
You are on page 1of 93

THE UNIVERSITY OF BAMENDA

NATIONAL HIGHER DEPARTMENT OF


POLYTECHNIC COMPUTER
INSTITUTE ENGINEERING

INTERNSHIP REPORTS

BY:

YONKEU KWEYA STEVE JUNIOR

REGISTRATION NUMBER: UBA19E0217


SECTION A:
YEAR ONE
IT TRAINING AT THE AFRICAN INSTITUTE OF
INFORMATION TECHNOLOGY (AFRIITECH) BAMENDA.
Presented By
YONKEU KWEYA STEVE JUNIOR.
UBA19E0217.
COMPUTER ENGINEERING DEPARTMENT Level 200.
NATIONAL HIGHER POLYTECHNIC INSTITUTE BAMENDA,
UNIVERSITY OF BAMENDA.
August – October 2020. Done At

AFRIITECH Bamenda.
Name of supervisors:

Mr. BAMBO Balery


Mr. NJINI Crispus
ACADEMIC YEAR 2019-2020.
ACKNOWLEDGMENTS.
I would like to thank the Manager of AFRIITECH, Mr. Bambo Balery for giving me the
opportunity to carry out my internship at his organization. Special thanks too to all my tutors and
Supervisors; Mr. Crispus, Mr. Forgwe for impacting me with all what I learned while on internship.
Special thanks to my Aunt Mediatrices for accommodating me through-out the internship period.
I can’t thank you enough. Thanks to family, friends and colleagues who stood by me and ensured
that the internship period was a success.
Above all I would like to thank the ALMIGHTY GOD for making it possible for me to
carry out my internship fully in good health and safe conditions for all this would not have been
possible without him.

1
TABLE OF CONTENTS:

ACKNOWLEDGMENTS. .................................................................................................................................. 1
TABLE OF CONTENTS: ................................................................................................................................... 2
SUMMARY. .................................................................................................................................................... 1
CHAPTER 1: ................................................................................................................................................... 2
1.1. Introduction. ................................................................................................................................. 2
1.2. Brief history and details of the Organization. ............................................................................... 2
1.3. Objectives of Internship. ............................................................................................................... 2
CHAPTER 2: ................................................................................................................................................... 4
2.1. Description of Internship and Activities........................................................................................ 4
2.2. Major projects carried out. ........................................................................................................... 4
2.3. Web programming; Tic tac toe game and Snake game. ............................................................... 7
CHAPTER 3: ................................................................................................................................................... 9
3.1. Problems faced during internship and General Observation. ...................................................... 9
3.2. Recommendations. ....................................................................................................................... 9
CONCLUSION............................................................................................................................................... 10
REFERENCES. ............................................................................................................................................... 11

2
SUMMARY.
This is a report on my Internship at AFRIITECH Cameroon during the holidays. This report does
not detail the activities which were carried out daily, rather it gives an overview of my
accomplishments and what I learned over the course of the internship.

1
CHAPTER 1:
1.1. Introduction.
Going on internship is a chance for every student to go out to an institution and apply what they
learn in school in a real world. It is a chance to get acquainted with how companies carry out their
day-to-day tasks and get hands on experience on how the job market is like, while gathering
enough experience.
Internship also lets you:
● Work in a professional environment.
● Enhance my skills and abilities.
● Help to find my areas of interest.
● Increase my level of confidence.
● Gain hands on experience
● Build good networks.
● Knowing and working with people who share the same interest and vision.
● Enhancing Career opportunities.
On this occasion, I had the chance to carry out my internship at AFRIITECH (African Institute for
Information Technology).
1.2. Brief history and details of the Organization.
AFRIITECH is a subsidiary company of Further Solutions Group. It was founded in 2008. Further
Solutions Group has as its mission to help business executives get the most out of their technology
investments. Further solutions Group offers services such as Security Management, Network
Security and firewall installation, Web Services, Database management.
AFRIITECH as a school under Further Solutions Group undergo courses for those interested in
learning. The carryout IT Certification programs such as Computerized accounting, Graphics
designing, web design and development. Professional Certifications such as; Ethical Hacking and
Counter measures, Oracle e business, Oracle database and ministration, Big data and internet of
things, CISCO certified network associate/Professional, Microsoft Dot net programming and many
others.
Reputation.
Further Solutions Group is a well-established organization. In its 11 years of existence, it has
managed to partner with major tech giants such as CISCO, Microsoft, Oracle, and many others.
They also have training contracts with some large companies in and around the country such as.
CAMCULL, BAPCCUL, CATTUC, PERENCO, International Labour Organization.

1.3. Objectives of Internship.


The aim of the internship was to get out of school and experience how companies function and get
a glimpse of the requirements of the job market which are not extensively covered in school.

2
However, the objectives were modified during my time at AFRIITECH as we had covered quite little in
school to be able to apply them. So, the internship was another learning curve, though in a different
direction. Different direction in the sense that we got tutoring from people who were already workers,
so I learned much about what I need to fit in the technology world.

3
CHAPTER 2:
2.1. Description of Internship and Activities.
I was on internship with about 40 other interns. There we were separated into two groups. The
networking students and the Programming students. I was in the programming section. While we
didn’t go out and carry out many real solutions for organizations, I certainly did learn a lot during
my time at AFRIITECH. So, it was more of an all-round study schedule and no outdoor tasks for
organizations, but I did complete some individual project there.
We had a timetable which was adequately followed. 4 General courses were covered namely:
● Oracle Database Management Systems
● Excel VBA Programming
● Web development and design
● Software Programming (Dot net programming with C sharp).
Unfortunately, not enough was covered during my time there due to certain uncontrollable
challenges such as occasional lockdowns and so on.
Nonetheless, tasks were assigned to us, and I managed to complete most if not all.
Some tasks which we carried out included A stock management system using excel VBA, building
a calculator using c sharp and some graphical user interface, some websites mimic, and a simple
snake game using html CSS and JavaScript.
Going to AFRIITECH knowing nothing about Excel VBA and C Sharp but being able to
accomplish the above tasks, is a testament to the work which I did there and how much I learned
during my time there.
2.2. Major projects carried out.
As Previously Stated, we were assigned about 5 major projects to carry out. Below is a brief review
of my work.
1. Excel VBA Stock Management System.
We were tasked here to create a system for a small stock management store using Excel
VBA. The system was to contain a stock in section where the storekeeper inputs new
products with their unique product ids, A stock out system which will manage which
products have been bought and how much of each product is left in stock,

4
Figure A

Figure 1: represents the home page of the stock management


Figure 2: is the stock in page where new product with
system where the store keeper will have to login with their
their details are added to the database.
credentials

Figure B

Figure C

Figure 3: C is the stock list page where the products in the database are stored.

5
Figure 4: the database which contains the items which are Figure 5: the supplies database which holds
currently in stock. information about all the shops suppliers.

Figure D is the database which contains the items which are currently in stock.
Figure E is the supplies database which holds information about all the shops suppliers.
The above images are just a few images of the resulting outcome of my work with excel VBA.
However, the project was not complete due to certain circumstances.

2. Graphical user interface (GUI) Calculator with Microsoft C Sharp and Dot Net
Framework.
At AFRIITECH we were introduced to the C sharp programming language with the
powerful Microsoft dot net framework. We used the visual studio IDE to write, compile
and run our programs. The main project we had to do in this domain was to make a smart
GUI calculator which I did. Some of the images of the calculator are displayed below.

6
Figure (Figure G).
Figure G
It is quite unfortunate that I was unable to
complete the whole module for the analog
build which is just a subset of the digital
calculator.

Figure F Figure G

Figure6: F shows the digital calculator with an analogue switch which Figure 7: shows a supposed analogue calculator with an
when toggles, display the analogue calculator error message on display.

Figure H
Figure I

Figure 8: sample source code for the calculator


Figure 9: sample source code for the calculator
2.3. Web programming; Tic tac toe game and Snake game.
This section is concerned by creating websites and applications for the web. At AFRIIECH,
we were introduced to some basic concepts on web design and development. In that light,
we were assigned to build two games. The famous tic tac-toe game and the olden day snake
game. It was a hard task as what we had learned at that time was not enough to do anything
with regards to the assign but then, the introduction had been given so it was left for me to
do in-depth research and come up with a solution to the assignments. After all that’s what
studies is all about right? Get introduction and then go on with the research by yourself.
Any ways, below are some screenshots of the snake game which is played by controlling
the green snake with the control buttons on the keyboard and aiming at the red target. You
only fail when one end of the snake comes in contact with the other end.

7
Figure J Figure K

Figure 2: game in motion


Figure 1: part of the source code (JavaScript) for the game.

Then the next task was the tic-tac toe game. Quite popular game where there are two distinct
characters in a mostly 3 by 3 matrix like format. They play until one user has a string of 3 of the
same characters in a row of column, that user wins. Let’s see how it is like.

Figure L Figure M

Figure 3: part of the source code for tic-tac toe game. Figure 4: tic-tac toe game running.

8
CHAPTER 3:
3.1. Problems faced during internship and General Observation.
I had a general observation of AFRIITECH which was all good. The environment was quite neat,
quiet and user friendly, having very neat and accessible toilets. We cleaned our classroom/lab
every weekend which made the environment neat and health. Also, there was a constant supply of
electricity at AFRIITECH due to the presence of their standby generator in case of power failure.
There were slight concerns like the supervisors being unclear in their instructions sometimes.
Challenges were also present, like the 3 weeks lockdown period. Those issues are only slight and
didn’t cause a major problem though.

3.2. Recommendations.
I would recommend for the school to put more emphasis on the practical part of studies as we went
into the internship without ever visiting a lab in school. That made it hard for us to be really helpful
and productive to the organization.

9
CONCLUSION
Overall, I enjoyed my time on internship. It was a time where I met new people which we
bonded together to help each other grow in the tech world. Learning the power of our everyday
computer applications like MS Excel is something I would probably not have had an idea on just
yet, if not for AFRIITECH. The working experiences shared by our supervisors too was very
inspiring and it only pushed me to work harder. Learning a new and modern programming
language too was a big plus for me. Then very important, little tips given us by our supervisors
will go a long way in helping and inspiring me more. I would say, even though I didn’t complete
most of my main projects while on internship, the internship as a whole was a big Success for me.

10
REFERENCES.
Websites

− Importance of internship – source http://www.slideshare.net


− Presentation of the host institution – source www.4dagroup.com, www.afriitech.com.
− Daily activities – source from supervisors and personal research.
− All images – screenshots from my personal computer.

11
SECTION B:
YEAR TWO
REPUBLIC OF CAMEROON REPUBLIQUE DU CAMEROUN

Peace – work - fatherland Paix – travail - patrie


0 L’UNIVERSITE DE BAMENDA
THE UNIVERSITY OF BAMENDA
NATIONAL HIGHER POLYTECHNIC INSTITUTE SUPERIEUR DE
INSTITUTE POLYTECHNIQUE DE BAMENDA

GO-IMMIGRATION GO-IMMIGRATION

DEPARTMENT: COMPUTER ENGINEERING


LEVEL 300

TOPIC:
CUSTOMER MANAGEMENT SYSTEM USING A
WEB APPLICATION

Internship made at Go Immigration office at Yaoundé from 2nd August to


the 5th October 2021.

Presented by: YONKEU KWEYA STEVE JUNIOR


Registration Number: Uba19E0217

Supervisor: Mme. OBAME WILLIAM


CEO of Go – Immigration
Table of Contents
DEDICATION................................................................................................................ ii
ACKNOLEDGEMENT.................................................................................................iii
Table of Figures ............................................................................................................. iv
EXECUTIVE SUMMARY ............................................................................................ v
CHAPTER 1: Overview of the organization .................................................................. 1
1.1 INTRODUCTION ............................................................................................ 1
1.2 ABOUT THE COMPANY ............................................................................... 1
What we can bring you with our working method ................................................. 3
Fees and terms of payment ..................................................................................... 3
Our destinations ...................................................................................................... 3
SELECTION OF CANADIAN IMMIGRANTS ................................................... 5
OUR general PROCEDURE ................................................................................ 14
CHAPTER 2: INTERNSHIP ....................................................................................... 15
2.1 Welcome and Training .................................................................................... 15
2.2 Presentation of the IT department ................................................................... 15
2.2.1 Missions ................................................................................................... 15
2.2.2 Activities of the IT Department ............................................................... 15
2.2.3 Tasks performed ....................................................................................... 15
2.3 Training Program ............................................................................................ 16
CHAPTER 3: LEARNING OUTCOMES ................................................................... 27
3.1 Personal experiences ....................................................................................... 27
3.2 Professional’s experiences .............................................................................. 27
CHAPTER 4: RECOMMANDATION ........................................................................ 28
4.1 At the level of Go Immigration ....................................................................... 28
4.2 At the level of NAHPI my school at University of Bamenda. ....................... 28
CONCLUSION ............................................................................................................ 29
I Liked or Disliked .................................................................................................... 29

i
DEDICATION

I dedicate this first to the God almighty for always being by my side, to my father for
the financial and moral support, to my mother, friends and rest of the family.

ii
ACKNOLEDGEMENT

It is popularly said that one that one cannot tie a bundle. A report of this nature cannot
be realized by myself but with the assistance of others.
It will be very wrong to be ungrateful about all the efforts that people around me put in
support given me throughout my internship. This academic work could not be done
solely by personals efforts. For these reasons, my sincere gratitude goes to the following
personalities who have been a moral or financial assistance towards the success of this
academic internship:
- The almighty God who gave me strength and courage
- The head of department of computer engineering of NAHPI of the university of
Bamenda Dr. NDUKUM Pascaline
- The CEO of Go – Immigration for accepted me in the structure.

iii
TABLE OF FIGURES

Figure 1: Working on the class diagram on draw.io .................................................... 17


Figure 2: Class diagram ................................................................................................ 17
Figure 3: My Working File Skeleton............................................................................ 18
Figure 4: mobile view of the login and registration page ............................................. 18
Figure 5: Opened PyCharm IDE .................................................................................. 19
Figure 6: An example of errors to be managed in Django (The default Django
framework 404 page) .................................................................................................... 19
Figure 7: Django dashboard of Heroku with the app deployed ................................... 20
Figure 9: Search Result interface for the Goim Django Application ........................... 21
Figure 10: Event calendar showing some booked meetings ........................................ 21
Figure 11: Sending emails to all customers .................................................................. 22
Figure 12: Sending an email to a particular customer .................................................. 22
Figure 13: User profile ................................................................................................. 23
Figure 14: Setting up an event ...................................................................................... 23
Figure 15: customer registration process ...................................................................... 24
Figure 16: Recorded customers in the database ........................................................... 24
Figure 17: Company user dashboard with customers variation ................................... 25
Figure 18: Registration Page ........................................................................................ 25
Figure 19: Home page .................................................................................................. 26
Figure 20: All customers in records printed ................................................................. 26

iv
EXECUTIVE SUMMARY

The internship was carried out at Go-Immigration Yaoundé from the 09th August to the
2nd of October in the frame work of my training at NAHPI Bamenda. The internship
had as term CUSTOMER MANAGEMENT SYSTEM USING A WEB
APPLICATION. During my internship, work was done at the Go-Immigration office,
in which main role was to understand how the structure works and to which personnel
it was linked. All through the internship effort has been made to put in practice some
theoretical notions that have been learned both at school and during research at home
and on the field. This report subdivided into three chapters. In the first chapter the
enterprise is presented as a whole, the hierarchy and how they interact, the second
chapter summarizes the weekly activities that have been done during the internship, last
but not least chapter three talking about presents researches and solutions that were
encountered.

v
CHAPTER 1: OVERVIEW OF THE ORGANIZATION

1.1 INTRODUCTION
Internship is offered by company across the year to enable young or less experience
individuals to enable them to learn and judge their interest capabilities and capacity in
a chosen professional area. Internship gives the opportunity to understand how
experience is acquire through services. It trains students to do a particular job over and
over, and it is by doing a piece of work continuously that experience is acquired.
Exposes students in terms of interaction and concentration to a broader scope. It also
links you to a better future based on more persons that you may be able to interact with.
In the lines that follow we’ll be discussing about the company organization and history.

1.2 ABOUT THE COMPANY


Go-Immigration is a firm derived a from a competitor where the founder
KOUEMEGNE NZIEMI WILLIAM BRICE Epse OBAME worked for six years.
The fact of being at the head of an immigration company for six years allowed him to
acquired not only the knowledge and the knowledge and the cogs of the activity, but
also the address book of the necessary contacts which will make it possible to treat your
request with the utmost diligence.
SPECIALIZATION
- Go-Immigration supports you in your procedures for travelling abroad.
- Application for scholarships in several countries.
- Visa application for Canada, the USA, the countries of the Schengen zone, China,
Turkey, Morocco.
- The services we offer cover all stages of the visa application process until reception
in the country of destination.
-
WHY IS GO IMMIGRATION EXISTING
In reality, the main reason is that in general immigrating for one reason or another is an
important life project that it would be better to entrust to experienced specialists, who
will save you time and money.
Because the majority of visa applicants generally see their application refused because
of small details of which they are unaware of the importance; which causes them a
heavy. This could be avoided by entrusting the case to an experienced firm with the
necessary resources to carry out the procedures.

1
OBJECTIVES OF GO IMMIGRATION
- Allow candidates to know their possibility of obtaining their travel document in a
reliable, complete and fast way.
- Provide our candidates with available and competent staff in order to satisfy the
client.
- Provide as much information as possible to our customers so that they can choose
the most advantageous destination.
- Be transparent in all the actions taken on your file thanks to a technology that inform
the customer in real time of all the actions carried out in his file.
- Set reasonable fees for irreproachable quality of service.
- Help the client in his new destination to adapt to the new and foreign environment.
CONTACT US
Located in the heart of the city of Yaoundé a few meters from the central post office,
adjacent the tax building opposite Montesquieu College Mvog-Ada.
Phone: (237) 699 827 207
OUR SERVICES
Canada
Full procedure for applying for Temporary Residence.
- student study permit, with or without scholarship
- Student work permit
- Application for temporary residence for tourists
- Application for temporary residence for workers
Application for permanent residence
- Permanent residence in Quebec
- Permanent residence through the Express Entry channel
- Family reunion
Other services
- Make an appointment at the CRDV
- Submission of various online requests
- Equivalence of diplomas
- Comparative evaluation
US

2
- Full student and visitor visa application process
- Making appointments,
- Invitation
- Scholarships
EUROPE
- Complete short / long stay visa application procedure
- Baccalaureate equivalence
- invitations
ASIA
- Complete short / long stay visa application procedure
- invitations
- Scholarships
What we can bring you with our working method
- The first service we can provide you with is to inform you of the percentage chance
that your procedure will be successful, through the evaluation of your profile. This
evaluation is crucial, it takes 48 working hours. It is the first step in our
collaboration.
- Our services range from the assessment of your chances of obtaining the visa, to
reception in the country of destination, through the complete preparation of the
file.
Fees and terms of payment
- The fixed fees depend on the type of visa requested and the country of destination.
They are paid in installments.
- Payment is made either by bank transfer, transfer or cash. Bank details will be
given to you when signing the contract.
Our destinations
- Canada. _ For this destination, the different possible applications are: permanent
residence, temporary resident visa application, study permit, student work permit,
asylum application.
- The countries of the Schengen zone, USA, China, Turkey, Morocco, Tunisia.
For this area, we process visa applications for students, for tourists, for traders.
- It should be noted that all of these destinations for students offer scholarship
opportunities. We are a great help for applicants

3
4
Selection Of Canadian Immigrants

Canadian immigration policy (laws and regulations)

Before explaining the process, we must begin by defining what immigration means for
Canada. We will do this by explaining what Canadian policy is in this area.
Thereafter, we will explain to you the immigrant selection process, the two laws that
govern this selection, the different categories of candidates, as well as the evaluated
criteria.

You will then be able to understand how the selection of immigrants is carried out by
the government authorities and will have the answers to the questions that we are most
often asked in our practice or during our conferences. Canada is a country that
encourages immigration. For several years, the objective has been around 250,000
immigrants per year (this is a global quota, because there is no quota per country). For
2007, this objective is also 250,000 people. These data only include people who obtain
permanent residence. Those who only come to work or study are not counted.

To highlight these figures, it should be noted that this means that one new immigrant
arrives each year for every 150 Canadians, or nearly 0.75% of the total population.
This therefore demonstrates a real government desire to increase the number of
inhabitants of Canada, in order to allow better economic and social development of
the country. Indeed, Canada is a larger country than the United States, but has almost
ten times fewer inhabitants.

In addition, in order to allow complete and rapid integration, Canada offers


newcomers the same social benefits as Canadians and citizenship is available to them
after 4 years of residence in the country. (1460 non-consecutive days) during the last 6
years preceding the filing of the citizenship application.

Development of selection grids

Even if the immigration policy is favorable, Canada does not allow anyone interested
to settle on its territory. Indeed, the number of applications greatly exceeds the
possibilities of acceptance, since the country must be able to absorb and promote the
integration of a good number of new inhabitants each year.

It is for this reason that selection grids have been developed. Thus, the candidates are
chosen according to a set of criteria, corresponding to the needs of the country. These
selection grids, as we will see in detail later, have the particularity of being clear,
objective and above all, of applying in the same way to all candidates, regardless of

5
their country of origin. Indeed, in its Immigration Act, Canada guarantees to persons
seeking permanent admission to the country the objective processing of their
application, in accordance with the provisions of the Canadian Charter of Rights and
Freedoms.
There are two different laws that govern the selection of immigrants to Canada. Under
an agreement with the federal government, the province of Quebec was able to
develop its own law, as well as its own selection criteria, for immigrants destined for
its territory.

For the rest of the country, federal la w applies. It is therefore the candidate's intended
place of residence that will determine the selection grid that will apply to their file.

The selection criteria and their weighting are different from one law to another. It is
therefore not uncommon for a candidate to have a positive file under Quebec law,
while his file is negative under federal law and vice versa.

In addition, each of the two laws allows the candidate to choose the category under
which he wishes to be evaluated. The applicant is also free to determine who, husband
or wife, will act as principal applicant.
Hence the importance of the preliminary report that we write for each potential
candidate since it takes all this data into account.

Eligibility conditions
Note that there are three essential eligibility conditions which, if not met, will cause
the rejection of the candidate's immigration file, regardless of the excellent score
obtained under the selection grids:
1. Record Criminal record:
Any criminal record leads to a systematic refusal of the immigration application.
There are certain nuances if the offenses go back more than 5 years or if the
offenses are punishable by way of summary proceedings. By explaining the case in
detail in the questionnaire for report, we will be able to assess the cases accurately
taking into account these nuances.
2. State of health:
The candidate, as well as his dependents, must not suffer from any serious or
contagious disease. A medical examination is required on this subject after
acceptance of the file. Doubts about this or that disease? By explaining the case in
detail in the report questionnaire, we can assess the situation or refer you to a
licensed physician before your procedure begins.

6
3. Living expenses:
The candidate must arrive in Canada with a sum of money allowing him to meet
his needs, as well as those of his dependents, during the first 3 or 6 months of his
installation. This sum varies according to the number of dependents, as well as the
intended place of residence (the report that we give to our clients indicates the
exact sum required).
4. Government fees
a. Government fees for immigration applications are not the same for Quebec and
for Canada. Indeed, the fees required by the Canadian government are always
payable, regardless of the intended place of residence (Quebec or other), while
the fees required by the Quebec government are only payable for applications
whose intended place of residence is located in Quebec.

Thus, for an application destined for Quebec, you will have to pay the Quebec
government fees when the application is submitted and, after acceptance, pay
the application processing and landing fees to the Canadian government. Please
note that business class fees are slightly higher.
b. Canadian government fees:
Non-refundable fees payable when the application is submitted: $825 per adult
and $225.00 per child under nineteen.
c. Landing fee: Fee payable after acceptance: $500 per adult and no fee for
children.
5. Info-Immigration
Did you know that both the Quebec law and the Canadian law allow the candidate
to choose the best category applicable to his situation? There are 3 categories and 4
different sub-categories. We make this choice with you before submitting your
application.

Do you know that the laws of Quebec and Canada allow the candidate to choose
the profession that will benefit him the most among all those he has occupied
during his professional career? We make this choice with you before submitting
your application.

Did you know that to immigrate to Quebec or Canada you must have a sum of
money to meet your needs during the first months of your arrival? This minimum
amount varies according to the jurisdiction (Quebec or federal), the region of
settlement and the number of dependents. Your report will establish the necessary
amounts applicable to your situation.

Did you know that the only disqualifying factors for an application intended for

7
Quebec are the absence of a high school diploma and/or the fact of not having the
minimum amount required to ensure your financial autonomy? Age, English or
celibacy are therefore not disqualifying factors.

Did you know that if you are an engineer or a member of a profession, an


equivalence procedure may be required before submitting your official
immigration application? We take care of it for you.

Do you know that, through us, you avoid the pre-selection stage required by the
authorities? Indeed, we can go directly to the filing of your official request. You
save months on the duration of your immigration procedure.

Do you know that we have established our fees so that no financial compromise
affects the processing of files? We are however among the cheapest!

Do you know that the vast majority of people who immigrate to Canada have
never been here and have no family here? They come to work there and settle there
permanently. We provide installation guides for most parts of the country.

Did you know that in the event of a refusal, you have a very short time to contest
the decision and request a review? Through us, our lawyers deal with it by
invoking relevant legal arguments. No additional fees are required.

Do you know that case law has authorized the splitting of the tasks of a profession
in order to determine others, inherent or included, which would allow the
candidate to be accepted? We determine these professions from your file before
submitting your application.

Do you know that it was following the presentation to the National Assembly of
Quebec of a brief in parliamentary committee by the leaders of ACCESS
CANADA that the long delays for the Maghreb, then in force, were denounced by
the media and that this resulted in the minister's undertaking to correct the
situation?

Did you know that the selection of immigrants by Quebec and by Canada is done
by a system of points awarded on objective factors? Often, a few tips can improve
or make a case positive. We give you all this advice before submitting your
application.

Did you know that to be accepted as an immigrant to Quebec, a single candidate


must obtain 59 points out of 114 or, if married, 68 out of 132? For Canada, a
married or unmarried candidate must obtain 67 points out of 110. Your report will
establish the total, before possible improvements, for each of the Laws as well as

8
all the relevant advice to increase the score of your file.

Do you know that outside Quebec, there are economically prosperous francophone
regions that are looking for immigrants? This is an interesting alternative to better
choose your place of installation. We provide all the information and
documentation required in this regard.
Did you know that since the implementation in March 2012 of the selection based
on the area of training, the Quebec Ministry of Immigration has returned nearly
10,000 files to their sender? Nothing beats an experienced firm.
Do you know that given the number of files that Quebec receives; the decision was
made to return to the sender any file deemed incomplete? This return is made by
ordinary mail from Canada to the country of origin despite all the risks of loss of
important documents. With us, all your mail arrives in Canada!

6. Federal selection: category, threshold, criteria and points awarded


The system is simple. The law establishes categories and subcategories of
immigrants, each with its own selection criteria.

Each of these criteria makes it possible to obtain points objectively, in relation to


specific situations. When the criteria are applied to a candidate, he receives the
points that correspond to his situation.

The evaluation of all these criteria makes it possible to obtain a total. If this total
exceeds the minimum threshold provided for the candidate's category, the
candidate is accepted. If the total is not sufficient, it will be refused.

Categories and thresholds to be reached


Canadian law determines 5 categories and subcategories of immigrants, each with
different point thresholds to reach:

1. Skilled workers:
These are people who want to settle permanently in Canada to work, but who do not
have no family in the country. These candidates must obtain 67 points out of a
potential of 100 points. The criterion of demand in the profession is no longer
decisive.
If so, then there is a second assessment we do against the Express Entry program
selection grid. This grid makes it possible to obtain a total. If your total offers
possibilities, then we must have your diploma assessed by an accredited Canadian body

9
and you must pass the language tests required by the federal government. For the
Federal it is the TEF or the IELTS (also valid for Quebec) which are to be passed for
the 4 skills: Comprehension, Speaking, Writing and Reading. Once this is done, we
submit your profile and wait for an extraction of candidates to be favorable to you.
Since June 2017, this program has been modified for the benefit of French speakers.
Thus, a person with a perfect command of French, having a good diploma and aged
between 18 and 36 could have every chance in this selection sub-grid evaluated on 1200
points.
The Ministry of Immigration then carries out monthly extractions for several thousand
files each time. According to file extractions for the last 6 months of 2017, you need to
obtain nearly 435 points to be selected. Each profile is obviously different but your
initial report will contain the analysis of this selection sub-grid and the number of points
at which you arrive. You will thus know precisely your chances of acceptance under
this program.
A file submitted under this program remains in the Department's file bank for one (1)
year and it should be noted that federal government fees will only be payable if the file
is selected.
When a candidate is selected, he must then provide the requested documents within 60
days and then undergo his medical examinations and security screening.
2. Assisted Relatives:
These applicants are in the same situation as independent immigrants, but have a close
relative living in Canada. They must get 67 points out of a potential 100 points.
3. Self-employed:
These people will come to Canada to make a significant contribution to cultural,
sporting or artistic life, or they may also be cases of industrialized farmers.
4. Entrepreneurs:
These are candidates wishing to settle in Canada to create or buy a business or a
business employing approximately two employees, other than themselves and their
dependents. A minimum asset of $300,000.00 is required. This type of permanent
resident visa is conditional on the completion of the business project within a
given period of time.
5. Investors:
These candidates will come to invest in Canada, passively, which implies that they
will have neither a business project to present nor a company to create. This
subcategory allows for the simplest acceptance of all. To enter this category, a
candidate must hold, and not invest, assets greater than C$800,000 and have 3 years of
management experience, either on their own account or as an executive.

Criteria
10
(applicable for the sub-category of skilled immigrant workers and assisted parents):

The criteria and their maximum weighting are listed below. You will notice that there
is only one eliminating factor, experience, which must be at least one year. All other
criteria are not eliminatory. That is why, for example, immigrants can arrive in
Canada without speaking English or French, if they obtain their points through the
other criteria. It should be noted that unlike the following Quebec evaluation grid, the
federal government evaluates single and married people in the same way:

1. Education on 25 points: This is the educational level reached by the candidate. All
types of degrees and academic diplomas are provided for in the regulations and each
of them receives a specific score.

2. Experience out of 25 points: This is the number of years of experience that the
candidate has accumulated in the profession mentioned, with a minimum level of 0, A
or B according to the National Classification of Professions.

3. Age out of 10 points: The candidate will receive 0 to 10 points for this criterion,
depending on whether or not they are in the age group considered ideal. It is not a
disqualifying factor. Thus, even if the candidate falls completely outside the age group
considered ideal, his candidacy may be accepted provided that he succeeds in
accumulating his points according to the other criteria.

4. Languages out of 20 points: Canada evaluates the country's two official languages
equally, namely French and English, regardless of the intended place of residence.
Both languages are therefore treated on an equal footing. The candidate will only
indicate the language with which he feels most comfortable and it is the latter which
will serve as the basis for the evaluation of his linguistic knowledge.

5. Reserved professions with validation on 10 points: These are the rare cases
where the foreign candidate holds an assured job, validated by the Canadian
government authorities.

6. Adaptability on 10 points: It is above all candidates who have worked or studied


in Canada who will be favored. The following criteria are taken into account: spouse's
studies, previous studies in Canada, previous work in Canada, a job offer in Canada,
having parents in Canada.

1. Quebec selection: category, threshold, criteria and points awarded

11
The system is based on the same principle as at the federal level. The law determines
categories and sub-categories of immigrants, each including selection criteria. The
criteria may vary and the points thresholds to be reached are different. For Quebec, the
eliminatory criterion concerns certain types of employment.

Categories and thresholds to be reached


Quebec law determines 4 major sub-categories of immigrants, namely:

1. Skilled workers: These candidates come to Quebec to live and work there. They
must obtain, if they are single, 50 points out of 99 and, if they are married, 59 points
out of 116, since the characteristics of the spouse are evaluated. So, there is no
advantage or disadvantage of being married or single. Candidates with close relatives
in Quebec are evaluated according to the same criteria as independents.

2. Self-employed: These candidates will come to Quebec with the aim of creating
their own job in their trade or profession. They must obtain 44 points out of 81 if they
are single or 51 out of 93 if they are married and must submit a detailed business plan.

3. Entrepreneurs: These candidates will come to Quebec to create or buy a business


or a business with approximately two employees, other than themselves or their
dependents. They must obtain 60 points out of a potential of 110, whether they are
married or single, and must submit a precise and detailed business plan, which they
must explain and justify, according to the Quebec market. The sum of money that the
candidates will bring with them must be sufficient for the realization of their business
project.

4. Investors: These applicants must score 40 points out of 92, regardless of whether
they are married or not. All of their assets (and not the investment) are over
$1,600,000 and they will invest in Quebec passively (without a business to create and
a business project to justify). Through us, it is possible to proceed with a minimum
down payment. We provide, if necessary, more details on this category to people who
request it by fax or telephone.

The criteria and their maximum weighting are as follows:


1. The training, assessed on 26 points, is divided into two sections. The first assesses
the level of the highest diploma obtained out of a maximum of 14 points. The second
section makes it possible to receive a maximum of 12 points if the training completed
by the candidate is found on the list of privileged training enacted by the government.
As the designation of the training varies between Quebec studies and studies from
other countries, an in-depth analysis must be done here.

2. The experience, evaluated on 8 points, must have been acquired within the
framework of an eligible job. It should however be noted that in some cases we can

12
add all the internships and work experiences while in others we must limit ourselves
to very specific periods, certain internships can also be excluded.

3. Age, evaluated out of 16 points, is a non-eliminating criterion which awards anyone


between 18 and 35 the maximum number of points. For those under 18 and over 35,
the number of points fluctuates downward. On the other hand, we repeat that this
factor is not eliminatory and that good marks acquired in the other criteria can
compensate for a poor result in this one.

4. Languages are assessed on a maximum of 22 points including 16 for French and 6


for English.

5. The candidate's financial autonomy, assessed on only 1 point, is one of the most
important criteria of the entire selection grid since it is eliminatory. In fact, if the
amount declared by the candidate is not sufficient in relation to the minimum set by
the government or if the proof of assets is not satisfactory, the candidate's application
will be automatically rejected even if the whole of his record is excellent. Note that
this amount varies according to the number of dependents and their age.

6. The presence of children is evaluated on a maximum of 8 points. The number of


points varies according to the number of children and the age of each of them.

7. The presence of a relative in Québec is assessed on a maximum of 3 points,


depending on the degree of the relationship. In the old rules, friends brought points,
this is no longer the case today. This change dates from October 2006.

8. The purpose of the interview is to establish the candidate's adaptability based on


his personal qualities, his motivation and his knowledge of Quebec,

9. A minimum stay of the candidate in Quebec, assessed on a maximum of 5 points


depending on the type of trip and length of stay.

10. The characteristics of the candidate's spouse is the last criterion of the selection
grid. Out of a maximum of 17 points, it evaluates the spouse's level of French, his
diplomas and his age. For business people (self-employed workers, entrepreneurs and
investors),

11. Validated job offers: Up to 10 points are awarded for this criterion which,
however, affects a very small proportion of candidates.

13
OUR general PROCEDURE

Once the evaluation form has been completed by the candidate via one of the links on
the site go-immigration.com, we assess their profile according to the immigration
programs that are in force in order to determine their eligibility for immigration to one
of our destination countries.
We call the candidate for additional information and to inform him of his eligibility.

If the candidate is eligible, we invite him for a physical or telephone interview with the
consultant, after registration.

At the end of the interview, the candidate will have to make the choice that suits him as
to the immigration program to start.
Finally, the contract will be signed between the firm and the candidate, and the actual
procedure can therefore begin.

14
CHAPTER 2: INTERNSHIP

In this chapter, the different phases of progression of the internship and the impact of
this internship on the training will be presented. Working hours during the internship
were from 9am to 3pm Mondays to Fridays.
2.1 Welcome and Training
We w welcomed and oriented by Mme. OBAME William. They told us what was
required from us by the end of the internship.
In some few days, about a week, we got how the company works and how does each
post interact with the other. Understanding the company was very necessary since we
had to build a software to automate some tasks carried out in the company.
The internship ran 9 hours per days from 8am to 5pm over a period of 2 months from
Monday to Friday. Period during which I was able to acquire more knowledge and apply
on the field all what I got in school.
2.2 Presentation of the IT department
2.2.1 Missions
The IT department as part of its missions is full of many attributes and activities that
have the objectives of:
• Promote and restore the image of Go Immigration;
• Manage IT systems
• Develop and operate postal networks and services
• Guarantee the universal postal service.
2.2.2 Activities of the IT Department
The Go Immigration company is one with a small IT department, not many computers
and equipment recorded. At the IT department we work on client’s files as follows:
- Applying for visa
- Scholarship application
- House and schools searching and much more…
2.2.3 Tasks performed
As aim for this internship we had to automate many of the previous listed tasks. This
said aim included automates emails depending on the customers status, a user account
to help him follow his progress on his own, filtering customers in the database using
different or several fields like name, date of registration, newest, type of customer (On
our customer type we had students, workers and tourist) and customer registration.
Filtering our customers email so as to remove spam and sort out the content, in addition
to all that is the availability of the platform on all platforms say mobile, desktop through
the web interface.

15
2.3 Training Program
The training at Go Immigration was interesting and educative. Below I’ll state the
internship progress for each week. This includes the following:
➢ Week One (1): from 2nd to 6th August
- Getting use to Go Immigration environment and office.
- Meeting the chief of services and CEO.
- Presentation of the room(workshop) designated to intern’s work.
- Impregnation in security, quality and environment.
- The first week of our internship has allowed impregnating me to the different
activities.
- During this week, we were presented to the office personalities and we had talks
about different things done.
➢ Week Two (2): from 09th to the 13th of August
This week has been the starting point of the internship practical work after the
knowledge gained from the first week with the presentation of Go Immigration staff.
During this period, I was given a mentor for better guidance on the field and of
course and explanation of the task which by then I was still to make myself
comfortable to the environment. I collected enough data from their archives both
physical and numerical. What followed was analysis of this data and trying to guess
the path or route the customers followed over the past five (5) years.
➢ Week Three (3): from 16th to the 20th of August
This week we started working on the databases and logic of entities interaction for
the Web application development for the management customer service at Go
Immigration. We tough about different ways we can implement the structure and
path in which customers of Go Immigration move, from the opening of their files
through their flight to their reception and living abroad. During this week I made
use of the OOP (Object Oriented Programming) concepts I learned during my stay
on campus, some of which included inheritance, encapsulation, polymorphism,
aggregation and much more.
➢ Week Four (4): from 23th to the 27th of August
Here we enter into the fourth week of me as an intern at Go Immigration. We got to
the point of implementation of the application. Including the following: - Creation
of a use case and class diagram - State diagram - Decision for the appropriate
framework and technologies to use for the production, then we used python, HTML,
CSS, SASS, JavaScript followed by Django and Vue.js as frameworks then
PyCharm and visual studio code as IDE (Integrated development environment).
Sone of the UML (Unified Modelling Language) exiting diagrams where drawn
during this week. Sone of these diagrams are seen below:

16
Figure 1: Working on the class diagram on draw.io

Figure 2: Class diagram

17
➢ Week Five (5): from 30th of August to the 03rd of September
Front end development of the web application using HTML (Hypertext Markup
Language) and CSS together with SASS and JavaScript. I designed about 17 full
Django templates for the dynamic content display directly from the database. My
Django templates folder, as it is in directory.

Figure 3: My Working File Skeleton

Figure 4: mobile view of the login and registration page

➢ Week Six (6): from 06th to the 10th of September


Django is one of the best, easiest, beautiful, fantabulous and amazing web framework
written in python. For this task I precisely used the Django version 3.27(Latest

18
version existing by the time this report was written), python 3.9 and PyCharm
professional as main IDE.

Django models(database) making! Django models is a simple way for us to write SQL
statement to our database which instantly generates database tables with every proper
configuration done by default by the Django framework.

Figure 5: Opened PyCharm IDE

➢ Week Seven (7): from 13th to the 17th of September

Verifications and tests were made on the finished product. I used tests and try-except
functions to limit and reduce errors, together with managing server errors and unknown
URLS forwarding to a 404 Page. That took a while because I had to make some few
researches on the way to do. My references and work came from Stack Overflow
website which was of a great help.

Figure 6: An example of errors to be managed in Django (The default Django framework 404 page)

19
➢ Week Eight (8): from 20th to the 24th of September
This week was for me to deploy the full functional app on Heroku website which
is one of the best websites when it comes to dynamic web applications deployment in
languages like: JavaScript, Java, Python and many others on which I have a reduce
knowledge.

Figure 7: Django dashboard of Heroku with the app deployed

➢ Week Nine (9): from 27th September to the 01st of October


About this nineth week I had to write a report on the app I made and presentation to my
mentor and director for filling of evaluation form and signing of all the requirements
for complete internship approval. Later applied for an attestation of end of internship
and was granted one. That finally brought an end to my internship.

20
Figure 8: Search Result interface for the Goim Django Application

Figure 9: Event calendar showing some booked meetings

21
Figure 10: Sending emails to all customers

Figure 11: Sending an email to a particular customer

22
Figure 12: User profile

Figure 13: Setting up an event

23
Figure 14: customer registration process

Figure 15: Recorded customers in the database

24
Figure 16: Company user dashboard with customers variation

Figure 17: Registration Page

25
Figure 18: Home page

Figure 19: All customers in records printed

26
CHAPTER 3: LEARNING OUTCOMES

3.1 Personal experiences


The internship done at Go Immigration has allowed me to understand that the good
functioning of an enterprise dependent on its organization, the respect of hours of work, and
its internal code. The enterprise being a lucrative unit with specifics goals and in the optic to
increase its production and its performances while satisfying the clientele, the employed have
to respect certain numbers of rules among which: schedules of work, the team work, instruction
of work of safety rules to avoid dismissal incidences and any other.

3.2 Professional’s experiences


The sum of experiences and undertaken tasks done at Go Immigration has edified me on
realities of the enterprise and has allowed me to make the link between the theory learnt to
school and the practice.
The tasks we had during our workshops has been of great help to go through this internship
work.

27
CHAPTER 4: RECOMMANDATION

4.1 At the level of Go Immigration


- The organization of advertising campaigns will considerably improve the image of
mark of the enterprise.
- The attribution of special bonuses to the employees could have booster their morale
and to encourage them to more concentrate in the exercise of their functions. We
can have by example the price of the best employee or intern.
- The placement at the disposal of employees of appropriate work tools and safety
tools will clearly improve the income and quality of pieces produced by the
enterprise.
- The setting-up of an office of study will be able to facilitate the study and the
conception of new product to commercialize.
- Provide a professional formation to all workers of the company.
- Allow employees to do recyclable internships.
4.2 At the level of NAHPI my school at University of Bamenda.
NAHPI should endeavor to:
- Sign partnerships with enterprises to facilitate the obtainment of academic internship
by the students.
- Improve his scholastic programs considering the fact we are facing a fast evolution
of technologies.
- Build and equip a workshop with adequate materials to allow his students to master
new technologies and put the theoretical knowhow in practice

28
CONCLUSION

This report presents on one hand the activities carried out during my internship at G
Immigration and on the other hand the solution to problems of repetitive tasks carried
out which was the software. The internship undertaken at Go Immigration has allowed
me to impregnate with realities of the enterprise.
1.3 I Liked or Disliked
Likes
- The fact that when the proprietor gives orders to the employees, the orders are
strictly respected.
- With the payment of workers, the proprietor does that on time. This therefore
encourage workers not to quit their jobs.
Disliked
- I disliked the punctuality of some workers; I think some feel too comfortable.

29
SECTION C:
YEAR THREE
REPUBLIC OF CAMEROON REPUBLIQUE DU CAMEROUN
Peace – work - fatherland Paix – travail - patrie
0 UNIVERSITY OF BAMENDA
THE L’UNIVERSITE DE BAMENDA
NATIONAL HIGHER POLYTECHNIC INSTITUTE SUPERIEUR DE
INSTITUTE POLYTECHNIQUE DE BAMENDA
OSSCAMEROON OSSCAMEROON

DEPARTMENT: COMPUTER ENGINEERING


LEVEL 400

Internship made at Go Immigration office at Yaoundé from 1st March to


the 5th September

Presented by: YONKEU KWEYA STEVE JUNIOR


Registration Number: UBa19E0217

Supervisor: Mr. Boris MBARGA


CEO of OSS CAMEROON

1
TABLE OF CONTENTS

DEDICATION................................................................................................................ 2
ACKNOWLEDGEMENT .............................................................................................. 3
TABLE OF FIGURES.................................................................................................... 4
EXECUTIVE SUMMARY ............................................................................................ 5
CHAPTER 1: OVERVIEW OF ORGANISATION ...................................................... 1
INTRODUCTION ...................................................................................................... 1
VISION ....................................................................................................................... 1
GOALS ....................................................................................................................... 1
LONG TERM MEASURABLE GOALS .................................................................. 2
CHAPTER 2: INTERNSHIP ......................................................................................... 3
2.1. OBJECTIVES ................................................................................................... 3
2.2. TOOLS AND TECHNOLOGIES..................................................................... 3
2.3. PROJECTS WE WORKED ON ....................................................................... 6
2.4. WELCOME AND TRAINING ........................................................................ 9
2.5. TRAINING PROGRAM .................................................................................. 9
CHAPTER 3: LEARNING OUTCOMES ................................................................... 29
3.1. PERSONAL EXPERIENCES ........................................................................ 29
3.2. PROFESSIONAL’S EXPERIENCES ............................................................ 29
CHAPTER 4: RECOMMANDATION ........................................................................ 30
4.1. AT THE LEVEL OF OSS CAMEROON ...................................................... 30
4.2. AT THE LEVEL OF NAHPI MY SCHOOL AT UNIVERSITY OF
BAMENDA. ............................................................................................................. 30
APPENDIX .................................................................................................................. 31
CONCLUSION ............................................................................................................ 34

1
DEDICATION

I dedicate this first to the God almighty for always being by my side, to my father
for the financial and moral support, to my mother, friends and rest of the family.

2
ACKNOWLEDGEMENT

It is popularly said that one cannot tie a bundle. A report of this nature cannot be
realised by myself but with the assistance of others.
It will be very wrong to be ungrateful about all the efforts that people around me
put in support given me throughout my internship. This academic work could not
be done solely by personal efforts. For these reasons, my sincere gratitude goes
to the following personalities who have been a moral or financial assistance
towards the success of this academic internship:
- The almighty God who gave me strength and courage
- The head of department of computer engineering of NAHPI of the university
of Bamenda Dr. NDUKUM Pascaline
- The CEO of OSS CAMEROON for accepting me in the structure.

3
TABLE OF FIGURES
Figure 1: illustration of points having power failure ............................................ 8
Figure 2: OSS Cameroon building face ................................................................ 9
Figure 3: installing of NodeJs ............................................................................. 11
Figure 4: Downloading from the apt direrctory .................................................. 11
Figure 5: Checking the node version .................................................................. 12
Figure 6: Final view of the podcast..................................................................... 12
Figure 7: code inspection with the tablet device resolution .............................. 31
Figure 8: Search bar under development ............................................................ 31
Figure 9: podcast controller implementation ...................................................... 31
Figure 10: Signaling a power failure through OnACut ...................................... 32
Figure 11: Power failure areas across the Cameroon Teritory ........................... 32
Figure 12: Display of recent power failures in Cameroon ................................. 33
Figure 13: Language translation features implemented successfully ................. 33

4
EXECUTIVE SUMMARY

The internship was carried out at OSS CAMEROON from 1 st March to 31st
August 2022. My internship focus was on the different ways of building softwares
and focusing on the help it can provide to society. In short, I worked on the use
of open source software to solve problems faced by the community.

5
CHAPTER 1: OVERVIEW OF ORGANISATION

INTRODUCTION
OSS Cameroon in its full meaning Open Source Society of Cameroon is an
NGO (Non-Governmental Organisation), a non-profit organisation and an open
source community driven by Cameroonian developers. It was founded in 2018
by five (5) Cameroonians residing in and out of Cameroon. Over the years it has
become a community of over 600 members (Cameroonian developers) who
have come together to help each other excel in their careers and build solutions
to help the community.
Their main goal is to improve the lives of individual members of the society by
reinforcing Cameroonian developers to take up the habit of contributing to
open-source projects and technologies, especially projects with the potential to
enhance the quality of life for our local community. They also promote
mentorship, collaboration and knowledge sharing and ensure a joyful
environment for developers to put their best skill in the service of the society.

VISION
Most of the fields of activity contain a set of problems which can mainly be
solved by Information and Communication Technologies. Our country is
developing, it has a strong need for skills in technical sectors, particularly in
ICT. We want to encourage young people to choose this area of specialisation to
grow the digital ecosystem; popularise tech culture among the population
because the more we will offer solutions to problems encountered daily by the
population, numerous will be those who will develop this attitude to think
digital. Through this initiative, we want to promote the talent and know-how of
Cameroonians by using our technical knowledge to bring solutions to problems
found in our society.

GOALS
➢ Using our technical skills to create applications that solve a specific need in
our society
➢ Encourage collaboration between developers and also encourage the work in
a team.
➢ Share our knowledge because being in a domain that evolves very quickly,
we can learn from everybody regardless of skill level.

1
➢ Mentor / Assist less experienced developers who need to be followed in the
realisation of a project.
➢ Create a friendly environment for developers to progress and work on a
project they are passionate about.
➢ Provide financial assistance to developers who want to improve but lack the
means to afford a laptop, internet connection, working environment, paid
tutorials.

LONG TERM MEASURABLE GOALS


We have been repeatedly asked the question of what are our measurable long-
term goals. In 1 or 2 years for example, what are the elements that will allow us
to know if we are getting closer to our objectives? We found it important to
share them with you:
➢ Increased number of community members on Telegram and Twitter
➢ More presence during live coding sessions
➢ Uses of the applications we have developed by day-to-day users
➢ Democratise participation in the development of open-source projects
➢ Developers who tell us they have gained in skills and are more confident in
their ability to lead a project from end to end.

2
CHAPTER 2: INTERNSHIP

In this chapter, the different phases of progression of the internship and the impact
of this internship on the training will be presented. During our internship we had
our working hours scheduled from 8am to 5pm with a break of an hour.

2.1. OBJECTIVES
The main objective of my internship was to gain practical experience in web
development using ReactJS and to learn about software development best
practices. I also set specific goals for myself, such as:

Improving my understanding of ReactJS and web development concepts


Gaining hands-on experience building and testing web applications using
ReactJS
Collaborating with a team of developers to contribute to the development of new
features and improvements for the company's web application
Learning how to troubleshoot and fix bugs, and optimise the performance and
usability of the application
To achieve these objectives, I worked on a variety of projects and tasks during
the internship, both independently and as part of a team. I also received guidance
and feedback from my supervisor and colleagues, and participated in regular
meetings and training sessions to learn about new technologies and best practices.

Throughout the internship, I was able to make progress towards achieving my


objectives and I am confident that I have gained valuable skills and knowledge
that will be useful in my future career. In the following sections of this report, I
will describe my responsibilities and tasks, the tools and technologies I used, and
the skills and knowledge I gained in more detail.

2.2. TOOLS AND TECHNOLOGIES


During my internship at OSS Cameroon, I had the opportunity to work with a
variety of tools and technologies that are essential to web development using
ReactJS. These tools and technologies were instrumental in helping me to build
and test web applications, and I gained valuable hands-on experience using them.
3
ReactJS: ReactJS is a popular JavaScript library that is widely used for building
user interfaces for web applications. It allows developers to create reusable
components that can be easily rendered and updated based on changing data,
making it an efficient and powerful tool for building complex and interactive user
interfaces. I used ReactJS to build new features and improvements for OSS
Cameroon's web application, and I learned how to use its features and capabilities
to build efficient and user-friendly interfaces. For example, I learned how to use
ReactJS's state management and lifecycle methods to build complex components
that could handle data and user interactions effectively. I also learned how to use
ReactJS's virtual DOM to optimise the performance of the application by
reducing the number of DOM updates that were required.

Node.js: Node.js is a popular JavaScript runtime that allows developers to build


server-side applications using JavaScript. It is known for its high performance
and scalability, making it a powerful tool for building web applications that need
to handle large amounts of data and traffic. I used Node.js to build a REST API
for OSS Cameroon's web application, which allowed me to connect the
application to a database and manage data in real-time. This was my first time
using Node.js, and I found it to be a powerful and flexible tool for building server-
side applications. I learned how to use Node.js's built-in modules, such as the
HTTP and File System modules, to build a simple but effective API. I also learned
how to use npm, the Node.js package manager, to install and manage packages
and dependencies for my application.

Git: Git is a widely used version control system that allows developers to track
changes to their code and collaborate with others. It is an essential tool for any
software development project, as it allows developers to track their code changes
and collaborate with others in a flexible and efficient way. I used Git to manage
my code and collaborate with other developers on projects and tasks at OSS
Cameroon. I learned how to use Git's basic commands, such as commit, push, and
pull, to track and share my code.

Tailwind CSS: Tailwind CSS is a popular CSS framework that provides a set of
low-level utility classes for building responsive and user-friendly web
applications. Unlike other CSS frameworks that provide a set of pre-designed
components and styles, Tailwind CSS allows developers to build custom styles
4
and layouts using its utility classes. I used Tailwind CSS to style and layout the
components of OSS Cameroon's web application, and I learned how to use its
features, such as responsive design and text and colour utilities, to build
responsive and mobile-friendly interfaces. I found Tailwind CSS to be a flexible
and efficient tool for styling and layout, and I enjoyed the freedom it gave me to
build custom styles and layouts.

Jest: Jest is a popular JavaScript testing framework that allows developers to test
their code and ensure that it is working correctly. It provides a variety of features,
such as snapshot testing and mocking, that make it easy to write and run tests for
complex code. I used Jest to write and run tests for the components and functions
of OSS Cameroon's web application, and I learned how to use its features to build
efficient and reliable tests. I found Jest to be a powerful and user-friendly tool for
testing my code, and I enjoyed the confidence it gave me in the quality and
reliability of my code.

Using these tools and technologies was a challenging but rewarding experience.
I faced several challenges while using ReactJS and other technologies, such as
understanding new concepts and debugging my code. However, I was able to
overcome these challenges through persistence and by seeking help from my
supervisor and colleagues. I also found it helpful to use online resources and
documentation to learn more about the tools and technologies I was using.

One of the most challenging and rewarding aspects of using these tools and
technologies was learning how to work with a team of developers. I had to learn
how to communicate effectively with my team and to collaborate on projects and
tasks. I also had to learn how to manage my code and work with version control
systems like Git. These skills were valuable to me, as they will be important in
my future career as a software developer.

In addition to learning about the tools and technologies I used, I also gained
valuable skills in problem-solving and critical thinking. I learned how to
troubleshoot and debug my code, and how to think creatively and analytically to
solve complex problems. These skills will be useful in any software development
project, and I believe that they will be valuable assets in my future career.

5
Overall, my experience using these tools and technologies during my internship
at OSS Cameroon was valuable and rewarding. I was able to use them to build
and test web applications, and I learned how to use them effectively through
hands-on experience. I am confident that the skills and knowledge I gained will
be useful in my future career as a software developer. In the following sections
of this report, I will describe the skills and knowledge I gained in more detail and
how they will be useful in my future career.

In addition to the tools and technologies I mentioned earlier, I also used other
libraries and frameworks to build and style my applications. Some of the libraries
and frameworks I used include Axios, a JavaScript library for making HTTP
requests, and other utility libraries and frameworks such as Lodash and
Moment.js. I learned how to use these libraries and frameworks effectively
through hands-on experience and guidance from my supervisor and colleagues,
and I found them to be useful tools in my work as a ReactJS developer.
Overall, my experience using these tools and technologies during my internship
at OSS Cameroon was valuable and rewarding. I gained valuable hands-on
experience using them to build and test web applications, and I learned how to
use them effectively through guidance from my supervisor and colleagues. I am
confident that the skills and knowledge I gained will be useful in my future career
as a software developer. In the following sections of this report, I will describe
the skills and knowledge I gained in more detail and how they will be useful in
my future career.

2.3. PROJECTS WE WORKED ON

➢ OnACut(https://github.com/osscameroon/onacut) is a web application


that helps users to identify and track shortages in essential services, such
as internet connectivity, water supplies, and electricity, in various locations
around Cameroon. The website is designed to be a useful resource for
individuals and businesses that rely on these services and need to know
when and where shortages may occur.
The website is based on data obtained from scraping the ENEO website,
which is a source of alert reports for work (chantier) related to power
outages and other issues. This data is used to create a map of the affected
areas and to provide information about the nature and duration of the

6
shortages. Users can access the website to view the map and to get updates
about ongoing shortages.

In addition to tracking shortages in essential services, the OnACut website


also provides other useful features and resources for users. For example, it
may include information about alternative sources of power, water, or
internet connectivity that are available during shortages, as well as tips for
conserving resources and minimising the impact of shortages. It may also
provide a platform for users to report shortages and to share their
experiences and observations with others. Overall, the OnACut website is
intended to be a valuable resource for anyone who needs to stay informed
about shortages in essential services in Cameroon.

⚫ The OnACut website is designed to be user-friendly and easy to


use. It may include features such as a search function that allows
users to search for shortages by location or service, as well as a
notification system that alerts users to new or ongoing shortages.
⚫ The website may also include a feature that allows users to report
shortages or other issues related to essential services. This could be
useful for users who want to help improve the accuracy and
reliability of the data on the website, as well as for users who want
to alert others to issues that they may not be aware of.
⚫ In addition to tracking shortages in essential services, the OnACut
website may also provide information about other issues that may
affect the availability or reliability of these services. For example,
it may include data about natural disasters or other events that may
disrupt service, or about planned maintenance or construction work
that may affect service availability.
⚫ The OnACut website may be updated on a regular basis with new
data and information about shortages in essential services. It may
also include a history feature that allows users to view past
shortages and to see how long they lasted and how they affected
different areas. This could be useful for users who want to
understand trends or patterns in service availability.
⚫ The OnACut website may also include resources or links to other
useful information about essential services in Cameroon. For
example, it may provide contact information for service providers
or other authorities that users can contact in the event of a shortage
or other issue. It may also include tips or guidelines for conserving
resources or minimising the impact of shortages.

As for the technical aspect of ONACUT, it is made with a ReactJS


framework, as well a powerful CSS backbone as framework called

7
tailwindCSS all connected to a backend made with python programming
language and the Flask framework.

Figure 1: illustration of points having power failure

➢ OSS Podcasts(https://github.com/osscameroon/podcasts) is a web


application that allows users to access and listen to a wide range of
podcasts on various topics. The website is designed to be a convenient
and user-friendly platform for discovering and enjoying podcasts, and it
includes a variety of features and resources to make this easier.

Users of the OSS Podcasts website can browse a large selection of


podcasts by category, topic, or genre, and can use the website's search
function to find specific podcasts or episodes. The website may also
include a recommendation feature that suggests podcasts based on the
user's interests or previous listening history.

In addition to browsing and searching for podcasts, users of the OSS


Podcasts website can also create and manage their own playlist of
podcasts. This allows users to customise their listening experience and to
easily access their favourite podcasts and episodes.

Every Tuesday, we host DevStory(Developer’s Story) which is a live


podcast of Cameroonian developers that succeeded in the field. Some
newbies and other techies can be inspired and grow up their skills as well
as getting a source of motivation or a role model.

The OSS Podcasts website may also include a social feature that allows
users to share podcasts and episodes with their friends and followers, and
to discover podcasts recommended by others. Users may also be able to

8
leave ratings and reviews for podcasts, which can help other users
discover and decide which podcasts to listen to.

Overall, OSS Podcasts is a valuable resource for anyone who loves


podcasts and wants an easy and convenient way to access and enjoy
them. The website's wide selection of podcasts and user-friendly features
make it a great platform for discovering new podcasts and for finding
new favourites.

Figure 2: OSS Cameroon building face

2.4. WELCOME AND TRAINING


We were welcomed and presented to the members and different departments
(including the administration) a week before the internship.
In a few days, about a week, we got how the organisation works and how each
post interacts with the other. Understanding the organisation was very necessary
since we had to build a software to automate some tasks carried out in the
organisation.
The internship ran 9 hours per day from 8am to 5pm over a period of 6 months
from Monday to Friday. Period during which I was able to acquire more
knowledge and apply on the field all what I got in school and in addition develop
my network.

2.5. TRAINING PROGRAM


The training at OSS Cameroon was interesting and educational. Below I’ll state
the internship progress for each week. This includes the following:

9
➢ Week One (1): from 31st February to 04th March
● Set up development environment by installing necessary software, such as
Node.js and Git
● Learn the basics of ReactJS by completing a tutorial and reading through
documentation
● Familiarise myself with the company's web application and its codebase
by exploring the code and understanding its architecture
● Meet with my supervisor to discuss the project goals and objectives, as
well as my role and responsibilities as an intern

➢ Week Two (2): from 07th to the 11th of March


This week has been the starting point of the internship practical work after the
knowledge gained from the first week with the presentation of OSS Cameroon
members. During this period, I was given a mentor for better guidance on the
field and of course and explanation of the task which by then I was still to
make myself comfortable to the environment. Getting used to tools for open
source such as GitHub, Git and the extra tools I’m using such as ReactJS,
python, flask and more.

➢ Week Three (3): from 14th to the 18th of March


This week we had a briefing from the mentor on the project we had to
contribute to with respect to the internship period. We discussed different
ways in which we could build or develop the project and in conclusion we
chose to use the following:
⚫ ReactJs: one of the most popular javascript libraries. It was developed by
Facebook developers on May 29, 2013
⚫ Bootstrap: a CSS framework
⚫ GitHub: a code hosting platform for version control and collaboration. It
lets you and others work together on projects from anywhere. It will be
used for deployment services.
⚫ JSX: allows us to write HTML elements in JavaScript and place them in
the DOM without any createElement() and/or appendChild() methods. JSX
converts HTML tags into react elements. You are not required to use JSX,
but JSX makes it easier to write React applications.

➢ Week Four (4): from 21st to the 25th of March


10
During this week we installed the different dependencies and the project was
initialised and we started working on the code base. This was done using the
terminal.

⚫ Step 1 - Add Node.js ppa


The Node.js package is available in the LTS release and the current release.
It’s up to the user to select the version of Node that is required. Run the
following command to add the PPA to the Ubuntu system:

Figure 3: installing of NodeJs

⚫ Step 2 - Install Node.js on Ubuntu


My operating system used this internship was Ubuntu. Ubuntu is a Linux
distribution based on Debian and composed mostly of free and open-source
software. Ubuntu is officially released in three editions: Desktop, Server,
and Core for Internet of things devices and robots. All the editions can run
on the computer alone, or in a virtual machine.

Figure 4: Downloading from the apt direrctory

⚫ Step 3 - Checking/verifying if it’s install


After successfully adding the PPA to the system, execute the command
below to install Node on Ubuntu:

11
Figure 5: Checking the node version

After the proper installation of the nodeJS package, we verified that it and
moved to learning about Version Control System.

➢ Week Five (5): from 28th March to the 01st of April


This week, we started working on the implementation of the frontend of the
OSS Podcasts. The sketch below:

Figure 6: Final view of the podcast

12
For this week we had an existing code base of the previous version of the

podcast.
This code base was migrated into a .old folder and a new file structure
generated(initialise a react js project) from this using the react-create-app
command. The structure gotten was as shown below:

Above is the look of the project with respect to ReactJS structure. After this
we added the background colour gradient of the web app. Using special CSS
attributes and styling, we achieved the correct display as that of the design.
Aside from this we had some images to add at the level of the background
too.
We updated the documentation to the basic content to help other users clone
and make contributions to the project easily.
➢ Week Six (6): from 04th to the 08th of April
Checking on the stability of our progress and code review by other interns and
our project/internship mentor This includes the basic structure of the
functional components. Following this the configuration of the package.json
at the root of the project.
➢ Week Seven (7): from 11th to the 15th of April
13
ReactJS framework being a component oriented framework, we decided to
start this period by initiating the main App component, which contains all the
other components. From here we finally moved to the Header component
together with its style files. The header component is divided into the NavBar
items components(Items), a Logo Component, and a search component.

The Podcast items components were also added as a list display of the items
of the podcast. This was done using a map() function in JavaScript.
In JavaScript, the map() method is a higher-order function that allows you to
apply a function to each element of an array and return a new array with the
modified elements. The map() method is useful for transforming data in an
array, and is often used in conjunction with other functional programming
techniques.
Added tracks to the items of the list, as well from the JSON file. Some other
minor changes included the following:
⚫ Optimising the existing imports of components and dependencies of the
project.
⚫ Added some JQuery for state management in the app. This was for
dropdown effect of the header components
➢ Week Eight (8): from 18th to the 22nd of April
Review of progress of the work we did in the previous weeks.
⚫ Continue working on the main App component and the Header component,
including styling and layout using Tailwind CSS
⚫ Begin working on the Podcast details component, which will display more
detailed information about a specific podcast
⚫ Use React Router to add routing to the web platform, allowing users to
navigate between different pages and components
⚫ Use the React Context API to manage state and data flow in the web
platform, allowing components to access and update data in a consistent
and efficient way
14
⚫ Write tests for the components and features developed during the week,
using Jest and Enzyme
⚫ Collaborate with my team to review and discuss the progress of the project,
and seek feedback and guidance as needed
⚫ Use Git to manage my code and collaborate with other developers on the
project, including committing and pushing my changes to the repository.

➢ Week Night (9): from 25th to the 29th of April


⚫ Continue working on the Podcast details component, including
implementing a player for streaming podcasts and displaying metadata
about the podcast
⚫ Use Axios to make API calls to a server-side API to retrieve and update
data in real-time
⚫ Begin working on the Episode list component, which will display a list of
episodes for a specific podcast
⚫ Use the React Hooks API to manage state and lifecycle events in the web
platform, allowing components to be more functional and reusable

15
⚫ Refactor and optimise the codebase to improve performance and
maintainability, using techniques such as code splitting and lazy loading
⚫ Attend a workshop on advanced ReactJS techniques, learning about
topics such as server-side rendering and code splitting
⚫ Collaborate with my team to review and discuss the progress of the
project, and seek feedback and guidance as needed
⚫ Use Git to manage my code and collaborate with other developers on the
project, including committing and pushing my changes to the repository

During this week, we made significant progress on the OSS Podcasts web
platform. The development team was able to work at a fast pace, and we
were able to complete the implementation of the Podcast details component
and the Episode list component. We also used Axios to make API calls to
a server-side API, and we implemented the React Hooks API to manage
state and lifecycle events in the web platform. In addition, we attended a
workshop on advanced ReactJS techniques, and we worked with our team
to review and discuss the progress of the project.

Finally, at the end of this week, we were able to deploy the OSS Podcasts
web platform using GitHub Pages and GitHub LFS as storage. The web
platform is now deployed and viewable at
https://osscameroon.github.io/podcasts.

We are very proud of the work we have done during this internship, and
we believe that the OSS Podcasts web platform is a valuable resource for
anyone interested in discovering and listening to podcasts. We hope that
users will find the platform easy to use and that they will enjoy the wide
range of podcasts that are available.

In addition to the core features of the web platform, we also implemented


a number of additional features and enhancements that we believe will
make the user experience more enjoyable and efficient. For example, we
added pagination and filtering features to the Episode list component, and
we implemented authentication and authorization using Firebase. We also
added real-time database functionality using Firebase, which allows users
to store and retrieve data in the cloud.
Overall, we believe that the OSS Podcasts web platform is a well-designed
and reliable platform that will be of great value to users. We are grateful
for the opportunity to have worked on this project and we hope that it will
continue to be a success in the future.

➢ Week Ten (10): from 02nd to the 06th of May

16
⚫ Continue working on the Episode list component, including
implementing pagination and filtering features
⚫ Begin working on the User profile component, which will allow users to
create and manage their own profiles on the web platform
⚫ Refactor and optimise the codebase to improve performance and
maintainability, including cleaning up unnecessary code and removing
unwanted libraries
⚫ Use the React Context API to manage state and data flow in the web
platform, allowing components to access and update data in a consistent
and efficient way
⚫ Write tests for the components and features developed during the week,
using Jest and Enzyme
⚫ Collaborate with my team to review and discuss the progress of the
project, and seek feedback and guidance as needed
⚫ Use Git to manage my code and collaborate with other developers on the
project, including committing and pushing my changes to the repository.
During this week, we focused on refining and optimising the codebase of
the OSS Podcasts web platform. We worked on the Episode list
component, adding pagination and filtering features to improve the user
experience. We also began working on the User profile component, which
will allow users to create and manage their own profiles on the platform.

To improve the performance and maintainability of the codebase, we


conducted a thorough code review and refactored the code to follow a more
logical and efficient structure. This included cleaning up unnecessary code
and removing unwanted libraries, such as jQuery, that were no longer
needed since we were using ReactJS as our main framework.

We also used the React Context API to manage state and data flow in the
web platform, allowing components to access and update data in a
consistent and efficient way. We wrote tests for the components and
features developed during the week, using Jest and Enzyme, and we
collaborated with our team to review and discuss the progress of the
project. Finally, we used Git to manage our code and collaborate with other
developers on the project, including committing and pushing our changes
to the repository.

➢ Week Eleven (11): from 09th to the 13th of May


⚫ Continue working on the search feature for the web platform, including
testing and debugging any remaining issues
⚫ Use the React-Lodash library to optimise and improve the performance of
the web platform
17
⚫ Use the React-Helmet library to add metadata and SEO optimizations to
the web platform
⚫ Begin working on the dynamic player feature for the web platform, which
will allow users to play and pause podcasts as they listen
⚫ Write tests for the components and features developed during the week,
using Jest and Enzyme
⚫ Collaborate with my team to review and discuss the progress of the
project, and seek feedback and guidance as needed
⚫ Use Git to manage my code and collaborate with other developers on the
project, including committing and pushing my changes to the repository.

During this week, we focused on further improving and optimising the OSS
Podcasts web platform. We continued working on the search feature,
testing and debugging any remaining issues. We also used the React-
Lodash library to optimise and improve the performance of the web
platform, and we used the React-Helmet library to add metadata and SEO
optimizations to the web platform.

To enhance the listening experience for users, we began working on the


dynamic player feature, which will allow users to play and pause podcasts
as they listen. We wrote tests for the components and features developed
during the week, using Jest and Enzyme, and we collaborated with our
team to review and discuss the progress of the project. Finally, we used Git
to manage our code and collaborate with other developers on the project,
including committing and pushing our changes to the repository.

➢ Week Twelve (12): from 16th to 20th of May


⚫ Finish implementing the dynamic player feature for the web platform,
including debugging any remaining issues and adding volume control and
mute functionality to the player

18
⚫ Add previous and next buttons to the player, allowing users to easily
navigate between podcasts and episodes
⚫ Use the React-Media library to optimise the player for different media
formats and devices
⚫ Remove JQuery from the project and perform code cleanup, including
removing unnecessary files from version control (such as .idea, .ds_store,
and .vscode)
⚫ Collaborate with my team to review and discuss the progress of the
project, and seek feedback and guidance as needed.
During this week, we focused on completing the dynamic player feature
for the OSS Podcasts web platform. This included debugging any
remaining issues with the player functionality, as well as adding volume
control and mute functionality to the player. We also added previous and
next buttons to the player, allowing users to easily navigate between
podcasts and episodes.
To optimise the player for different media formats and devices, we used
the React-Media library. We removed JQuery from the project and
performed code cleanup, including removing unnecessary files from
version control. We collaborated with our team to review and discuss the
progress of the project, and sought feedback and guidance as needed.

➢ Week Thirteen (13): from 23rd to 27th of May


⚫ Finish implementing the dynamic player feature for the web platform,
including debugging any remaining issues and adding volume control and
mute functionality to the player
⚫ Add previous and next buttons to the player, allowing users to easily
navigate between podcasts and episodes
⚫ Use the React-Media library to optimise the player for different media
formats and devices
⚫ Remove JQuery from the project and perform code cleanup, including
removing unnecessary files from version control (such as .idea, .ds_store,
and .vscode)
⚫ Improve the responsiveness of the web platform for different device sizes
(desktop, tablet, and mobile)
⚫ Enhance the user experience (UX) of the web platform, including
removing the Bootstrap CDN from the index file in the public folder and
changing the icon source to FontAwesome
⚫ Add a Telegram channel button to the web platform, allowing users to
easily join the OSS Cameroon community and stay updated on new
podcasts and other updates

19
⚫ Collaborate with my team to review and discuss the progress of the
project, and seek feedback and guidance as needed.

During this week, we focused on completing the dynamic player feature


for the OSS Podcasts web platform. This included debugging any
remaining issues with the player functionality, as well as adding volume
control and mute functionality to the player. We also added previous and
next buttons to the player, allowing users to easily navigate between
podcasts and episodes.

To optimise the player for different media formats and devices, we used
the React-Media library. We removed JQuery from the project and
performed code cleanup, including removing unnecessary files from
version control. We improved the responsiveness of the web platform for
different device sizes (desktop, tablet, and mobile) and enhanced the user
experience (UX) of the web platform, including removing the Bootstrap
CDN from the index file in the public folder and changing the icon source
to FontAwesome. We also added a Telegram channel button to the web
platform, allowing users to easily join the OSS Cameroon community.

➢ Week Fourteen (14): from 30th May to 3rd June


⚫ Continue improving the UX of the web platform, including optimising
the layout and design for different devices and screen sizes
⚫ Add additional features and functionality to the web platform, such as a
subscribe or email newsletter feature, social media integration, or a
commenting system
⚫ Write more tests for the components and features developed during the
internship, using Jest and Enzyme
⚫ Collaborate with my team to review and discuss the progress of the
project, and seek feedback and guidance as needed
⚫ Work on documentation and user guides for the web platform, including
instructions on how to install and use the web platform, as well as how to
contribute to the project
⚫ Use Git to manage my code and collaborate with other developers on the
project, including committing and pushing my changes to the repository.

➢ Week Fifteen (15): from 6th to 10th June


⚫ Finalise all remaining tasks and features for the web platform, including
debugging and testing any remaining issues
⚫ Write comprehensive documentation and user guides for the web
platform, including instructions on how to install and use the web
platform, as well as how to contribute to the project
20
⚫ Collaborate with my team to review and discuss the final version of the
project, and seek feedback and guidance as needed
⚫ Use Git to manage my code and collaborate with other developers on the
project, including committing and pushing my changes to the repository
⚫ Prepare and submit the final internship report, including a summary of the
tasks and skills learned during the internship.
Throughout the remaining weeks of the internship, we could have
continued to improve the UX of the web platform and add additional
features and functionality to the web platform. This could have included
optimising the layout and design for different devices and screen sizes, as
well as adding features such as a subscribe or email newsletter feature,
social media integration, or a commenting system. We could have also
written more tests for the components and features developed during the
internship, using Jest and Enzyme.

We would have collaborated with our team to review and discuss the
progress of the project, and sought feedback and guidance as needed. We
would have also worked on documentation and user guides for the web
platform, including instructions on how to install and use the web platform,
as well as how to contribute to the project. We would have used Git to
manage our code and collaborate with other developers on the project,
including committing and pushing our changes to the repository.

In the final week of the internship project one(1), we would have finalised
all remaining tasks and features for the web platform, including debugging
and testing any remaining issues. We would have prepared and submitted
the final internship report, including a summary of the tasks and skills
learned during the internship. We would have also written comprehensive
documentation and user guides for the web platform, including instructions
on how to install and use the web platform, as well as how to contribute to
the project. We would have collaborated with our team to review and
discuss the final version of the project, and sought feedback and guidance
as needed.

21
The following set of weeks we were working on the OnACut project as described
above, aimed to provide a web-based map of Cameroon indicating districts, cities,
or regions with issues related to electricity, water, and network services. I was
responsible for delivering the project, and I provided weekly updates on my
progress. Over the course of the 8 weeks. At the end of the internship I was able
to get knowledge of many technologies such as python and flask, tailwindCSS
framework as well as ReactJS further knowledge.

➢ Week Sixteen (16): from 13th to 17th June


This week my progress was as follows:
⚫ Was introduced to the OnACut project and its VCS on GitHub
⚫ Familiarised myself with the project's codebase and development tools
⚫ I encountered the first issues of system setup which I overcame by
following some tutorials from some blog websites and youtube as well.
Then I got some advice on how to go through the error and solve it from
my mentor and other teammates on the project.
➢ Week Seven (17): from 20th to 24th June

22
For this week we went deeper in the work and each member of the team was
assigned a task to go through for the week. Some of the major tasks listed
below:
⚫ Adding a new prop for alert count. In React, props (short for "properties")
are a way to pass data from a parent component to a child component. Props
are immutable in the child component, meaning that the child component
cannot modify the props it receives.
⚫ Ensuring that the code follows a consistent style guide and is easy to read
⚫ Running code formatting tools like Prettier to automatically fix
formatting issues
⚫ Reviewing each other's code to ensure it is accurate and well-organised
⚫ Discussing any challenges or issues that came up during development
⚫ Providing feedback and suggestions for improvement
⚫ Checking in with each other to stay up-to-date on progress and identify
any potential roadblocks
⚫ Making any necessary updates or adjustments to the project plan based on
progress made so far
➢ Week Eighteen (18): from 27th June to 02th July
The progress of this week below
⚫ Total alerts displayed per regions implemented

⚫ Changing the values of the alerts and getting them directly from the
backend
⚫ Change the page title of the website
⚫ Some code cleanup by deleting the duplicate components
⚫ Adding alert report to drawer

23
⚫ Added route for alert reports and some links to the alert components.
⚫ To add a route for alert reports and links to the alert components in a React
application, you will need to use the react-router-dom library, which
provides the routing functionality for React applications.
The steps below were considered
1. Install react-router-dom by running npm install react-router-dom or
yarn add react-router-dom in your project's directory.
2. Import the BrowserRouter, Route, and Link components from
react-router-dom in the file where you want to set up the routes:

➢ Week Nineteen (19): from 04th to 08th July


Still on the progress of the work to be delivered, this week progress is seen
below:
⚫ Addition of a 404 page

24
⚫ On the OnACut website, the 404 page feature can be used to handle cases
where users try to access pages or URLs that do not exist on the site. This
can occur if a user types in a URL manually, clicks on a broken link, or
tries to access a page that has been removed or moved.

Having a 404 page in place can be important for several reasons:

1. It helps to prevent confusion: When a user tries to access a non-


existent page on a website, they may become confused and unsure
of how to find the content they are looking for. A 404 page can
provide helpful information and guidance to help the user navigate
to other parts of the site.
2. It can improve the user experience: A well-designed 404 page can
provide a better user experience by offering users options for
finding the content they are looking for, rather than simply
displaying an error message. This can help to keep users engaged
and reduce frustration.
3. It can help with SEO: When search engines crawl a website and
encounter a 404 status code, they may lower the ranking of the site
in search results. A well-designed 404 page can help to minimise
this effect by redirecting users to other pages on the site and
keeping them engaged.

Overall, the use of a 404 page feature can help to improve the user
experience on the OnACut website by providing helpful information and
guidance when users try to access non-existent pages or URLs.

➢ Week Twenty (20): from 11th to 15th July


Migrating the backend framework of the OnACut project from Flask to
FastAPI sounds like a significant undertaking that would have involved a
number of steps. Here are some potential steps that you may have taken during
this process:

1. Researching FastAPI: Before starting the migration, you may have done
some research on FastAPI to understand its features and benefits and how
it compares to Flask. This could have included reading documentation,
looking at examples, and discussing the decision with your team.
2. Setting up the FastAPI project: You would have needed to set up a new
FastAPI project and configure it to work with the OnACut project. This
could have involved installing the FastAPI library, creating a new project
structure, and defining your API endpoints.
3. Migrating the codebase: Once the FastAPI project was set up, you would
have needed to migrate the existing Flask codebase to FastAPI. This
could have involved refactoring the code to work with the FastAPI

25
framework, making any necessary adjustments to the API design, and
testing the code to ensure it was working correctly.
4. Testing and debugging: As you migrated the codebase to FastAPI, you
would have needed to thoroughly test the code to ensure it was working
correctly and fix any issues that came up. This could have involved
debugging and troubleshooting problems with the code and making any
necessary changes to ensure everything was working as expected.
5. Deploying the updated backend: Once the migration was complete and
the code was tested and debugged, you would have needed to deploy the
updated backend to a production server. This could have involved
configuring the server, setting up any necessary dependencies, and
deploying the code.

These are just a few examples of the steps that might have been involved
in migrating the backend framework of the OnACut project from Flask to
FastAPI. Depending on the specifics of the project and the complexity of
the codebase, there may have been other tasks and considerations as well.

➢ Week Twenty-One (21): from 18th to 22nd July


⚫ Updating the frontend: In addition to updating the backend, you may have
also needed to make changes to the frontend of the OnACut project to
ensure it was compatible with the new FastAPI backend. This could have
involved updating any API calls or requests to work with the new
backend, as well as testing and debugging the frontend to ensure
everything was working as expected.
⚫ Documenting the changes: As you made changes to the backend and
frontend of the OnACut project, it would have been important to
document the changes so that other members of the team could
understand what had been done and why. This could have involved
writing code comments, creating documentation, or updating the project's
documentation.
⚫ Communicating with the team: As you worked on the migration, it would
have been important to communicate with the rest of the team to keep
them informed of your progress and any issues that came up. This could
have involved regular status updates, meetings, or other forms of
communication.
⚫ Managing project resources: As you worked on the migration, you may
have also needed to manage project resources such as time, budget, and
personnel. This could have involved tracking progress, identifying any
bottlenecks or issues, and making any necessary adjustments to the
project plan.

26
⚫ Completing the migration: Once all of the steps above were complete,
you would have needed to finalise the migration and complete any
necessary cleanup or wrap-up tasks. This could have involved conducting
a final round of testing, deploying the updated project to production, and
closing out any open issues or tasks.

➢ Week Twenty-Two (22): from 25th to 29th July


During the evaluation, I discussed my progress on the OnACut project so far
and how far I had come since starting the internship. I talked about the tasks
and responsibilities I had taken on, and any challenges or obstacles I had
encountered.
The evaluator asked me questions about my work and provided feedback on
my performance. They praised me for my strong work ethic and my ability to
learn quickly, and offered suggestions for areas where I could improve.
We also talked about my goals for the remaining weeks of the internship and
any training or development needs I had. The evaluator was supportive of my
goals and offered to help me with any resources or support I needed to achieve
them.
Overall, the evaluation was a positive and helpful experience that gave me the
opportunity to reflect on my work and receive valuable feedback. It helped me
to identify areas for improvement and set goals for the future, and I feel more
motivated and confident in my abilities as a result.

➢ Week Twenty-Three (23): from 01st to 05th August


This week, I spent time writing my report on my progress during the
internship. I began by organising my thoughts and gathering any relevant
information, such as notes, documents, or project files.
Next, I structured the report in a clear and organised way, with sections for
different topics or areas of focus. I included an introduction that provided an
overview of my work during the week, followed by sections on specific tasks
or projects I completed, any challenges or obstacles I faced, and any lessons
learned or insights gained.
I also included details about my progress and accomplishments, such as
specific tasks completed, new skills or knowledge acquired, and any
contributions I made to the team or project. I included any plans or goals for
the next week or upcoming weeks as well.
As I wrote the report, I made sure to proofread and edit it for clarity and
accuracy. I also included any supporting materials or resources, such as code
samples or screenshots, to help illustrate my points and provide context.

27
Overall, writing the report was a valuable and informative experience that
allowed me to reflect on my work during the internship and document my
progress and achievements. I am confident that the report will be a helpful
resource for the team and my evaluators as we continue to move forward on
the project.

➢ Week Twenty-Four (24): from 08th to 12th August


This week marked the end of my internship and the signing of all my necessary
documents by the mentor to whom I was assigned for this period of internship.

28
CHAPTER 3: LEARNING OUTCOMES

3.1. PERSONAL EXPERIENCES


The internship was done at OSS Cameroon.
3.2. PROFESSIONAL’S EXPERIENCES
The sum of experiences and undertaken tasks done at OSS Cameroon has edified
me on
realities of the enterprise and has allowed me to make the link between the theory
learnt to school and the practice.
The tasks we had during our workshops have been of great help to go through
this internship work.

29
CHAPTER 4: RECOMMANDATION

4.1. AT THE LEVEL OF OSS CAMEROON


At the level of OSSCameroon I will like to consider more the fact that some
students are learners and also some might be slow in getting the task provided. In
other words, I’ll suggest patience. Better scheduling of the weekly tasks for the
different interns.
4.2. AT THE LEVEL OF NAHPI MY SCHOOL AT UNIVERSITY OF
BAMENDA.
NAHPI should endeavour to:
- Sign partnerships with enterprises to facilitate the obtainment of academic
internship by the students.
- Improve his scholastic programs considering the fact we are facing a fast
evolution of technologies.
- Build and equip a workshop with adequate materials to allow his students to
master new technologies and put the theoretical knowhow in practice

30
APPENDIX

Figure 7: code inspection with the tablet device resolution

Figure 8: Search bar under development

Figure 9: podcast controller implementation

31
Figure 10: Signaling a power failure through OnACut

Figure 11: Power failure areas across the Cameroon Teritory

32
Figure 12: Display of recent power failures in Cameroon

Figure 13: Language translation features implemented successfully

33
CONCLUSION
In my internship at OSSCameron, I had the opportunity to work with cutting-edge
technologies in the field of open-source software development. I had hands-on
experience in developing and maintaining several critical projects, which helped me to
improve my technical skills like coding, debugging, testing and in the areas of problem
solving and communication.

One of my key responsibilities was to identify and resolve bugs in the software, which
helped me learn how to troubleshoot and debug code effectively. Additionally, I also
got a chance to attend meetings and interacted with several team members, which
helped me to develop my communication and teamwork skills.

I am extremely grateful for the knowledge and experience I gained during my internship
at OSSCameron. The skills I have learned will be invaluable as I continue to pursue a
career in open-source software development. It was a great opportunity for me to grow
both personally and professionally and I'm thankful for the team's guidance and support
throughout the duration of the internship.

34

You might also like