Note: The updated version of this project is lost due to the deletion of my old account Originally shared on july 19 2024