The Android application (APK) is available at https://posthop.momoperes.ca/download.apk!
Source code: https://github.com/posthop
We asked ourselves, how can we improve package delivery for a community? The idea behind Post Hop is to make the shipping experience more inclusive for everyone, including people with physical disabilities and those living in remote regions. By using crowd-sourced couriers, Post Hop brings the post office to your doorstep.
What it does
Post Hop provides a service to schedule package shipments and deliveries at the user's convenience. A Post Hop user would have the option to request a courier to transport packages to and from the post office.
In other words, Post Hop provides two main services:
requesting a courier to retrieve a package from the post office to the user's location, and
requesting a courier to deliver a package to the post office from the user's location.
How we built it
Post Hop is built on modern web technologies.
The application is entirely hosted on the Google Cloud Platform, making use of the Compute Engine and Kubernetes for automatic update-rolling, scalability, and load-balancing across 100 replicas. We also use the GCP Container Repository for publishing Docker images for deployment.
The entire deployment process (from pushing on GitHub to Kubernetes deployment on GCP) is automated using GitHub webhooks and CircleCI workflows.
The application is separated in three individual clusters: "proxy", API, and "static". The proxy service redirects the users to the right cluster based on the URL path. The resources for the three clusters can be scaled independently.
The uptime of the services is monitored using Stackdriver, a GCP-powered service.
The front-end application is a responsive Angular 7 application, and is written in TypeScript, SCSS, and HTML.
The website was ported to Android using Apache Cordova (native application).
The back-end REST API is written in Python 3.6 using the Flask library.
The website is completely secured using SSL certificates issued by Let's Encrypt.
What's next for Post Hop
A few features we are looking to add are:
Allow users to ship packages to postal offices
A system to keep track of the driver's location (integrating a map service. e.g: Google Maps).
Have a way to schedule future drop-offs.
Integrate with Canada Post to verify tracking numbers and improve the user experience.
The Post Hop mission is to bring a positive impact to a variety of communities. For instance, the crowd-source delivery system can be used for various social causes, including distributing goods in Christmas Food Drives and in homeless shelters.
Accomplishments that we're proud of
Post Hop has a slick web interface and Android app!
Shared source code for web front-end and native Android app.
Infrastructure in place for high scalability.
A professional-grade continuous deployment system, with an automatic pipeline from the GitHub source to the Kubernetes update-rolling.
What we learned
How to properly use networking within GCP (VPC, subnets) with various sercices (Compute Engine, Kubernetes Engine).
Android app development using Apache Cordova.