Jesulayomi Michael
7 min readJul 14, 2023
SCHub Logo — Roof on the text SCHub.
SCHub Logo

This application was built to empower education institutions with a seamless means of data management. It allows for efficient management of student, teachers, departments and courses in a secure and easy to use environment. It was built with a powerful tech-stack combining MySQL, Python, ReactJS, Nginx, Haproxy in a UNIX development environment. SCHub is designed to optimize efficiency and enhance accessibility for an academic institution.

TEAM

We are a team of two passionate software engineers who have been working on SCHub for the past month.

Jesulayomi Aina is a software engineer at ALX and an electrical engineering student at the Federal University of Agriculture, Abeokuta, Nigeria. He is responsible for developing the API of SCHub using Python, unit-tests for API and models, configuration scripts and setup for the domain, servers and configurations using Nginx, Haproxy, Certbot. He also writes the technical articles and pages of SCHub, as well as the design choices made He is interested in web development, devops and artificial intelligence.

Samuel Iwelumo is a full-stack developer at ALX and back-end developer at Bincom development center Lagos who has been in the field of programming for over 4 years. He is a graduate of computer science from The West African Union University, Benin. He is responsible the front-end development of SCHub using ReactJS, Models for the application’s database using Python and MySQL, and worked together on the API development.

We have been collaborating remotely using GitHub, Slack, WhatsApp, and Google Docs. We have been following an agile methodology with weekly goals and daily planning. We have also been testing our code using Python’s unit-tests and automated scripts.

AUDIENCE

Our target audience for SCHub are institutions that want to improve their management and collaboration processes using a modern web service. We have designed SCHub to be adaptable to different types of institutions, such as universities, colleges, schools, or training centers. We have also designed SCHub to be customizable to different user roles, such as students, teachers, or administrators. We have conducted some research by interviewing potential users from different institutions and collecting feedback from them. We have also created user personas and user stories to guide our design decisions. We have validated our assumptions by conducting usability tests and surveys with our users.

FOCUS

Our personal focus for this project was to learn new technologies and skills that are relevant for back-end development. We wanted to challenge ourselves by using a complex tech stack that combines different languages, frameworks, tools, and services. We also wanted to apply our knowledge of relational databases, models and frameworks to create clever features for SCHub.

STORY

We both have a personal connection to this project because we both come from Nigeria, a country that faces many challenges in its education system. We both experienced first-hand the difficulties of accessing quality data from institutional websites, most are inaccessible or worse — nonexistent. We both had to overcome many obstacles to pursue our passion for software engineering and achieve our academic goals and believe that education is the key to unlocking human potential and creating positive change in the world. We both want to use our skills and talents to contribute to improving education in Nigeria. SCHub is a project that moves in that direction and aims to empower institutions with seamless data management and collaboration.

Data architecture for SCHub showing requests routes

TECHNOLOGIES

MySQL and python were set from the start as obvious means to us for our models and data storage. MySQL was our most familiar relational database and easy to use, although intensive (2gb ram minimum) It lead to the choice of using a 2gb memory droplet for the application server. Python was chosen also due to its familiarity and versatility in building objects, and it’s modules (flask and flask_login for the API and authentication, flasgger for the API documentation). React library was used to build the user interface and front-end of the application due to its easy to use components as opposed to Jinja’s more static content pages we needed the application to be dynamic and React was a good method.

FEATURES

Responsive for smaller devices

SCHub logging in on smaller device

Secure login with hashed passwords and email validation

Email validation

Easy access to relevant data by users

Student having access to their on data and relevant data to their courses

Easy ways to display and manage users, departments and courses

Updating a student

CHALLENGES

We faced many challenges during the course of this project, both technical and non-technical. Some of the technical challenges we faced were:
1. Developing the ReactJS front-end to provide an engaging user interface. We had to use various components and libraries, such as React Router, React Icons, React components Axios, to create the pages and features. Integrating the front-end and back-end using RESTful API calls. We had to ensure that the data was transferred correctly between the front-end and back-end, and handle any errors or exceptions, we also had to maintain sessions and handle authentication of requests from the react framework.
2. Deploying the project on a cloud server using Nginx, Haproxy, and Certbot. We had to configure the web server, the load balancer, and the SSL certificate and ensure optimal performance and security as well has handling reverse proxying to the private IP for API calls.

Some of the non-technical challenges we faced were:
Working remotely and asynchronously; We had to communicate effectively and coordinate our tasks using various tools and platforms. We also had to deal with schedule differences and internet issues. Managing our time and resources. We had to balance our project work with our other commitments and responsibilities, such as school exams, work, family, and personal life. We also had to prioritize our tasks and allocate our resources according to our goals and deadlines. Dealing with uncertainty and ambiguity. We had to cope with changing requirements, unexpected problems (flasgger just why), and incomplete information. We also had to make some decisions based on assumptions and hypotheses.

TAKEAWAYS

Through this project, we have gained many valuable technical skills and knowledge that we can apply to future projects. Some of our technical takeaways are:

  • Designing and implementing a relational database using MySQL.
  • How to create a dynamic and responsive front-end using ReactJS and its components and libraries.
  • How to build a RESTful API using Flask and Swagger.
  • How to deploy a web service on a cloud server using Nginx and Haproxy.

REFLECTIONS

Looking back at our project, we are very happy with what we have achieved. We think that we have created a useful and innovative web service that can benefit many institutions, even in its developmental phase. We also think that we have learned a lot from this project, both technically and personally. We have improved our coding skills, our problem-solving skills, our communication skills, and our teamwork skills. However, we also recognize that there is always room for improvement. We think that we could have done some things differently or better. For example, we could have: Conducted more user research and testing to validate our assumptions and improve our user experience in terms of design. Implemented more features and functionalities for SCHub, such as notifications, libraries, results, etc. Used more advanced technologies or tools for SCHub, such as Docker, Kubernetes. Applied more best practices or standards for coding, testing, documentation in React.

I learned…

This project has been a great learning experience for us as software engineers. We have learned a lot about ourselves as engineers. We are both highly adaptive to obstacles and failures and catch up quick with methods to solve them by gathering necessary information from documentation, searching and logs.
This project has helped us get familiar with more frameworks, and different applications that are relevant to the software engineering path.
After trying out ReactJS I am impressed by its versatility and use-cases in this project. Digital Ocean was not very expensive to run but in our case credits were enough to get started with three servers for the SCHub application.

LINKS

Homepage
Landing Page

Authors LinkedIn profiles:
Jesulayomi
Micoliser

Author’s GitHub Profiles:
Jesulayomi
Micoliser
Project Repository