A reimplementation of that one website in Fresh.js
Find a file
Ayane Satomi 86a415d22d Fix mascot ordering
Signed-off-by: Ayane Satomi <chinodesuuu@gmail.com>
2023-10-21 08:27:08 +00:00
.codesandbox Fix conflicts 2023-09-11 03:17:12 +00:00
.devcontainer feat: Update devcontainer image from Ubuntu to Debian 2023-10-21 07:11:15 +00:00
.vscode Properly encode responses 2023-09-11 04:57:06 +00:00
components Finally style the button 2023-09-19 11:57:14 +08:00
home_content rewrite markdown 2023-10-02 13:01:32 +08:00
islands Fix mascot ordering 2023-10-21 08:27:08 +00:00
routes rewrite markdown 2023-10-02 13:01:32 +08:00
shared Finally figure out how to increment this lol 2023-09-12 06:38:05 +00:00
static refactor(islands, routes): remove ScrollingMascot and add animateMascot function to CounterCard 2023-09-19 02:39:17 +00:00
.gitignore Initial Commit 2023-09-10 20:22:22 +08:00
deno.json Fix Tailwind Preset using incompatible npm package 2023-10-21 16:14:57 +08:00
dev.ts Initial Commit 2023-09-10 20:22:22 +08:00
fresh.config.ts Fix twind definition for v1 2023-10-21 08:17:17 +00:00
fresh.gen.ts Add le license 2023-09-19 13:53:35 +08:00
LICENSE Add le license 2023-09-19 13:53:35 +08:00
main.ts Update to fresh 1.5.2 and use Twind v1 2023-10-21 08:03:43 +00:00
README.md feat: Added CodeSandbox link 2023-10-21 07:17:38 +00:00
twind.config.ts Fix Tailwind Preset using incompatible npm package 2023-10-21 16:14:57 +08:00

Herta Kuru (v2)!

Visit the Site | Check who's visiting it too! | Open in CodeSandbox

This is a proof-of-concept implementation of duiqt/herta_kuru with a global statistics feed, this time, it's a little more secure!

Background

Around a while ago, the original website's global statistics screen had been removed due to network abuse. I started investigating ways to reimplement this (embarassingly I made a PR that just adds a single useless line in the API), so I spent a few more weeks finding a way to implement it, until I got bored, and then I picked it up again.

The new system I implemented works using the following:

  • Using BroadcastChannels - we can send SSEs to update the counter, and it only updates on mutation, so this is practically realtime.
  • No websockets, everything is done using Server Sent Events (SSEs) using event streams.
  • No API is actually exposed to the user, so no one can just take the statistics endpoint and just spam it, because the statistics server is also the website.
  • POSTing to the API is delayed by 5000ms (5s) before its submitted to the API in the frontend. While the provider does allow this, its due diligence to only submit it when there's inactivity.

Usage

Make sure to install Deno: https://deno.land/manual/getting_started/installation

Then start the project:

deno task start

This will watch the project directory and restart as necessary.

Credits

Original website by @duiqt, All Rights Reserved. Kuru-kuru gif is by @Seseren_kr. All rights Reserved.

Uses some assets from Honkai Star Rail. Copyright Cognosphere, All Rights Reserved. This website is not affiliated with Cognosphere/miHoYo.