Programming Projects


A collection of a few of my favourite projects!

CRM Software


Proprietary Software for a Client


I have teamed up with a group of developers to create CRM software for small businesses to help them manage their customers and workflow.

This project uses the Laravel framework, an SQL database, ans React.js. I haven't included the project demo and GitHub links since this is a proprietary project for a client.

The CRM software has several useful features like customer contacts and leads management, task management, invoicing, and quotes. The project is in the beta phase with the client for end-user review and validation. We will continue to add more features to this project. I have also created a dynamic form builder application that I will be integrating with this project.

Blood Sense





Blood Sense is a comprehensive tool that puts you in the driver's seat of your well-being. Whether you're monitoring your blood test results or simply organizing your bloodwork documents, Blood Sense makes it easy!

Made as a full-stack desktop web application, it will help people better organize and track their bloodwork history to spot trends, and take action. Users can also manually upload their bloodwork documents to one place, which are encrypted at rest. I have made this as an extension to the mobile version of this app with over 1000 downloads on the Google Play Store, which can be found here.

Form Builder


Proprietary Software for a Client


The dynamic form builder is a full-stack application I have created with the React JS framework (front-end) and Node JS (back-end), Javascript, HTML, CSS, MySQL (for the database), and Amazon Web Services (hosting static files). I haven't included the project demo and GitHub links since this is a proprietary project for a client.

This web application allows users to create dynamic forms with an interactive user interface. The application allows the users to create forms with several inputs such as text, paragraph, radio, checkbox, and files. The user can make these forms public (e.g. public surveys) for accepting responses and sharing the link with others.

Users must create an account to create and share forms. However, a user does not need an account to answer survey forms created by other users. These forms have an option to be password protected as well, in case the creator wants to make sure only select people with the password can submit responses. The form creator can view and delete the responses received and the form itself. Additionally, every user with an account on this website can modify their personal information collected during registration and add a profile picture.

E-Learning Portal


HarvardX CS50 Web Programming Capstone Project



E-learning Portal is a web application I have created to provide virtual classrooms to students and teachers during online learning.

I created this application using the Django Python framework (front-end and back-end), Python, HTML, CSS, PostgreSQL (for the database), and Amazon Web Services (hosting static files).

The app has two different types of users. You can register as a teacher or as a student. If you register as a teacher, you can create classrooms, and inside those classrooms, you can create quizzes, assignments with files, and announcements. If you register as a student, you can join classes with a unique code generated for that class.

The students can submit assignments and quizzes, while the teacher can grade the assignments. The web application automatically grades the multiple-choice quizzes.

Both students and teachers can post announcements and class comments in the classroom. Students and teachers can use the class comments feature for group discussions or communicating privately.

Additionally, the users can upload profile pictures to customize their profiles. This project was my submission for the capstone project for CS50's Web Programming course offered by HarvardX.

Pathfinding Visualizer



I have created the pathfinding visualizer tool with the Angular Framework with Typescript, HTML, and CSS. It helps demonstrate how various algorithms find the path from point A to B. The pathfinding algorithms have numerous practical applications for navigation and exploration for efficient routes.

I have used Dijkstra's Algorithm, Breadth-First Search Algorithm, and the A* Algorithm in this tool. Dijkstra's Algorithm and Breadth-First Search search all the possible nodes in similar ways with a different implementation, while A* uses heuristics to optimize and guide its search. You can create custom wall patterns by drawing on the grid or letting it generate wall patterns for you. It also comes with mazes that you can try out as well.

Chess Engine


HarvardX CS50 Capstone Project



I have created this chess engine with JavaScript, HTML, and CSS. The computer can play against you with three difficulty levels: easy, medium, hard.

The chess engine uses the minimax algorithm to decide the best move to make. The minimax algorithm examines a large tree of possible moves that can be played by the computer and the opponent (human player) depending on how far ahead into the game the algorithm looks. The number of moves the algorithm looks into the future refers to the depth of the algorithm. The greater the depth, the better the algorithm plays. Of course, the greater the depth or moves it looks into the future, the more it slows down the computer since minimax is a recursive algorithm. The number of possible moves increases exponentially per depth.

There is also a separate section that provides global chess stats from chess.com. The stats are obtained from an API in JSON format using XMLHttpRequests. The stats feature the top 50 players in the world on chess.com, separated by different game modes such as rapid and bullet chess. This website is responsive and can be viewed on computers and mobile devices. Additionally, the users can upload profile pictures to customize their profiles. This project was my submission for the capstone project for CS50's Computer Science course offered by HarvardX.

Sorting Visualizer



I have created the pathfinding visualizer tool with the Angular Framework with Typescript, HTML, and CSS. It helps demonstrate how various algorithms sort a randomly generated list of numbers shown as bars of different lengths.

The program compares different algorithms for their efficiency and the time they take to sort the same set of numbers. For example, using bubble sort on a list of 100 numbers would be less efficient in terms of speed than using quicksort, merge sort or heap sort. However, bubble sort can be very efficient when there is a memory shortage since it uses less memory. It uses less memory because it does not need new temporary data structures for sorting.

The best algorithms implemented in this app include quicksort, merge sort, heap sort, and radix sort.

Blood Test Tracker


Available on Google Play



I created the Blood Test Tracker mobile app using Android Studio with Java. The mobile app is currently available for download on the Google Play Store.

The Blood Test Tracker mobile app can track your blood test results from various tests for future reference.

The user inputs the values from their blood test results into a new record with a list of fields, and the app stores that data. The user can also input custom data such as weight. He can create profiles, enabling multiple people to store their data on one device. The app also has a guide that explains what different values in the results mean with detailed information. The user can also compare specific result values such as vitamin D across various records from multiple dates, allowing the user to see if the values improved or deteriorated. The app uses object-oriented programming principles for organizing the code and program flexibility.