This is the monthly thread for sharing and discussing side-projects created by /r/csharp's community.
Feel free to create standalone threads for your side-projects if you so desire. This thread's goal is simply to spark discussion within our community that otherwise would not exist.
Please do check out newer posts and comment on others' projects.
This is a monthly thread for posting jobs, internships, freelancing, or your own qualifications looking for a job! Basically it's a "Hiring" and "For Hire" thread.
If you're looking for other hiring resources, check out /r/forhire and the information available on their sidebar.
Rule 1 is not enforced in this thread.
Do not any post personally identifying information; don't accidentally dox yourself!
Under no circumstances are there to be solicitations for anything that might fall under Rule 2: no malicious software, piracy-related, or generally harmful development.
The DNF trying to get some visibility for their internal working so at least people understand what’s going on and if somebody willing to reevaluate their opining that maybe a good start.
Second part is for these who love bureaucracy and how things moving. Should give lot of insights what to fix.
Personally I decide give “new org” a chance and try to volunteer in their activity. Not sure how things will be moving, but at least I see people who care.
I really want to get into C# to use Unity and (potentially) .NET. However, I still can't find a course that would be the best for me. Can somebody recommend a course or any other place where I can learn the basics of C#?
Edit: I also have a bit of programming experience because I learned Java.
Near complete beginner programmer here, challenging myself to make a roguelike game;
a 2-D top-down game in Unity similar to the binding of isaac, but based around customizable bullet firing patterns. I would like each item to affect at least 1 out of every 8 bullets fired on pattern, giving it a unique ability (i.e homing, explosive, elemental dmg, spreadshot etc.) with potential to layer affects atop eachother (i.e Noita) creating unique bullets. I've designed an inventory system with 8 slots (each one pertaining to a shot on a 1-8 firing round) with 8 additional slots above for layering.
...hopefully that made sense lol
Keeping in mind that I'm a beginner, what would be the best way to structure this with my scripting? I've heard some say its rule of thumb to give each item (bullet modifier) its own separate .cs script, others say it's easier to make a scriptableobject + ItemData + modular projectile effects.
If you're a c#/Unity veteran, walk me through how you would go about making this type of item/inventory system from scratch?
It would be super helpful to have an ongoing consultant figure, I would be happy to show more of my project if anyone would like to add me on discord :)
I'm a self-taught beginner in C#, and I'm currently working on a small personal project.
Quite often in my code, I need to load objects from JSON files. To make this easier, I created static FromFile(string) methods in the relevant classes. Now I'm wondering - would it be a good approach to create a base class or interface that contains FromFile() and ToFile() methods, and then have my classes inherit from it to further reduce code duplication?
I'd really appreciate any advice or constructive criticism.
P.S. English is not my native language, so I used a translator for this post - apologies for mistakes.
(Sorry if this isn't the place for this, I know its not exactly C# but I can't post on r/github atm)
Github recently updated the color of C# on their website to purple, which makes it harder to differentiate between other languages, in my opinion, so this script edits the CSS of github so that is displays old green color instead!
I already had some other posts on SignalsDotnet. It's just another update that could be interesting and I wanted to share some new ideas. They are just ideas, I would like to hear some opinions about that.
0. Obviously in C# we can write
Changing firstName, obviously doesn't update name
1. With signals one could write
This time, changing firstName, changes also fullName automatically, and an event on fullName is raised (Since we are using R3, the Values observers are notified. but this is a detail). Computed signals automatically track their dependencies, and notify when one of them change
If we go a step further, we can imagine signals live on another machine (a server or whatever), and clients "sending" computations remotely. This is why SignalComputedQuery strings exist in SignalsDotnet. So with a syntax like Graphql one can express the function inside Computed as a string, and pass it to a server
2. Computed over the wire
this query string is then turned into an expression (in the Server), then compiled into a Func, passed to Signal.ComputedObservable() with an exposed type, and yield-ed back to the client via whatever protocol (SSE, Websocket, SignalR).
This is ugly.
With last update we can go the other way around, transform an expression in a query string, so one can write:
3.Expression to query string
This allows to have type-safety etc etc. Same things that make EF Core convienien instead of write SQL Code directly. And with Refit, we could just
4. Using it with Refit
This is basically a remote computed,
This allows us to propagate computed signals over machines. This is cool per se, but this open space for ideas like:
- Distributed SignalsStore (Just having signals in different machines, and use remote computed to merge them together and propagate to other machines potentially)
- Caching of reactive properties. We could imagine to have a central authoritative host with a set of signals, and some other machines that just fanout those signals to downstream machines (similar to redis caching, but with reactivity built in).
To make it really work in practice, we need a way to orchestrate those signals efficiently in different machines. This is a huge issue, but I think is where Orleans could help.
Grouping signals in grains we could use orleans to persist, and distribute load between machines. Orleans supports IAsyncEnumerable, so would be easy to expose IAsyncEnumerable<T> Subscribe(string query) to propagate signals computations between grains..
With this architecture I think we could just create a reasonable distributed SignalsStore. This could be huge for example to mirror IOT devices state on the cloud (One variable = 1 Signal), and to just create computed chains over there to have a fully reactive realtime system
I've heard that having conditional logic and other stuff in your property setters is generally frowned upon and I get not wanting to have complex methods fired off in setters, but what of just setting other setters?
For example:
Say I have a property like this, would this raise any red flags, if so, can you tell me why? I would think that this would be a great use of a setter, to do more than just fire off OnPropertyChanged().
```
public bool ThingA
{
get;
set
{
if (field != value)
{
field = value;
OnPropertyChanged();
I am back writing articles on my blog and I start with something LONG OVERDUE!
After years quietly powering several games I made, I’m finally presenting Svelto.Tasks 2.0.
Svelto.Tasks is an engine-agnostic, multithreaded and zero allocation task runner for C#, born from the need to have a game centric tasks framework with features that .NET tasks couldn't provide. Its premise is simple:
Tasks are iterator blocks. Runners are schedulers. Rather than handing execution timing and context to the runtime, a runner lets you decide:
- when a task advances,
- where it runs — main thread or a dedicated worker,
- how much work happens per tick,
- and when an entire task context must stop.
That last point matters a lot in games: for example, when a match ends, I want every task belonging to that match to stop with it—not rely on a CancellationToken having been passed and checked correctly through every layer.
Svelto.Tasks supports lightweight coroutines, composable tasks with return values and continuations, background runners, bounded parallel batches, pooling, profiling hooks, and optional Unity/Burst integrations.
It also interoperates with async/await, although the .NET Task bridge and Unity Burst job path are currently experimental and need real-world feedback.
It is not a replacement for Unity Jobs—but it provides a useful alternative for workloads where controlling execution, lifetime, pacing, and profiling is the priority.
The repository includes runnable .NET examples, tests, benchmarks
shows how it can be used to simplify massive parallelism synchronization. The example itself is actually quite interesting also because it uses the new compute buffer Unity api BeginWrite/EndWrite to upload compute buffers and graphic fences for cpu/gpu synchronization.
Im currently developing a new wpf app, but instead of using important parts of the app as simple services, I wanna put them into a core project that I reference in my app. The solution strucutre looks like this (simplified):
MyApp.WPF
MyApp.Core
I plan on resuing the core functionalities to later build a web based app. Currently all classes and methods in the core are static and I just call the methods here and there.
I have never used a dedicated core project before, but I kow its good practice, so Ill give it a try with this project. How do I handle it?
I'm learning backend development and I always find myself struggling with database design at the beginning of a project.When you need to create a database for a new feature or an entire backend, how do you know exactly which columns you need in your tables?
Do you sit down and map out the entire schema upfront (Entity Relationship Diagrams, DDD aggregates, etc.), or do you figure it out on the go as you code and realize you need to store a new piece of data?
In the Entity Framework Core world, migrations make it very easy to change things later, but I'm curious about the industry best practices. How much planning is "too much planning" before writing code?
Also, what are your best tips for database design? Are there any common pitfalls I should avoid or specific patterns you follow to keep your database flexible but clean?
Would love to hear about your workflow and any advice you can share!
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.
You could say I was born yesterday, as this is the very first code i've done aside from messing with C a while back(hello, world! level stuff). (the only knowledge i've carried over is datatypes and general syntax..)
Is there any suggestions you could give? I am entirely self taught, with zero ai.. (for reasons that likely are not relevant to this post whatsoever)
and I want to make sure that I am learning clean code practices along the way.
I know my bracketing is probably awful... and my organization is out the window, but this is the first ""substantial"" code i've ever written...
^40 lines of code is substantial to me :)
(please ignore the odd names... I included my cats.)
I'm fairly new to the language with no prior experience and would like to learn C# so that I can go into game development. Where should I start and are there any tutorials you would like to recommend? There was the same question but it was like 7 years ago and I was wondering if anything changed.
Can someone help me with a .net mvc 8.0 project. I am using twilio to send whatsapp messages, i created a meta account but the account stays restricted and it requires verification, in the verification part it needs a website which the business does not have. So is there a way to bypass that?
I’d like to share with the community a project I’ve been working on in C#.
It’s a project that uses Hangfire for task processing and RavenDB as the database. The package responsible for this integration is outdated and is no longer maintained, so I decided to continue working on it and keep this ecosystem maintained and up to date.
It’s something I started mostly out of curiosity because I thought it would be interesting to work on this integration, and I wanted to share it with you all.
I’ve been applying to quite a few positions but haven’t been getting many responses. It feels like C1 German is becoming almost a requirement for .NET roles, and English-only opportunities seem pretty rare.
Is anyone else experiencing the same thing? How difficult is it currently to find a C#/.NET role in Germany without fluent German?
I'm currently learning C#/.NET with the goal of becoming a junior backend developer, and I'm about to finish my OOP course.
After that, I want to build one complete project from scratch that applies the OOP concepts I've learned, such as classes, encapsulation, inheritance, polymorphism, abstraction, interfaces, composition/aggregation, etc.
I'm considering a few approaches:
- Following a good C#/.NET project on YouTube as a reference and then rebuilding it myself.
- Asking AI to suggest a project based on my current level and then designing and implementing it myself.
- Using a YouTube project as a starting point, but changing the requirements and designing parts of it myself.
My main question is: Would a well-designed C# OOP project like this be worth putting on GitHub/Portfolio or mentioning on a CV, or should I consider it mainly a learning project?
Also, what would make an OOP project strong enough to demonstrate actual understanding rather than just trying to use every OOP concept?
If you have any project ideas or examples of OOP projects that would be good for someone at this stage, I'd really appreciate some recommendations.
I'd especially appreciate advice from developers who have been through this stage. Thanks!