Behind the Scenes: Exploring the Technical Challenges and Solutions in Building Shielded
Tags: webdev, beginners, css, codenewbie
Published: 2023-07-11 09:30:26


![Shielded](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/86wxd04p1bykzqvu52gk.png)

---

We built Shielded to help girls in FGM practising societies. Our aim is to protect the innocence of girls and women by redefining what purity means in FGM practicing societies.

## Team members
Serah Nderi - Backend and DevOps
Hasina Said - Wireframes, Frontend and Devops

## Timeline
Research: 3 weeks
Development: 3 weeks

## The Problem
In 2014, the national prevalence of FGM was 21%. This decline can be attributed to multifaceted approaches by GoK and NGO's.Yet, despite the steady decline nationally, the prevalence of FGM remains relatively high in some communities.


FGM is not only a harmful practice but also a violation of human rights.


The practice poses serious risks to the health and wellbeing of girls and women and is widely recognised as a human rights violation.

## The Solution
Since there is little to no access to internet in FGM practising societies, our USSD Shielded seeks to provide information, access to safe houses credit, airtime, ambulance and emergency services to women in these societies.

Our solution is unique as it consolidates these solutions at a low cost affordable manner. Currently, these solutions are offered in the country independent of each other.

## My Personal Focus
Our project helps girls achieve the highest education level possible and escape FGM and early marriages by connecting them with safehouses and social workers through a USSD. It is also designed to work with other shareholders such as Village Chiefs to increase literacy rates in FGM practising areas.


The team members are Hasina and myself and we wanted to focus on a USSD and a website solution. Those who find us via website still have access to the USSD information and an option to donate to the cause. Hasina worked on the FE while I integrated with the Africa's Talking USSD, Airtime, and SMS API.

## Why Shielded?
Although I don't have a personal story around FGM and early marriage, I wanted to use Africa's Talking API and what better way than to champion for girls in Marginalised communities.


Educated girls play a vital role in driving social and economic development. When girls receive an education, they contribute to the workforce, drive innovation, and foster economic growth. 


Educated women are more likely to become agents of change within their communities, promoting sustainable development and social progress.
Education plays a big role in breaking poverty and abuse cycles.

## Accomplishments
For the Frontent we used HTML5, CSS3 and a bit of Vanilla JS around the navigation elements and toggle menu. We did not use any frameworks because we're yet to solidify our understanding of JavaScript which is the focus the next couple of months.

For the Backend, we used Python, Flask web application and Postgresql database with Elephant SQL.

## Features 

![Shielded data flow](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0v537ezjdvsz5dhis5mu.png)
USSD - Serves as an entry point for the users. They dial the USSD and are presented with 3 options.

Donate - For anyone who would like to donate to the course, the donate page integrates with the Safaricom daraja API.


Airtime - Integrates with Africa's Talking API and sends the user airtime should they request the third option which is request airtime.


SMS - For every USSD option, the user gets a message alert for the details they requested or the action they just took.

## Technical Challenges
The most difficult challenge we faced is that the USSD wouldn't run and when it did I got a 504 time out error or a duplicate airtime send from the airtime file.

Unbeknownst to me, while the USSD requires no api key, the sms api only consumes live keys and not sandbox keys. Changing my api key to a live key as opposed to a sandbox key solved the sms problem. We had also altered the USSD code a bit so refactoring it to run as a flask app solved our problems and now the app runs via the terminal.


The USSD requires a callback URL which I did not know how to go about but after attending one of their sessions I learnt about ngrok. It was possible to fix errors as they all appeared under their sessions Tab courtesy of the callback URL/ngrok.

## What I've Learned
Reading the documentation may not always be adequate. if something is not included in the documentation, join their slack or discord channels and see if there's discussions and how you can get help.


When working on a project, all the concepts you've been reading and working will be a deciding factor on how you choose to go about the project.


I also learned I work best by setting a minimum hours to code, in this case a minimum of 3 hours a day, research not included seemed to be my streak. Moving forward I want to finish some html, css projects and learning about Safaricom daraja API before I can specialise with Frontend or Backend.

---

_I'm an ALX Full Stack Engineering student and a QA Engineer. Find me on [LinkedIn](https://www.linkedin.com/in/serah-nderi/), [Twitter](https://twitter.com/nderisarah) and [Medium](https://medium.com/@sarahngima77)._

[Shielded on Github](https://github.com/MundiaNderi/Shielded)
[Shielded on Netflify](https://lucent-monstera-799cff.netlify.app)
[Follow me on LinkedIn](https://www.linkedin.com/in/serah-nderi/)