{"id":14990895,"url":"https://github.com/yoongkang/kontris","last_synced_at":"2025-10-04T02:50:04.901Z","repository":{"id":39563182,"uuid":"154443559","full_name":"yoongkang/kontris","owner":"yoongkang","description":"Tetris clone built using kontra.js","archived":false,"fork":false,"pushed_at":"2022-12-30T01:25:25.000Z","size":918,"stargazers_count":6,"open_issues_count":19,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-12T03:29:14.665Z","etag":null,"topics":["game","javascript","js13kgames","kontra","kontra-js","tetris","typescript"],"latest_commit_sha":null,"homepage":"https://kontris.yoongkang.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yoongkang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-10-24T05:22:35.000Z","updated_at":"2023-06-11T21:21:22.000Z","dependencies_parsed_at":"2023-01-31T10:15:29.391Z","dependency_job_id":null,"html_url":"https://github.com/yoongkang/kontris","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yoongkang/kontris","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yoongkang%2Fkontris","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yoongkang%2Fkontris/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yoongkang%2Fkontris/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yoongkang%2Fkontris/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yoongkang","download_url":"https://codeload.github.com/yoongkang/kontris/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yoongkang%2Fkontris/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278257822,"owners_count":25957273,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["game","javascript","js13kgames","kontra","kontra-js","tetris","typescript"],"created_at":"2024-09-24T14:21:02.772Z","updated_at":"2025-10-04T02:50:04.853Z","avatar_url":"https://github.com/yoongkang.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kontris\n\nHere's Kontris: [https://kontris.yoongkang.com](https://kontris.yoongkang.com)\n\n## What's this?\n\nThis is a Tetris clone built with [kontra.js](https://straker.github.io/kontra/).\n\n## How to play?\n\nJust use your arrow keys. You could also rotate left and right using the Q and W keys.\n\n## Why did you make this?\n\nI was talking to a friend attending a coding bootcamp, and I mentioned how I was a little tired of seeing Tic-Tac-Toe in portfolios of bootcamp graduates.\n\nDon't get me wrong, I think making Tic-Tac-Toe is a great achievement. But it's a little overdone because literally everyone else also does it.\n\nI suggested doing something along the lines of Tetris instead. A lot more impressive.\n\nIf you're a bootcamp student, please look at this code to see how you can use Kontra.js to create a similar game, not necessarily Tetris. You could also fork this and add some features, like:\n\n* Scoring\n* The concept of levels, currently we have one speed. Can you vary the speed based on how much you've scored?\n* Show the next piece\n* Design a better random generator for Tetrominoes -- currently it's using `Math.random()` but a much better way is to generate a sequence of 7 Tetrominoes ordered randomly. This prevents you from possibly going a long time without a stick piece, for example.\n* High score -- can you integrate this with a Rails or Django backend to save the high score?\n* Refactoring -- this code isn't perfect, and done over a course of two evenings where I wasn't completely sober.\n\nIf you've done some changes you're happy with, you are quite welcome to make a Pull Request and I'm happy to give you personalised feedback on your code (I'll be nice, don't worry).\n\nYou could also keep this in your own repo and highlight the changes you've done. Remember, in your career you're far more likely to work on an existing codebase than a one you started -- so if you're able to show that you can do this it would be very impressive.\n\n## How do I build this?\n\nYou need a relatively recent version of Node.js and npm.\n\nThen run these commands:\n\n```\n$ npm install\n$ npm run start\n```\n\nYou should then be able to view this on https://localhost:8080\n\nTo create a production build:\n\n```\n$ npm run build\n```\n\nHave fun!\n\n## I have a question\n\nAlways happy to help you out. Please create an issue, or email me at yoongkang.lim@gmail.com\n\n## License\n\nMIT","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyoongkang%2Fkontris","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyoongkang%2Fkontris","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyoongkang%2Fkontris/lists"}