{"id":432,"date":"2022-09-01T02:55:22","date_gmt":"2022-09-01T02:55:22","guid":{"rendered":"https:\/\/mechied.com\/?post_type=portfolio&#038;p=432"},"modified":"2022-09-01T02:55:23","modified_gmt":"2022-09-01T02:55:23","slug":"reactdoku","status":"publish","type":"portfolio","link":"https:\/\/mechied.com\/index.php\/portfolio\/reactdoku\/","title":{"rendered":"ReactDoku"},"content":{"rendered":"\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button aligncenter has-custom-width wp-block-button__width-75\"><a class=\"wp-block-button__link has-vivid-cyan-blue-to-vivid-purple-gradient-background has-background\" href=\"https:\/\/programmerd.com\/sudokuapp\/\" style=\"border-radius:0px\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Live Demo<\/strong><\/a><\/div>\n<\/div>\n\n\n\n<div style=\"height:21px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Reactdoku is an interactive Sudoku game I built in React. A live deployment&nbsp;<a href=\"https:\/\/programmerd.com\/sudokuapp\/\">is available here.<\/a>&nbsp;The game board is not your traditional 3&#215;3 sudoku board&#8211;instead the boards are rectangular&nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Latin_square\">Latin Squares<\/a>&nbsp;(like 2&#215;3 and 3&#215;2). The board suggests valid moves to the player as numbers are placed. The gameboard is a responsive CSS flex grid. While only one latin square size is generated by the demo site backend, a generic JSON file format can be used to create a game page of any dimensions, highlight rectangle pattern, initialization state, and answer state.<\/p>\n\n\n\n<p>The live demo site supports Continuous Integration\/Continuous Deployment via a git hook script on the remote server that automatically builds and deploys the project when I push an update from a development machine.<\/p>\n\n\n\n<p>The game boards are generated and loaded from a simple flask backend. The python code to generate game boards was created by James Monroe Hammer, a batchmate at The Recurse Center.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/mechied.com\/wp-content\/uploads\/2022\/08\/Screen-Shot-2022-08-28-at-2.44.01-PM.png\"><img decoding=\"async\" src=\"https:\/\/mechied.com\/wp-content\/uploads\/2022\/08\/Screen-Shot-2022-08-28-at-2.44.01-PM-500x317.png\" alt=\"\" class=\"wp-image-433\" width=\"650\" srcset=\"https:\/\/mechied.com\/wp-content\/uploads\/2022\/08\/Screen-Shot-2022-08-28-at-2.44.01-PM-500x317.png 500w, https:\/\/mechied.com\/wp-content\/uploads\/2022\/08\/Screen-Shot-2022-08-28-at-2.44.01-PM-300x190.png 300w, https:\/\/mechied.com\/wp-content\/uploads\/2022\/08\/Screen-Shot-2022-08-28-at-2.44.01-PM-768x487.png 768w, https:\/\/mechied.com\/wp-content\/uploads\/2022\/08\/Screen-Shot-2022-08-28-at-2.44.01-PM-400x254.png 400w, https:\/\/mechied.com\/wp-content\/uploads\/2022\/08\/Screen-Shot-2022-08-28-at-2.44.01-PM-600x381.png 600w, https:\/\/mechied.com\/wp-content\/uploads\/2022\/08\/Screen-Shot-2022-08-28-at-2.44.01-PM-800x507.png 800w, https:\/\/mechied.com\/wp-content\/uploads\/2022\/08\/Screen-Shot-2022-08-28-at-2.44.01-PM.png 1460w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><figcaption>Desktop  Layout<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/mechied.com\/wp-content\/uploads\/2022\/08\/Screen-Shot-2022-08-28-at-2.42.52-PM.png\"><img loading=\"lazy\" decoding=\"async\" width=\"305\" height=\"500\" src=\"https:\/\/mechied.com\/wp-content\/uploads\/2022\/08\/Screen-Shot-2022-08-28-at-2.42.52-PM-305x500.png\" alt=\"\" class=\"wp-image-434\" srcset=\"https:\/\/mechied.com\/wp-content\/uploads\/2022\/08\/Screen-Shot-2022-08-28-at-2.42.52-PM-305x500.png 305w, https:\/\/mechied.com\/wp-content\/uploads\/2022\/08\/Screen-Shot-2022-08-28-at-2.42.52-PM-183x300.png 183w, https:\/\/mechied.com\/wp-content\/uploads\/2022\/08\/Screen-Shot-2022-08-28-at-2.42.52-PM-300x493.png 300w, https:\/\/mechied.com\/wp-content\/uploads\/2022\/08\/Screen-Shot-2022-08-28-at-2.42.52-PM-400x657.png 400w, https:\/\/mechied.com\/wp-content\/uploads\/2022\/08\/Screen-Shot-2022-08-28-at-2.42.52-PM-500x821.png 500w, https:\/\/mechied.com\/wp-content\/uploads\/2022\/08\/Screen-Shot-2022-08-28-at-2.42.52-PM.png 564w\" sizes=\"auto, (max-width: 305px) 100vw, 305px\" \/><\/a><figcaption>Mobile Layout<\/figcaption><\/figure>\n<\/div>\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"ReactDoku Tour\" width=\"1200\" height=\"900\" src=\"https:\/\/www.youtube.com\/embed\/elpaqSxhgHA?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Interactive full stack React\/Flask Sudoku game<\/p>\n","protected":false},"author":1,"featured_media":433,"menu_order":9,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"_vp_format_video_url":"","_vp_image_focal_point":{"x":0.47,"y":0.49},"footnotes":""},"portfolio_category":[13,10,7,11],"portfolio_tag":[],"class_list":["post-432","portfolio","type-portfolio","status-publish","format-standard","has-post-thumbnail","hentry","portfolio_category-flask","portfolio_category-javascript","portfolio_category-python","portfolio_category-react"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mechied.com\/index.php\/wp-json\/wp\/v2\/portfolio\/432","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mechied.com\/index.php\/wp-json\/wp\/v2\/portfolio"}],"about":[{"href":"https:\/\/mechied.com\/index.php\/wp-json\/wp\/v2\/types\/portfolio"}],"author":[{"embeddable":true,"href":"https:\/\/mechied.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"version-history":[{"count":21,"href":"https:\/\/mechied.com\/index.php\/wp-json\/wp\/v2\/portfolio\/432\/revisions"}],"predecessor-version":[{"id":511,"href":"https:\/\/mechied.com\/index.php\/wp-json\/wp\/v2\/portfolio\/432\/revisions\/511"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mechied.com\/index.php\/wp-json\/wp\/v2\/media\/433"}],"wp:attachment":[{"href":"https:\/\/mechied.com\/index.php\/wp-json\/wp\/v2\/media?parent=432"}],"wp:term":[{"taxonomy":"portfolio_category","embeddable":true,"href":"https:\/\/mechied.com\/index.php\/wp-json\/wp\/v2\/portfolio_category?post=432"},{"taxonomy":"portfolio_tag","embeddable":true,"href":"https:\/\/mechied.com\/index.php\/wp-json\/wp\/v2\/portfolio_tag?post=432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}