{"id":20165298,"url":"https://github.com/w-henderson/kascreech","last_synced_at":"2025-04-10T00:53:18.798Z","repository":{"id":42229576,"uuid":"318789286","full_name":"w-henderson/Kascreech","owner":"w-henderson","description":"💡 Real-time multiplayer quiz platform to make learning fun, based on Kahoot and built with Rust and React.","archived":false,"fork":false,"pushed_at":"2022-08-03T18:07:02.000Z","size":5397,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-10T00:53:13.303Z","etag":null,"topics":["education","full-stack","kahoot","multiplayer","quiz","websocket"],"latest_commit_sha":null,"homepage":"https://kascreech.whenderson.dev","language":"Rust","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/w-henderson.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":"2020-12-05T12:59:27.000Z","updated_at":"2024-10-25T06:31:37.000Z","dependencies_parsed_at":"2022-09-11T23:01:44.733Z","dependency_job_id":null,"html_url":"https://github.com/w-henderson/Kascreech","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/w-henderson%2FKascreech","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/w-henderson%2FKascreech/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/w-henderson%2FKascreech/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/w-henderson%2FKascreech/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/w-henderson","download_url":"https://codeload.github.com/w-henderson/Kascreech/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248137995,"owners_count":21053775,"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","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":["education","full-stack","kahoot","multiplayer","quiz","websocket"],"created_at":"2024-11-14T00:37:19.268Z","updated_at":"2025-04-10T00:53:18.763Z","avatar_url":"https://github.com/w-henderson.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"assets/logo.png\" width=300\u003e\u003cbr\u003e\n    \u003cimg src=\"https://img.shields.io/badge/client-react-1f87a3?style=for-the-badge\u0026logo=react\" style=\"margin-right:5px\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/server-rust-b07858?style=for-the-badge\u0026logo=rust\" style=\"margin-right:5px\"\u003e\n\u003c/p\u003e\n\n# Kascreech\nKascreech is a real-time multiplayer quiz platform to make learning fun, and certainly not a blatent rip-off of Kahoot. Built in Rust and React, Kascreech is a joint project between myself and [flauntingspade4](https://github.com/flauntingspade4) which allows anyone to play a quiz with their friends. A production build of Kascreech can be found at [kascreech.whenderson.dev](https://kascreech.whenderson.dev).\n\n## How to Play\nTo select a quiz to play, visit [Kahoot's discover page](https://create.kahoot.it/discover). Kascreech has no database, so relies on Kahoot to store the actual quizzes! Once you've selected a quiz, copy its ID from the address bar (it should look something like `fb42b463-e549-4b18-a175-9ca8c510760a`), select \"Host\" on Kascreech, and enter the ID. Then hit \"Create\", and you're good to go! From there onwards, everything works exactly like Kahoot.\n\n## How to Run\n\n### Prerequisites\n- Cargo and Rust\n- NPM and Node\n- This repository\n\nEnsure the front-end dependencies are installed by running `npm i` in the client directory.\n\n### Running the Development Server\n1. Start the front-end by running `npm start` in the client directory.\n2. Start the server by running `cargo run` in the server directory. You can pass the address to bind it to as an argument, for example `cargo run -- 0.0.0.0:8000` to run on port 8000.\n\n### Deploying to Production\n1. Build the React app for production by running `npm run build` in the client directory.\n2. Build the Rust back-end by running `cargo build --release` in the server directory.\n3. Deploy on your platform of choice.\n\n### Command-Line Arguments\n```\nKascreech\nWilliam Henderson \u003cwilliam-henderson@outlook.com\u003e\nReal-time multiplayer quiz platform to make learning fun, based on Kahoot and written in Rust and React.\n\nUSAGE:\n    kascreech [addr] [static]\n\n    [addr]    The address to bind the server to. Defaults to `0.0.0.0:80`\n    [static]  The path to the front-end's static files. Defaults to `./client/build`\n```\n\n## Tech Stack\n\n### Client\n- Written using [React](https://reactjs.org/)\n  - [Create React App](https://create-react-app.dev/) toolchain\n  - [TypeScript](https://www.typescriptlang.org/)\n  - [Sass](https://sass-lang.com/) for styling\n  - [Material Community Icons](https://materialdesignicons.com/)\n\n### Server\n- Written in [Rust](https://www.rust-lang.org/)\n  - [Humphrey](https://github.com/w-henderson/Humphrey/tree/master/humphrey) for serving static content and communicating with the Kahoot API\n  - [Humphrey WebSocket](https://github.com/w-henderson/Humphrey/tree/master/humphrey-ws) for handling WebSocket connections\n  - [Humphrey JSON](https://github.com/w-henderson/Humphrey/tree/master/humphrey-json) for communicating with the client\n- Hosted using [GCP Compute Engine](https://cloud.google.com/compute)\n  - 1x `f1-micro` in `us-east1-b`\n- Proxied through [Cloudflare](https://cloudflare.com)\n\n### Cloudflare\nCloudflare is used to allow access to the WebSocket through HTTPS despite the Kascreech server itself not supporting it.\n\n## Screenshots\n\n### Desktop\n| | |\n| --- | --- |\n| ![Homepage screenshot](assets/screenshots_desktop/home.png) | ![Lobby screenshot](assets/screenshots_desktop/lobby.png) |\n\n| | |\n| --- | --- |\n| ![Question screenshot](assets/screenshots_desktop/question.png) | ![Leaderboard screenshot](assets/screenshots_desktop/leaderboard.png) |\n\n### Mobile\n| | | | |\n| --- | --- | --- | --- |\n| ![Homepage screenshot](assets/screenshots_mobile/home.png) | ![Question screenshot](assets/screenshots_mobile/guess.png) | ![Result screenshot](assets/screenshots_mobile/correct.png) | ![Placement screenshot](assets/screenshots_mobile/end.png) |","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fw-henderson%2Fkascreech","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fw-henderson%2Fkascreech","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fw-henderson%2Fkascreech/lists"}