Alex Ng - ProjectEduTecX
7/2023 - 2/2024
Paving the way to sustainable education
Disclaimer
This project was a project assignment at Nanyang Polytechnic Singapore. Any and all monetary aspects of this project are demo-only, in other words, please do not use a real bank card.
About
This project aims to provide more environmental-friendly education materials. By bridging the gap between vendors, educators and students, we aim to make the learning process more sustainable and accessible.
What I did
I worked mainly on the back-end and JavaScript portions of this project, and was not heavily involved in the UI portions.
1. RESTful API
I built the infrastructure for handling API requests. This allows EduTecX to handle JSON and FormData payloads with the same code, and ensure that payloads conform to each endpoint-specific data structure.
See the API Parser source code here and it in action here.
2. Cloudinary CDN w/ Proxying
I built the infrastructure for uploading and serving media. This allows users to upload and retrieve textbooks and user profile images. In development, media is uploaded to a folder locally. See the CDN provider implementation here.
Served media is proxied our the edutecx.ngjx.org
domain. See the proxy implementation here.
3. Email service
I integrated resend.com API into EduTecX which allows us to send 2FA verification links and receive feedback from our customers. See the source code here.
4. PostgreSQL/SQLite Database
Using flask_sqlalchemy
ORM, I built all the SQL database schemas. We use PostgreSQL hosted on Supabase in production and SQLite locally in development. See the schemas here.
5. CI/CD Pipeline
I built the CI/CD pipeline.
Testing
Testing is done with pytest on python versions 3.11 and 3.x (currently 3.12). See the workflow here.
Deploying
We build a docker image and publish it to GitHub Packages here, then trigger a redeploy which uses the published docker image. See the workflow here.
License
This project is published under the GNU General Public License.
Disclaimer
This project was a project assignment at Nanyang Polytechnic Singapore. Any and all monetary aspects of this project are demo-only, in other words, please do not use a real bank card.
About
This project aims to provide more environmental-friendly education materials. By bridging the gap between vendors, educators and students, we aim to make the learning process more sustainable and accessible.
What I did
I worked mainly on the back-end and JavaScript portions of this project, and was not heavily involved in the UI portions.
1. RESTful API
I built the infrastructure for handling API requests. This allows EduTecX to handle JSON and FormData payloads with the same code, and ensure that payloads conform to each endpoint-specific data structure.
See the API Parser source code here and it in action here.
2. Cloudinary CDN w/ Proxying
I built the infrastructure for uploading and serving media. This allows users to upload and retrieve textbooks and user profile images. In development, media is uploaded to a folder locally. See the CDN provider implementation here.
Served media is proxied our the edutecx.ngjx.org
domain. See the proxy implementation here.
3. Email service
I integrated resend.com API into EduTecX which allows us to send 2FA verification links and receive feedback from our customers. See the source code here.
4. PostgreSQL/SQLite Database
Using flask_sqlalchemy
ORM, I built all the SQL database schemas. We use PostgreSQL hosted on Supabase in production and SQLite locally in development. See the schemas here.
5. CI/CD Pipeline
I built the CI/CD pipeline.
Testing
Testing is done with pytest on python versions 3.11 and 3.x (currently 3.12). See the workflow here.
Deploying
We build a docker image and publish it to GitHub Packages here, then trigger a redeploy which uses the published docker image. See the workflow here.
License
This project is published under the GNU General Public License.