Compra Local - Hackovid
Compra Local
🛒 Web application for activating local businesses and making your neighborhood a better place
Summary
What is this?
Compralocal.cat is an e-commerce platform to connect local bussines with the neighbors around. Local bussines can list their products, and users can purchase products from the different places around.
Also, we added a system to request help to pick-up the orders in case that you cannot leave your home for any reason.
And remember, stay home, stay safe.
Tech specifications
The backend of the application is done with python, using Flask as a framework, and it’s an API that follows the OpenAPI standart. About the frontend, we designed two different applications in React, one for the customer and another one for the places. Both apps are responsive and completly usable on phones and tablets and in the future can be exported as a Native apps with some more development.
The frontend is deployed on Netlify and the Backend on Google Cloud using CloudRun and a CloudSQL database using PostgreSQL.
Organization
This project was built thanks to a team of 4 members.
Carlota and Elena took the responsability of building the 3 clients (landing, client and local) using pure HTML and Bootstrap for the first one and React Hooks for the rest two. Andreu and Albert implemented all the Backend API and made the deployment flawless.
We used almost all the features that GitHub allowed us. We ended up having more than 66 Closed Pull Requests, using Issues and Projects, and making the deployments easier using GitHub Actions. Also, we were integrating all the features using different branches for making the parallelism better.
Stack
This API is being developed using Python 3.7 as a programming language. We have used Flask and OpenAPI (connected themselves with Connexion library), integrated with Docker compose.
This API is hosted in a CloudRun using the related Dockerfile using a PostgreSQL database (specified below) deployed in CloudSQL. In local, for testing purposes, we deploy the API using uWSGI and Nginx using a replica of the production database inside a Docker container.
The code follows the PEP8 standard, being valided by Flake8, and each endpoint is being valided using unitests. We ended up having more than 150 tests.
For making the deployment easier between versions, we integrated a pipeline using GitHub actions for every commit in the master brach which runs the tests and if it success, deploys to CloudRun.
Documentation
Given the fact that we used OpenAPI for making the development easier, we could take advantage to use ReDoc for creating a beautiful API documentation. Actually, it was very useful for making the integration with the Frontend side since the UX team was reading this documentation.