{"id":18979200,"url":"https://github.com/sr229/kuru-kuru","last_synced_at":"2025-04-19T17:53:50.917Z","repository":{"id":193954726,"uuid":"689782087","full_name":"sr229/kuru-kuru","owner":"sr229","description":"A reimplementation of that one website in Fresh.js","archived":false,"fork":false,"pushed_at":"2025-04-09T13:09:57.000Z","size":5278,"stargazers_count":4,"open_issues_count":5,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-09T13:44:36.925Z","etag":null,"topics":["deno","hacktoberfest","herta","kuru-kuru","website"],"latest_commit_sha":null,"homepage":"https://herta.cosyne.jp.eu.org/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sr229.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"ko_fi":"capuccino","github":"sr229"}},"created_at":"2023-09-10T21:55:13.000Z","updated_at":"2025-04-09T13:10:01.000Z","dependencies_parsed_at":"2023-10-26T01:35:29.938Z","dependency_job_id":"61c470b3-40b0-4469-b030-b966fd552195","html_url":"https://github.com/sr229/kuru-kuru","commit_stats":null,"previous_names":["sr229/kuru-kuru"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr229%2Fkuru-kuru","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr229%2Fkuru-kuru/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr229%2Fkuru-kuru/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sr229%2Fkuru-kuru/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sr229","download_url":"https://codeload.github.com/sr229/kuru-kuru/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249235120,"owners_count":21235154,"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":["deno","hacktoberfest","herta","kuru-kuru","website"],"created_at":"2024-11-08T15:41:38.479Z","updated_at":"2025-04-16T11:32:20.620Z","avatar_url":"https://github.com/sr229.png","language":"TypeScript","funding_links":["https://ko-fi.com/capuccino","https://github.com/sponsors/sr229"],"categories":[],"sub_categories":[],"readme":"## Herta Kuru (v2)!\n\n[![Edit in CodeSandbox](https://assets.codesandbox.io/github/button-edit-lime.svg)](https://codesandbox.io/p/github/sr229/kuru-kuru)\n\u003ca href=\"https://idx.google.com/import?url=https%3A%2F%2Fgithub.com%2Fsr229%2Fkuru-kuru\"\u003e\n\u003cimg\n    height=\"32\"\n    alt=\"Open in IDX\"\n    src=\"https://cdn.idx.dev/btn/open_purple_32.svg\"\u003e\n\u003c/a\u003e\n[![Made with Fresh](https://fresh.deno.dev/fresh-badge.svg)](https://fresh.deno.dev)\n\n[Visit the Site](https://herta.deno.dev/) |\n[Check who's visiting it too!](https://takeback.bysourfruit.com/tracked/herta.deno.dev)\n\nThis is a proof-of-concept implementation of\n[duiqt/herta_kuru](https://github.com/duiqt/herta_kuru) with a global statistics\nfeed, this time, it's a little more secure!\n\n### Background\n\nAround a while ago, the original website's global statistics screen had been\nremoved due to network abuse. I started investigating ways to reimplement this\n(embarassingly I made a PR that just adds a single useless line in the API), so\nI spent a few more weeks finding a way to implement it, until I got bored, and\nthen I picked it up again.\n\nThe new system I implemented works using the following:\n\n- Using `BroadcastChannel`s and `WebSocket`s - we can send mutation events to\n  update the counter, so this is practically realtime.\n- No API is actually exposed to the user, and have it on the same code and\n  domain as the main website, so the backend inherits the website's security\n  when deployed to a hosting site like Deno Deploy.\n- POSTing to the API is delayed by 5000ms (5s) before its submitted to the API\n  in the frontend. While the provider does allow this, its due diligence to only\n  submit it when there's inactivity.\n\n### Usage\n\nMake sure to install Deno: https://deno.land/manual/getting_started/installation\n\nThen start the project:\n\n```\ndeno task start\n```\n\nThis will watch the project directory and restart as necessary.\n\n### Credits\n\nOriginal website by [@duiqt](https://github.com/duiqt/herta_kuru), All Rights\nReserved. Kuru-kuru gif is by [@Seseren_kr](https://twitter.com/Seseren_kr). All\nrights Reserved.\n\nUses some assets from Honkai Star Rail. Copyright Cognosphere Pte. Ltd. All\nRights Reserved. This website is not affiliated with Cognosphere/miHoYo.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsr229%2Fkuru-kuru","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsr229%2Fkuru-kuru","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsr229%2Fkuru-kuru/lists"}