I'm a current university student who loves to code in React and TypeScript, but I have also programmed using other languages including C, C++, Java, Python and Shell (Dash to be specific).
A note-taking app that combines handwritten and typed notes, with an Obsidian-like graph view to be implemented soon.
Technologies used:
React
TypeScript
Vite
Design patterns used:
Built-in React state management: useContext() + useState() + custom hooks
SOLID principles: Single-Responsibility and Open/Close
MindNote
A simple web-based note-taking app.
Technologies used:
React
TypeScript
NextJS
Design patterns used:
State management: Zustand + useState() + custom hooks
SOLID principles: Single-Responsibility
University projects
(due to the possibility of other students plagiarising my work if I show my code, I cannot show my code for these university projects and their images)
Back-End of a Quiz Game
A backend with several RESTful API endpoints for adding, editing and playing quizzes. Built teamwork, communication and remote-working skills through weekly standups and meetings via Microsoft Teams.
- Developed a backend server with 34 RESTful API endpoints as a team of 5 using Express.js and TypeScript that was crucial for the frontend to start sessions of, join players to and display stored quizzes, among other quiz features, allowing the web application to work according to the provided specification
- Contributed to the stability of the repository’s code by regularly git pulling to avoid merge conflicts, as well as approving each other’s code and running our custom-made Jest unit tests before merging to the main branch, resulting in almost no errors ever entering the main branch of the repository
- Communicated with teammates through scheduled written weekly standups and weekly meetings (with recorded minutes) on a call and through helping each other with code issues and debugging to ensure collaboration with the team and completion of the project by the deadline
Technologies used:
Express.js
TypeScript
Jest
Design patterns used:
General clean code principles, including splitting up large functions (> 50 lines) and using many helper functions
Back-End of a Train Simulator
A back-end that supports train movement across different tracks and moving at different speeds across those tracks. Built with OOP and SOLID principles using Java.
- Designed the backend using object-oriented programming and SOLID software architecture principles in Java, resulting in reusable, de-coupled and clean pieces of code and a codebase optimised for long-term code maintenance and feature additions, reducing future refactors of the codebase
- Modelled the entire backend structure by making a UML diagram that included the backend’s inheritance structure, relevant interfaces and abstract classes before implementing it, significantly reducing the time required to implement the backend due to good planning
- Programmed the backend according to a provided specification through the ‘design by contract’ principle rather than the defensive programming principle, reducing its code complexity
Technologies used:
Java
Design patterns used:
All SOLID principles
Front-End of a Quiz Game
A quiz game that supports adding quizzes, editing its questions, and a multiplayer feature with an entertaining lobby screen.
- Designed a responsive client-side application using asynchronous JavaScript, otherwise known as AJAX
- Implemented the dynamic varying of how components are rendered using application state from React hooks, such as useState, improving responsiveness
- Developed an intuitive design layout using the Material UI framework, resulting in easier app usability
Technologies used:
React
TypeScript
AJAX
Design patterns used:
Built-in React state management: useState()
SOLID principles: Single-Responsibility
Search Page Rank Program
A program that sorted a given list of page ranks, using a custom linked list data structure built from scratch. Accounted for memory management to avoid memory leaks and debugged code to avoid segmentation faults.
- Developed a program that used 2 sorting algorithms’ stability properties running after one another to sort pages in the desired order
- Considered the time complexity of the program in terms of Big-O notation by analysing every function call’s time complexity as well as control statements such as loops, resulting in a program that takes less time to run
- Implemented appropriate fixes to segmentation faults and other errors by thoroughly debugging the program using well-known tools including GDB and AddressSanitizer, leading to less errors and program crashes during use
Technologies used:
C (Programming Language)
Design patterns used:
General clean code principles, including splitting up large functions (> 50 lines) and using helper functions instead
C++ Filtered String View Program
A program that implements an abstraction of a string that only allows the viewing of the string’s characters according to a custom function.
Utilised C++ best practices and features, such as:
- enabling implicit casting in its constructors for certain parameters,
- implementing custom operator overloads for the filtered string view’s class,
- using STL data structures such as std::vector for convenient and safe memory management
Technologies used:
C++
Design patterns used:
General clean code principles, including using helper functions and splitting up large functions (> 50 lines), in accordance with the DRY principle
Git Version Control Clone in Python
A program with a basic implementation of some of Git's features using Python.
- Used Python 3 to script a subset of Git’s version control features, including git init, add, commit, and a basic version of git show
- Utilised various Python features in the implementation, including data structures like lists, libraries like OS, Regex and Sys, and exception handling using a try-except block
- Abided by clean code and style rules, including refactoring larger functions to use helper functions and commenting where needed