Introducing a new solution to one of man's oldest problems
Our project ACL is an e-learning management system designed to allow different schools take advantage of an online environment to provide quality education to their students even without physical spaces or schools. It allows the school to forget about issues that pertain to maintenance of the school building and attempts to abstract the learning process. Although still in the works, version one will be fully operational by June 23rd 2023. It was worked upon by myself and two brilliant team players, David John and Toluwani Ajibare. ACL was created for schools and to help people who don’t have access to education due to it’s cost. As it attempts to abstract the learning process from the buildings of the school, with the school not having to pay for running costs like maintenance and repair of its buildings, it is better able to devote resources to education and lowering the price that comes with being literate. Dave as we call him was our team leader and chief backend engineer. Toluwani worked on the frontend and web-pages while I handled a little of both and mostly deployment and server configurations.
Team
David John: Chief Backend Developer
Toluwani Ajibare: Chief Frontend Engineer
Ugwuanyi Afam: Team Lead and Project Manager
Why ACL?
Of all things why an e-learning platform you may ask. Well the project was personal for all of us. For me, I grew up in a family where education and literacy was highly valued and was something that was worth risking it all to attain. Everyone around me sacrificed so that I could get educated, my parents, uncles, aunts, cousins and siblings. And in the secondary school and university, I saw friends, met people who earned their education. They had to work to pay their fees, something I thought that was relegated to movies and books. So when I got a scholarship to study in the ALX SE program, I fell in love with their hands off online system and wondered if somehow it could be replicated and made widespread for all and discussing it with Dave and Toluwani, I found out they had similar ideas; Dave was running masterclasses to help aspiring young devs and needed a system to effectively manage his students and Toluwani was also in school so she could totally relate, so we stuck with it.
Target Audience
ACL is targeted towards teachers, students and school administrators alike. Created with the intent of bridging the gap in the educational and digital divide, we put together a platform that will allow those involved in the educational sector as well as parents and children alike to have a say in their education. The goal is to reach across all boundaries and bring education to the doorsteps of the masses
Achievements
Well, below is the flow that we built for the platform. We have schools broken down into classes that have a bunch of subjects. Each user can create a school or join one as a student or teacher. Which means a user can be in all three states but not simultaneously :) much like Heisenberg’s principle, A user can either be an admin or a (student/teacher) in a school and in a class he can only be a student or a teacher. Then there are classworks, homeworks, and resources to make use of. We plan to add pre-recorded classwork features in version 2 but for now we kept it as simple as a man page.
Technologies:
- For the backend, We wanted more control over our models so we chose APIFlask instead of Django. APIFlask as a Flask wrapper overcomes some of the disadvantages and limitations of Flask as it provides a more robust foundation for web development
Jitsi Meet to allow for live scheduled classes
SQLAlchemy and MYSQL for managing our data. ALthough many favor the more friendly NoSql like Mongo Db, the old fashioned MySql still has its uses and advantages
Html Css and Javascript for the frontend. In order to get a better understanding of these tools above we decided to just stick to the basics although in future versions, it would be more than likely to have us incorporate frameworks and libraries into it
Challenges
Well halfway we wanted to switch from Flask to APIFlask which is a Flask wrapper that does a whole lot of stuff. Having to dismantle our database and api routes to make the switch was a huge issue and it caused problems for us. Also in the frontend it was confusing to implement the Jquery as We had to learn and unlearn. Luckily for us Dave and Toluwani pulled us through and referring back to our ALX notes were also helpful. The switch to APIFlask proved to be worth it as it incorporated a lot of features not usually found in Flask like the concept of using classes to define routes which was so much better than the functions being decorated with context managers, use of schemas to define our results etc.
Another important hurdle was tackling how to manage the urls from the client side. Due to the fact that every model/ instance was accessed by a long unique id, getting to them proved much of a task as the issue became how to store the UUid as well as pass them across pages. Eventually, we settled upon the combination of the use of localStorage and slugs to manage the ids as well as provide a secure route to query the backend. By storing the uuids received in the localStorage and then querying with slugs, it eliminated the issue. Each slug was like a user-friendly and short text that signified the longer uuid that was supposed to be used to retrieve the required classwork, homework or whatever it was that you want
Takeaways
Over the course of the project, we’ve learnt a lot. Personally I think the most important was
“Change is the only reason it turns out good”
Over the course of the project we changed the frontend and backend a couple of times and had an overhaul twice. If we had stuck with what we originally planned, them we might have come out with something less ideal.
In version two, when we start on it, I’m gonna start by building the webpages first before defining my api routes. Defining our api routes first was a huge mistake on our own part that made the necessity of having to now twist the frontend to suit the routes which wasn't necessarily a good idea.
Also in future projects, I think I will try to adopt the habit of making use to pre-existing libraries and frameworks as they more or less simplify everything. Writing nothing but raw-dogging Html Css and Javascript was one of the most trying moments I ever had in the project and although it made me wiser in the field of frontend, it also made me learn to make smarter decisions next time.
The project was the first baby step I took that has made me more determined than ever to pursue my path to becoming a fully-fledged software engineer. Finally, sure we used vim, I used vim in writing most of the backend codes and setting up the server, but when it came to the web pages, it was VSCode or nothing. I really got to understand the reason it’s so popular, like teamvi and teamemacs no offense but you guys are outdated.
Meet Afam Ugwuanyi
Well what can I say about myself? Let’s see my name is Afam Ugwuanyi, I have an alter personality budding where I’m Phyro Kelstein, a poet and short story writer here . Poetry and Creative writing has always interested me and I hope to make it as big as Rowling or Asimov someday. I wear glasses like any Felicity out there and I love codes and challenging stuff.
I'm currently studying Software Engineering at ALX and no-code Web Development with flutterflow at NocodeAfrica. Trying to learn something new and better coding practices take up most of my time. I love change innovation and the future and puzzles. Breaking codes and logic has always been my forte and is one of my joys.
You can view my github here. I would love to chat with you and learn something new on twitter and linkedin
You can access our site here and give it a try and tell us what you think of it