CTY1209-01 Fix A Leak Plumbing App


 

Cory Lamer: Lead Backend Developer and Website IT technician

  • Knowledgeable Programmer using C#, C++, and Java/Kotlin(Android development)
  • Adept at breaking down and solving any problem with the worlds of IT and Programming. Reliable at getting tasks accomplished efficiently

Samad Ahmed: Front-end UI/UX developer and Database engineer

  • Technical troubleshooting experience of 3 years related to software and hardware issues. Efficient at deciphering a problem, isolating the cause, and implementing a solution
  • Programmed applications in multiple languages such as C++, JavaScript, HTML/CSS

To the SECOND PLACE PRIZE winners of Fleming College Innovation and Technology Showcase 2021.

A hearty congratulations to this team for their consistent delivery of excellent work in competition with 43 teams in 3 Technology Programs, Wireless Information Networking (WIN), Computer Investigations (CSI), Computer Technologies (CTY) and Mechatronics (MEC).

The Judges were highly impressed. Keep up the great work and your careers will be very rewarding.

Best of luck, Cory and Samad.

Regards
Alwyn Appiah

Professor, IT Applied Projects
School of Business and IT

www.flemingcollege.ca


Team Name:

Magna Ipsum

Team Members Names:

Cory Lamer, Samad Ahmed

Program of Study:

Computer Engineering Technology

Mentor Name:

Mamdouh Mina

Project Name:

CTY1209-01 Fix A Leak Plumbing

Sponsor Name:

Tom Donoghue



Sponsor Organisation:

Fix a Leak Plumbing


Brief Description Of Project:

To develop a web application linked to a database to store plumbing parts information as well as allow efficient costing of materials and projects. The website provides the user with the ability to create, store, update, and delete parts in the database as well as use them to generate invoices/quotes to perform cost analysis.

Project Objective:

The client desired the creation of a database to store an extensive list of parts as well as an application that would allow for efficient costing of materials and projects. The database was required to be dynamic in the sense that it could be consistently modified to reflect new changes such as the addition of new parts, removal, and modification of existing parts. A key component of the application was to use the information in the database to develop quotes and invoices for cost analysis.

The measurable outcomes can be defined as:

  • Creation of database with CRUD operations (create, read, update, delete).
  • Import and export spreadsheets to and from the database.
  • Invoice system allowing a user to generate invoices for clients using the information within the database.
  • Website interface that is mobile friendly

Project Innovation:

  • As an alternative to developing an application for Android we chose to create a website that is mobile friendly that would be usable on any device with an Internet connection.
  • Selected MongoDB as our choice for database as it is a simple, dynamic, and scalable NoSQL database known for its flexibility and performance saving us time from needing to use an SQL type database that tends to be rigid.
  • Used ASP.NET C# developed by Microsoft for the backend as it is intuitive, fast at processing information, and efficiency compared to other website backend languages such as NodeJS, Python, Ruby on Rails, and PHP.

Challenges & Solutions:

  • Adjusting how to effectively work as a team together while both of us worked remotely on individual proportions on the project required a great deal of communication. This was achieved by adhering to a set schedule and being sure to combine the application every 1-2 weeks so neither of us would overlap on work. We used tools such as Agile project management to conduct weekly progress meetings to assign tasks(meeting minutes), GitHub to store the current version of the project, and a chatting client known as Discord to discuss the daily tasks and have meetings about the project with each other.
  • An issue we encountered early in our development was trouble connecting to our MongoDB database despite having a proper connection. Similarly, we had issues type-casting information too and from the database. We resolved this by closely reviewing our code and identified discrepancies in the connection string.
  • After we developed a working CRUD application (Create, Read, Update, Delete) we looked towards adding search functionality. Originally, we attempted to implement it through ASP.NET razor pages to no avail. After further research we created a function that uses MongoDB commands to parse through the database and applied that function to our application with success.
  • While working on the invoice system we noticed that we were unable to display more than one model in a single ASP.NET razor page as only one model can be declared at a time. This was resolved by creating another class that contained a “package” of all models.
  • The most common solution to our problems was tied to thoroughly reviewing our code and identifying discrepancies. After reviewing written code, we would research various methods to accomplish the tasks we desired. Some solutions were derived from creativity and others from seeking alternative methods.

Project Results or Progress:

  • Invoice System: 3 Weeks
  • CRUD System (Create, Read, Update, Delete): 2.5 Weeks
  • Table formatting, Sort, Data Export, and Query: 1.5 Weeks
  • Detect Data Duplication and Import spreadsheet to Database: 1.5 weeks
  • Profit tracking system based on completed Jobs: 2 weeks
  • Website Formatting/Deployment: Ongoing

For the development of our web application, we had timelines in mind for how long each function would take for completion. Every day was productive, and consistently met timelines we had set for function completion. We consulted with our client in a bi-weekly manner, one meeting and one progress report each month. Each interaction with the client was met with a positive response on our progress, and if any suggestions were made, we implemented them swiftly.


Lessons Learned:

  • Before we began the project, we had an introductory understanding of databases and web development acquired during our classes in the CTY(Computer Engineering Technology) program. In terms of databases, we had familiarity with SQL type databases however, MongoDB is a NoSQL database and required research. We first sought to learn how MongoDB operates and the extent of its flexibility. From our research and testing we learned how simple and flexible MongoDB is compared to SQL based databases and were satisfied with our selection.
  • After gaining an acceptable amount of knowledge regarding our database selection, we sought to choose an appropriate back-end language for web-application. In our studies at Fleming, we had learned about coding in Python, C++, and Java, this encouraged our decision to choose another OOP (Object-Oriented Programming) language known as ASP.NET C#. We learned how to create an application in ASP.NET and leveraged a relatively newer platform known as MVC Razor Pages to develop our web application.
  • Although we were able to accomplish our tasks with this language, we did not consider its compatibility with MongoDB. MongoDB C# drivers are not fully fleshed out and this created obstacles along the way. If we had chosen a different language such as NodeJS that had more refined related drivers, the degree of difficulty whilst coding functions would have been significantly less.
  • During the development of our project, we used GitHub to upload our application as we made changes and added functionality following an Agile development cycle. This proved to be a very useful tool as it also provided the option to delegate tasks to team members and allowed us to effectively distribute work and mark tasks as in-progress or complete.
  • Throughout our work on this project, we gained new knowledge on databases and web development. We were pleased with our choice of selecting MongoDB and would likely use it again in the future. In terms of back-end language, next time we would research further on languages most compatible with MongoDB and likely select something other than ASP .NET C#. In future projects we will also not make the mistake of making requests without deadlines, as we have learned it can cause delays in project progress.

Short Video: