ALX SE Foundations Portfolio Project: Learnopolia 🐢
Hi, there 👋! I am Daniel Dohou, a Software Engineer, and I’m a student of the ALX Software Engineering program (Cohort 18).
I‘ll be walking you through Learnopolia 🐢 in this blog.
What Is Learnopolia 🐢?
Learnopolia 🐢 aims at one goal: Empowering individuals with education by providing access to platforms for interactive learning, fostering knowledge sharing, and connecting learners with experts, resources, and opportunities for personal and professional growth.
How does Learnopolia achieve this? This will be achieved as Learnopolia serves as a referral guide to the best courses and learning pathways ever available.
Think of Learnopolia as a map that directs drivers on how they can arrive at their destination.
I did not work on this project alone. I worked as the only back-end developer for the MVP stage of Learnopolia 🐢, and I collaborated with David Orisabiyi, a knowledgeable and experienced front-end web developer...
Learnopolia exists to work with the United Nations SDG 4:
Ensure inclusive and equitable quality education and promote lifelong learning opportunities for all
Learnopolia 🐢 is accessible for learners of all ages and backgrounds, from students seeking educational resources and support to professionals looking to expand their knowledge and skills, and anyone passionate about lifelong learning and personal development. This is also Learnopolia’s major focus.
But you may wonder: “Why Learnopolia 🤷♂️🤷♀️?”
I’ll share a personal experience with you 🤐
I hate the fact that you have to scroll through countless pages on the Internet today, if you are willing to learn a concept, enroll for a desired course, or looking to expand your knowledge.
Every web page you visit does not always contain factual information, relating to what you need to consume (idiomatically). In reality, you need to filter information yourself (literally 😅).
I thought of building a solution that curates the best courses, learning pathways, and materials that ease the endless search, and gives me exactly what I want, and since, it is aimed at life-long learning, hence the name: Learnopolia 🐢.
Learnopolia’s Accomplishments (MVP stage)
A simple web interface showing Learnopolia’s goals and life-work, with a user sign-up/login functionality • There’s definitely more to come.
The MVP was built using:
- Frontend technologies (HTML5, CSS3, and JavaScript)
- Backend technologies (MySQL, Flask, Python)
- Form submissions (Using Formspree)
Most Difficult Technical Challenge
I don’t even know where, and how to begin. It all had to do with setting up the backend framework, and implementing its functionality from the frontend.
I realized that I could store my user’s data on a remote MySQL server, and this MySQL server is being hosted by a remote server (great!). Installing a version of MySQL was first the issue, then creating up a Primary-Replica Master-Slave setup was another 😭. I spent a whole week on this.
The greatest issue of all was being able to access my database remotely through a GUI. I really worked hard for this, and I really made a lot of research, but by asking the right question, and the right person, in the right community (Algorithmia SE 🌍), I finally found the solution. I was finally able to connect to my remote MySQL server through my VS Code and MySQL workbench.
Setting up the MySQL database was one entire thing, connecting it to the front-end part of Learnopolia was another. I was faced with a task: fetch all the data from the Sign-up/Login form, and store them all in a table in your remote MySQL database server.
I first had to write Python initialization scripts that first connect to the server, create a database, and create a table in that database. I achieved this using Python SQLAlchemy (ORM (Object Relational Mapping)).
When this worked, I needed to find another way to transfer all the user’s details from the front-end form to the backend set-up already.
I started delving into the concept of APIs, AirBnBs, Python frameworks, and the rest, and this was really a painful but wonderful experience.
I finally found out how to do so using Flask, but I would need to specify the HTTP methods in the front-end form.
Yeah, I think I’m beginning to bore you, my dear reader 😅, but lesson of this story is: Never look down on any techie 😏
Oh, and I also learned how to be patient with myself when debugging, and the importance of taking breaks in-between. This is very important, so that we, as Software Engineers, do not get frustrated and break our screens 😅. Take that break if you need to. That’s your solution right there!
Apart from this life lesson, I learned a lot about:
- Web Design, Colours, and Responsiveness of Web pages
- Setting up database structures
- The secret to deploying and monitoring real full-stack web applications
- The importance of having a community, asking questions, taking corrections, seeing other people’s point’s of view, and collaboration.
Mind you, I’m a part of the #ALX_SE community 💪
I learned a lot while building Learnopolia 🐢, and I’m grateful for how much I learned. Oh, and I’d like to thank my VSCode extensions too 😂.
Writing this article helped me reflect on what I went through for the past month (worth it 😊).
Don’t miss out on Learnopolia 🐢
- Link to Website (👈 click here)
I’m Daniel Dohou, a Software Engineer, and A Beautiful Mind ✨.
Let’s talk: https://linktr.ee/dohoudanielfavour