PBP Marketplace

The PBP marketplace webapp is a side project I built to learn more about JSON Web Tokens (JWTs), Unit Testing, Deployment Pipelines and API Documentation.

In this project I utilized technologies like: the google maps API, MongoDB, Flask, Angular, Heroku and JWTs. The end result was an app that allows users to make orders and see the shops they ordered from on a map.

placeholder image

Type

Solo Project

Documentation

View API Documentation

or

Source code  

Live

View Site

Project Purpose and Goal

This project included multiple moving parts. I therefore took a phased approach to building it. Where for each API resource built, the adjacent user interface followed. This enabled me to keep making progress on both fronts and to pick up breaking changes and incompatibilities incrementally as the project grew.

Breaking down the tech stack

The core idea for the stack I chose was one where the technology did not stand in the way of my exploration of the topics I wished to explore.

For the back end, Python (flask) made the most sense. It was lightweight and took next to nothing to setup as seen on the image on the left. It also has a library that supports MongoDB which was my database of choice.

For the frontend, I picked Angular(TypeScript) simply because I am familiar with it and setting it up was a breeze.

Heroku was my chosen deployment factory as it supports both Flask and Angular applications and it has provisions for automated Deployment pipelines.

Problems and Thought Process

Like most projects, I ran into a few bumps along the way. One challenge was the organization and structure of the code. Because of the project's size, I realized how important it was to have a clear and organized structure.

I strived to keep components as reusable as possible. I achieved this by making sure that the components were single function. Which made them easy to test and debug.

Lessons Learned

I could spend all day describing the lessons that I learned working on this project, but the most important ones involved my newfound understanding of Building and documenting Rest APIs, use of JWTs for authentication and authorization, Git management, TypeScript, Google Maps API, and Kanban boards for project management.

When I first began, my main objective was to hack things together and just get them working and move on. But now I know how doing so can come back to bite you. And while I still start out with the get it working then get it readable principle, I spend a lot more time refactoring for the best readability and far fewer headaches