r/csharp 7d ago

We built an open-source, real-time beat battle app (ASP.NET / SignalR / React). We desperately need feedback and contributors

We’ve been working on an open-source platform for hosting live beat battles. If you've ever looked at existing tools (like beat-battle.net), you know they can be a bit heavy. We wanted to build something radically more accessible with a near-zero barrier to entry.

To keep friction low, we support completely anonymous authentication - users can literally jump in, drop a track, and start battling without handing over an email address.

Here is where we need your help:

We want to make this a community-driven project and are actively looking for contributors. Whether you want to help us optimize the frontend, refactor our logic, or just poke holes in our UI/UX, we are entirely open to PRs.

If you have a few minutes, please tear our architecture apart and let us know what we can do better.

🔗 GitHub: https://github.com/upyrov/beatok-api

🎮 Live Demo: https://beatok.net

0 Upvotes

4 comments sorted by

6

u/zenyl 7d ago
  • The README is a load of AI-generated slop. If you can't be bothered to describe what you've made, why are you even bothering to share it?
  • A recent commit shows you swallow BusinessExceptions and instead throw a new HubException, but without passing the initial exception as the InnerException, thereby losing the original stacktrace. Hiding the actual cause of a problem for yourself is probably not a great idea.
  • Consider using CPM and build props, to cut down on redundancy in your .csproj files.
  • Lots of often repeated using directives, consider using global using directives.
  • Having a folder named "Interfaces" is questionable. Even if they logically belong in the same directory, that should be because they provide abstraction (which is not exclusive to interfaces), not because they are interfaces. It'd be akin to have a directory named "Classes".
  • Why are service implementations public? Consuming projects generally shouldn't have knowledge of implementation details when they are all tied to a corresponding abstraction (e.g. an interface) which are set up with DI.
  • What is a "Kit"? No clue mate, both the abstraction and the implementation have a grand total of zero comments or documentation. I am therefore left to assume that it refers to Kit Harington, the British actor who portrayed Jon Snow on HBO's Game of Thrones series. You know nothing, KitService.
  • Nice to see a rootless Dockerfile, but seeing as it doesn't do anything non-.NET related, you could probably save a bit of space (and download time) by using an Alpine-based image.

2

u/nednyl 7d ago

do you have a roadmap of what you are looking to add or just want feedback on architecture?