My Journey Developing CodersEnsemble

Erick AwinoErick Awino
5 min read

Before we even delve deeper, I would like to inform you that this was my first time ever building a full-stack project. I am elated because about a year ago, I would not have thought of myself building such.

Completing CodersEnsemble has been a significant milestone in my journey as a software developer. The project, designed to connect coding enthusiasts globally, offers a collaborative platform for learning, knowledge transfer, and working on various projects.

My team comprised Benedict Ndigirigi and myself. It took three weeks to complete the MVP. The first week involved project planning and initial research. The second week was for development and integration. The third week entailed testing and refinements. We wrapped up the project by presenting it to our peers who were ahead of our current cohort.

We embarked on the three-week-long project with the aim of addressing the need for a unified platform where software engineering students like us would come together, learn, and build their confidence.

Our goal is to create a web application that is user-friendly and robust, replacing the need to have many other channels of communication that only end up confusing people or having loads of bothersome notifications.

My core focus was on both front-end and back-end development, ensuring that the client-side presentation and functionalities were appealing, secure, and efficient.

What Inspired the Project?

We noticed that there were so many teams fragmented into various WhatsApp groups trying to learn together and collaborate on projects. This was despite having platforms like Discord, which would allow users to meet and collaborate. One challenge was the lack of coordination between all these teams. A team would schedule an event (online learning event or Peer Learning Day (PLD)), and another would do the same within the same timeline. Besides, some of the groups immediately become unbearable because some members derail to other things other than learning and collaborating. Introverts could never have a chance to ask for help or collaborate with others. Creating a community-driven platform, CodersEnsemble allows users to create discussions, ask questions, and collaborate with others on various topics. It is the same way StackOverflow, Reddit, or Quora works.

Personally, I have felt isolated in times when I need help the most. You use the available communication channels like Discord to reach out to peers, and they sometimes do not bother to get back to you. Sometimes, that leads to desperation, and my partner and I feel that we need to build a community that cares. CodersEnsemble aims to provide that community for others.

Accomplishments

CodersEnsemble utilizes a modern tech stack to ensure performance and scalability. For the backend, we chose Python with Flask for its simplicity and robustness.

The front end is built with HTML5, CSS3, and JavaScript, ensuring a responsive and intuitive user interface. We did not use any framework because we wanted to understand JavaScript, HTML, and CSS to be able to transition into the related frameworks later as we advance our studies.

We opted for MySQL as our database to handle complex queries efficiently.

Key Features

User Authentication and Authorization. Implemented using Flask-Login and Bcrypt, ensuring secure user sessions and password management. We intend to use other authentication methods as we scale the project.

User-Friendly Interface. Simple, appealing, and seamless design for easy navigation and great experience.

Profile Management. Users can create and update their profiles, displaying their skills and projects.

Project Collaboration. A feature allowing users to create, join, and collaborate on projects, fostering community engagement.

Technical Challenge

The main technical challenge we had was implementing a secure authentication for the users.

Situation

One of the most challenging aspects of this project was implementing a secure authentication system. Ensuring that user data is protected while providing a seamless login experience was crucial.

Task

The task was to integrate user authentication with Bcrypt for hashing passwords and Flask-Login for session management

Action

My partner and I started by researching best practices for password security and session management. We decided to use Bcrypt for its strong hashing algorithm and Flask-Login to manage user sessions. The first step was to set up user models and define methods for password hashing and verification.

In the User model, we added methods to hash passwords before saving them to the database and to check hashed passwords during login attempts.

Result

Implementing secure authentication was a success. Users can now register, log in, and log out securely. The password hashing ensures that even if the database is compromised, user passwords remain protected. This functionality is critical for maintaining user trust and data security.

Lessons Learned

Building the CodersEnsemble project has been a learning journey for me from the time we started to the time we presented it. The feedback from our reviewers opened our eyes to a world of endless possibilities. Nevertheless, here are some of my technical takeaways:

The importance of using secure password hashing algorithms.

How to integrate Flask-Login for effective session management.

Best practices in securing user data and authentication processes.

Personal Insights

This project reinforced my understanding of full-stack development and highlighted the importance of security in web applications. I learned to anticipate potential security vulnerabilities and address them proactively. Moreover, working on CodersEnsemble has deepened my appreciation for the collaborative power of the programming community. I have also learned that Flask can actually achieve a lot.

Building CodersEnsemble has been a challenging yet rewarding experience. It captures my growth as a developer and my commitment to creating solutions to real-world problems that are available to anyone.

As I look to the future, I am excited about continuing to develop and refine this project, ensuring it meets the evolving needs of its users. I am also happy about my growth as a full-stack software developer with a specific leaning on back-end development.

About Me

My name is Erick Otieno Awino, a consistent, reliable, and diligent software engineer focused on building applications and systems that have an impact on today’s and tomorrow’s world. I aspire to become a robust full-stack software engineer with a unique approach to solving problems.

You can view CodersEnsemble on the GitHub Repository, visit the deployed project (coming soon), and connect with me on LinkedIn or GitHub.

Thank you.

0
Subscribe to my newsletter

Read articles from Erick Awino directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Erick Awino
Erick Awino

I am a software engineering student at ALX Africa. I am looking forward to advancing my career and becoming a cybersecurity expert. I will share a few insights and my progress to document and encourage anyone aspiring to get into SE, especially past 30. Join me on this journey.