Introduction
Here's an opportunity to discuss a project I completed during my one-year software engineering intensive training at ALX. This portfolio project concluded the foundation curriculum.
About ASHPense Manager
ASHPense Manager is a web application designed to help individuals and small business owners manage their finances more effectively by tracking and monitoring financial transactions.
As a passionate full-stack developer, I took on this project from ideation to deployment, focusing on creating a consistent user experience across all devices. Despite other commitments, I completed the project in 4 to 6 weeks.
Backstory
I am very meticulous about managing my finances. Regardless of the amount I have, I track my earnings and expenses diligently. Sometimes, I even predict situations where I might be tempted to spend.
As an avid user of personal finance management apps, I find them convenient for quickly tracking expenses on my mobile phone. However, this convenience is limited to the phone itself.
I've had to replace missing or damaged phones, switch to different operating systems, clear data and cache, and uninstall apps to free up space. In each case, reinstalling and setting up the app to resume tracking my finances was cumbersome, especially when I hadn’t backed up my data.
Although I continue to use these apps, I wanted a solution that would allow me to access my financial data regardless of my phone’s status. While such solutions exist, I decided it would be great to create one myself.
Technologies
The front-end of ASHPense Manager was developed using HTML for structure and layout, with Bootstrap for styling. Bootstrap's responsive grid system and pre-designed components made it easy to create responsive web pages. JavaScript was also used for client-side processing and interactivity.
For the back-end, I used Python and its popular framework, Django. Python is known for its versatility and ease of use, while Django offers built-in features such as an ORM, authentication, admin interface, and form handling, adhering to the DRY (Don’t-Repeat-Yourself) principle. These features were invaluable given the tight schedule for presenting the final project.
Features
ASHPense Manager is currently an MVP (Minimum Viable Product), but features such as authentication, categories, earnings, and expenses make it a market-ready solution.
The platform's authentication leverages Django’s secure authentication feature, which allows for customization and an added layer of security.
The categories feature enables users to group transactions for tracking and monitoring, with subcategories for further organisation. For example, "Transportation" can include subcategories like Taxi, Uber, Bus, Train, and Aeroplane.
Earnings and expenses features allow users to track any money they earn or spend. The following image is a section of the platform’s dashboard that elaborates on these features.
Most Difficult Technical Challenge
The most difficult technical challenge I faced while working on ASHPense Manager was deploying the product to the cloud, specifically on Heroku. This was uncharted territory for me, but I was determined to get it up and running.
Initially, I lost track of the deployment checklist and missed certain tasks, leading to a failure when the remote server ran a checklist. Then, I encountered conflicting Python versions between the platform and the host service. Although I made a quick fix, GitHub raised an alarm about the conflicting versions of Python and Django.
I also faced issues with missing dependencies, particularly with static files. Attempting to collect static files locally resulted in hours of web searching until I found the missing dependencies on a CDN library site. By default, Django does not serve static and media files in production, so running the collectstatic command was necessary to bring all static files to one location in the project.
The project has been successfully deployed to the cloud, but honestly, it currently runs in debug mode, which is not recommended. However, for the purpose of the presentation I need to do later today, it is safe enough.
Lessons from this Project
Working on this project has given me firsthand experience of what it takes to develop a real-world software solution, from ideation to deployment. The challenges I encountered have become a foundation to build upon.
One key takeaway from this experience is the importance of research before starting work on any component. If I had done this, I believe the challenges would have been significantly reduced.
After working on this project, I can confidently say that software engineering is difficult. It requires discipline, hard work, patience, and intentional risk-taking. These are traits I discovered in myself throughout this process.
About Me
I am a passionate software engineer with a strong background in web application development and a keen interest in creating efficient, scalable, and secure applications. This project showcases my ability to work with various technologies to deliver a seamless user experience.
I am open to new opportunities where I can contribute my expertise and grow professionally. Feel free to explore ASHPense Manager on GitHub and the live platform, and connect with me on LinkedIn.