My Portfolio Journey

Modeste CiiraModeste Ciira
6 min read

January 2023 marked the beginning of my coding journey, as a result of admission to the Alx Software engineering program. After months of commitment, consistent learning and practicing, my teammate and I have been able to create a dental supplier website.

Our application is designed to streamline and automate record-keeping processes for businesses involved in supply management. It empowers users to efficiently manage customer information, product inventory, and sales transactions. Notably, the system facilitates the creation of invoices based on customer orders and provides a seamless way to generate statements for customers. The primary goal is to eliminate manual processes, ensuring a more efficient and error-free workflow.

The duo behind this project consists of Mercy Njuguna and Modeste Ciira. We started this journey on October 20, 2023, with a shared commitment to both front-end and back-end development. Our approach involved each team member contributing to both aspects of the project, fostering a holistic understanding of the system.

This application is tailored for businesses in the supply industry. It serves as a tool to automate daily operational tasks. It addresses challenges related to customer record-keeping, product management, and sales tracking. The interface allows users to create invoices by selecting customers, specifying ordered products, and updating stock quantities. It also empowers users to generate statements, which they can share with their customers, making it easier to keep track of their outstanding balances.

My primary focus in this project was to develop a user-friendly website that significantly lightens the workload for suppliers. By implementing automation, users can input minimal details, and the system takes care of the rest. The emphasis on accessibility ensures that users can leverage the platform at any time, fostering flexibility in their work processes. My commitment was to create a solution that not only meets the functional requirements but enhances the overall user experience, making day-to-day operations smoother and more efficient.

When I first heard of the project, it was clear that there was a problem that needed a solution. We partnered up to come up with a solution that would enable the user to be able to automate and make their work easier. Delving into this project I knew that some of the things that we'd cover in the project I would also be used in future for other projects. Also being able to create a full website after months and weeks of tackling small and progressive projects.

Architecture:

For the front-end, we leveraged HTML, CSS, and JavaScript, choosing these languages due to our familiarity and expertise. Paired with Python Flask, our chosen framework, we structured the web application to dynamically render templates based on user interactions. On the back-end, Python3 served as the foundation, allowing us to build classes, functions, and manage data storage. We opted for MySQL as our open-source relational database management system for its reliability, stability, and efficient handling of large datasets. The integration with SQLAlchemy, an object-relational mapping tool, facilitated seamless communication between relational mapping and object-oriented programming, ensuring dynamic updates as instances were created.

Key Features:

1. Record Management:

- The website provides a comprehensive list of all products and customers stored in the database.

- Users can effortlessly create new records or update existing ones, streamlining the maintenance of essential information.

2. Invoice Creation:

- A user-friendly form facilitates the creation of invoices based on customer orders.

- Users can select the customer, specify ordered products, and indicate quantities, with the ability to add or remove items as needed.

3. Statement Generation:

- The system offers a powerful feature for generating statements.

- Users can view all open invoices or narrow down the search for a specific customer.

- With a simple click, the user can generate a statement, download it, and promptly send it to the customer, enhancing communication and financial transparency.

These features collectively transform the application into a versatile and efficient tool for suppliers, automating record-keeping, simplifying invoicing, and facilitating seamless communication with customers through statement generation.

As we approached the final stages of the project, a significant technical challenge emerged. My partner encountered difficulties running multiple Flask apps simultaneously. This bottleneck not only hindered her ability to test the site effectively but also introduced complexities for me, necessitating the execution of separate Flask apps in different terminal windows.

The task at hand was to devise a solution that streamlined the process of running multiple Flask apps with a single command. This not only aimed at resolving my partner's immediate issue but also sought to enhance overall project efficiency by simplifying the development environment setup.

Initially attempting to tackle the challenge collaboratively, we encountered a series of bugs that impeded progress. Realizing the urgency of finding a resolution, we decided to temporarily work independently, with each of us exploring potential solutions on our own. On my end, thorough research led to the identification of a more viable approach with fewer bugs. The next morning, a mere few hours before our project presentation, we reconvened in a call and implemented the refined solution together.

Through collaborative problem-solving and individual research efforts, we successfully addressed the technical challenge. The refined approach not only resolved the immediate issue for my partner but also streamlined the development environment for both of us. This solution enabled a smooth presentation of our demo work, showcasing the project's functionality seamlessly. The experience underscored the importance of adaptability, research, and collaborative problem-solving in overcoming unforeseen technical hurdles.

My technical takeaways were as follows. Flask emerged as a versatile tool, facilitating the seamless execution of our apps and providing a robust platform for implementing user authentication. The integration of SQLAlchemy, a real game-changer, bridged the gap between our Python storage system and the MySQL server database. This not only streamlined data storage but also highlighted the power of effective integration in software development.

Looking back, I recognize the importance of extensive research, particularly in defining the data requirements of our tables. A more thorough understanding at the onset could have preemptively addressed challenges related to data structures, enhancing the efficiency of our development process.

The lesson learned was not only about technical skills but also about the importance of stepping back and taking breaks during moments of frustration, fostering a balanced and sustainable approach to problem-solving.

This project illuminated the dynamic nature of technical skills. Starting the year with no coding or software skills, the journey from February to now has demonstrated the exponential growth achievable through dedicated learning. It solidified my belief in the power of problem-solving skills, affirming that as an engineer, the goal is to leverage code to address real-world challenges.

The project illuminated Flask's prowess as a powerful and useful web framework tool. Its flexibility, coupled with the ease of integration, solidified its position as a tool of choice for efficient and dynamic web application development.

Below you’ll find:

0
Subscribe to my newsletter

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

Written by

Modeste Ciira
Modeste Ciira