{"id":57,"date":"2021-03-23T18:55:21","date_gmt":"2021-03-23T18:55:21","guid":{"rendered":"https:\/\/dragonfruit.tk\/?page_id=57"},"modified":"2023-12-08T00:59:31","modified_gmt":"2023-12-08T00:59:31","slug":"projects","status":"publish","type":"page","link":"https:\/\/chenminghao.co\/index.php\/projects\/","title":{"rendered":"Projects"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">wtr<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">A smart water bottle that tracks user&#8217;s drinking habits and offers helpful reminders to stay hydrated<\/h4>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/matthewcn56\/ecem119-wtr\" rel=\"\">Github repo<\/a><\/div>\n<\/div>\n\n\n\n<p>Arduino | C++ | Firebase Realtime Database | Next.js | Typescript<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Octopus<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Share files and short text to any device (AirDrop for Everyone)<\/h4>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/octopus.chenminghao.co\/\">Live Page<\/a><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/minghao912\/octopus-signal\">Github repo (server)<\/a><\/div>\n\n\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/minghao912\/octopus-ui\">Github repo (ui)<\/a><\/div>\n\n\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/minghao912\/octopus-ios\" rel=\"\">Github repo (iOS)<\/a><\/div>\n<\/div>\n\n\n\n<p>Next.js | MUI | Typescript | Go | Swift | WebSockets | AWS Lambda (Java)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Brewin Interpreter<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">An interpreter for the Brewin, Brewin++, and Brewin# variants of the LISP language<\/h4>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"http:\/\/barista.fly.dev\">Check it out (Spring 2023)<\/a><\/div>\n\n\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/minghao912\/CS131\">Github repo<\/a><\/div>\n<\/div>\n\n\n\n<p>Python<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Home Router Simulator<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">A simulator of an average home router \u2014 LAN\/WAN packet forwarding, static\/dynamic NAT, and ACL firewall<\/h4>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\">Github repo available upon request<\/a><\/div>\n<\/div>\n\n\n\n<p>C++ | TCP\/IP<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Cloudbook<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">An imitation blogging platform built using Cloudflare Workers<\/h4>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/d8829eb4.cloudflaregeneralassignment.pages.dev\/\">Live page<\/a><\/div>\n<\/div>\n\n\n\n<p>Next.js | MUI | Typescript | Go (Backend)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">PandaCC<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">A web application to convert between Chinese Simplified and Chinese Traditional<\/h4>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"\/pandacc\">Live page<\/a><\/div>\n<\/div>\n\n\n\n<p>Svelte | Bootstrap | Typescript<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">JPType<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">A typing game that sources its words from the JLPT vocabulary lists<\/h4>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"\/type\">Live page<\/a><\/div>\n<\/div>\n\n\n\n<p>Bootstrap | HTML | CSS | Typescript<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">MangaPDF<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">A node.js app that takes in a bunch of images, de-noises them, and combines them into a single PDF<\/h4>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/minghao912\/MangaPDF\">Github repo<\/a><\/div>\n<\/div>\n\n\n\n<p>Node.js | Typescript<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Pi Runner (Dino ver.)<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">Chrome&#8217;s &#8220;No Internet&#8221; Dino game but you have to enter digits of pi instead of using the space bar<\/h4>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained\">\n<div class=\"wp-block-buttons is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"\/pirunner\">Live page<\/a><\/div>\n\n\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/github.com\/minghao912\/PiRunnerDino\">Github repo<\/a><\/div>\n<\/div>\n<\/div>\n\n\n\n<p>HTML | CSS | JS<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Mahjong Hand Validator<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\">A C++ program that verifies if a given Mahjong hand is valid<\/h4>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"\/index.php\/projects-mahjong\/\">Github gist<\/a><\/div>\n<\/div>\n\n\n\n<p>C++<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>wtr A smart water bottle that tracks user&#8217;s drinking habits and offers helpful reminders to stay hydrated Arduino | C++ | Firebase Realtime Database | Next.js | Typescript Octopus Share files and short text to any device (AirDrop for Everyone) Next.js | MUI | Typescript | Go | Swift | WebSockets | AWS Lambda (Java) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":""},"_links":{"self":[{"href":"https:\/\/chenminghao.co\/index.php\/wp-json\/wp\/v2\/pages\/57"}],"collection":[{"href":"https:\/\/chenminghao.co\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/chenminghao.co\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/chenminghao.co\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chenminghao.co\/index.php\/wp-json\/wp\/v2\/comments?post=57"}],"version-history":[{"count":58,"href":"https:\/\/chenminghao.co\/index.php\/wp-json\/wp\/v2\/pages\/57\/revisions"}],"predecessor-version":[{"id":222,"href":"https:\/\/chenminghao.co\/index.php\/wp-json\/wp\/v2\/pages\/57\/revisions\/222"}],"wp:attachment":[{"href":"https:\/\/chenminghao.co\/index.php\/wp-json\/wp\/v2\/media?parent=57"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}