Autogarden

A website and RESTful API I created for configuring and monitoring an automatic watering system for my herb garden that is controlled by an Arduino because I don't want to have to water it myself.

As a part of this project, I created a C++ library to easily activate sensors and actuators connected to an Arduino through multiple layers of hardware logic components, such as shift registers and multiplexers.

This project is fully tested with unit, integration, and functional tests and deploys to Heroku via a CI/CD pipeline.

  • JavaScript
  • Python
  • C++
  • Arduino
Gif of AutoGarden login action
Gif of creating a Garden
Gif of Watering Station detail page

Path-Finding Algorithm Visualizer

A website I created for visualizing the search algorithms DFS, BFS, Dijkstra's Algorithm, Greedy Best-First Search, A* Search, and Bidirectional Search on a 2D grid.

The grid can be modified with mazes of walls and weights which are generated using the algorithms Randomized DFS, Randomized Prim's Algorithm, or Recursive Division. You can also manually add walls and weights to the grid with the click of your mouse!

Although this project is permanently hosted on GitHub Pages, I had used this project to gain experience with creating a CI/CD pipeline to automate provisioning and deployment to staging and production servers on Digital Ocean.

  • JavaScript
  • HTML/CSS
  • Python
  • Jest
  • GitHub Actions
  • Terraform
Dijkstra's Algorithm search and Randomized DFS maze generation
A* Search and Randomized Prim's Algorithm maze generation
Bidirectional Search and Recursive Division maze generation
A* Search and Random Weight maze generation
Greedy Best-First Search and Randomized Prim's Algorithm maze generation
A* Search and Recursive Division weight maze generation

Web Games

A website I created for playing Sudoku, Tic Tac Toe, and Snake. Sudoku was implemented using the Sudoku Solver and Generator Algorithm capable of generating puzzles of 4 different difficulties. The opponent player in Tic Tac Toe makes its moves based on 3 different algorithms - completely random moves (Easy), Minimax (Medium), and Minimax with αβ Pruning (Hard).

This project is fully tested with unit, integration, and functional tests written in Jest and Selenium, and deploys to Heroku using a CI/CD pipeline.

  • JavaScript
  • Python
  • Node.js
  • Jest
  • Selenium
A game of Snake
A game of Sudoku
A game of Tic Tac Toe
The Web Games site