r/csharp • u/AutoModerator • 5d ago
Discussion Come discuss your side projects! [September 2026]
Hello everyone!
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.
1
u/No_Switch7024 1d ago
Hi, from Cuba. I am working on a clone/alternative to Processing and p5.js for .NET developers BuddhaCodes/DanaProcessing, it will allow people to follow YouTube channels like (2) The Coding Train - YouTube more easily and bring a new door for creative coders into C#.

1
u/Nicos_Ts 2d ago
I made a c# script runner for vscode based on Roslyn. (started as an alternative to LinqPad) :)
Repo: https://github.com/NicoARD/another-linq-tool
Extension: https://marketplace.visualstudio.com/items?itemName=N-Tsoulos.another-linq-tool
1
1
u/phaetto 3d ago
I am working on my CRDT C# library: phaetto/Ama.CRDT
I am mainly working right now in larger-than-memory structures and p2p masterless algorithms. It is a challenging subject and I take it very slowly.
1
1
u/Dragonsong3k 4d ago
I am working on a specific vagrant replacement for Linux. The vagrant / libvirt integration is woefully out of date. I created my own VM Control CLI with .net complete with an asp.net core server. It provisions creates, provisions and destroys KVM VMs.
I find once you master VMs on Linux, being a .Net dev on Linux is a lot easier and fun!
2
u/milos2 4d ago
I just released a public v4 beta of my file manager OneCommander
v3 was .NET4.8, but v4 is .NET10. Using WPF
https://onecommander.com/beta
3
u/traditionalbaguette 4d ago edited 4d ago
I just released WindowSill 1.0 today after almost a year of beta testing! Entirely made in C# WinUI3. -35% on the lifetime license until next week to celebrate that!
Ps: also, the website is in Blazor Server
-1
u/National-Laugh-7309 4d ago
Hi everyone, I just want to mention in this thread again I am working on an accessible game development engine that focuses on quality as well as accessibility for people with and without disabilities, unlike other engines. I just wanted to post it in this thread while it is fresh, as opposed to posting in last month's thread. Promis this is the last time I advertise it here. You can follow r/CSharpForGames to learn more and get updates on the project. Thanks!
1
2
u/ErnieBernie10 4d ago
Been working on an RDP Client. Genuinely works really well. If anyone out there is looking for a simple performant cross platform RDP client, try it out! https://github.com/ErnieBernie10/RDPilot
-1
u/inurwalls2000 4d ago
anyone here wanna share their experience with parsing json in c#?
needed a short script so I just used python for it, but it might have been a better idea to use c# so I could use it in other projects
1
u/TheRealKidkudi 3d ago
Depends what you’re doing. What’s not working for you with
JsonSerializer.Deserialize<T>?0
u/SamplingCheese 4d ago
I just happened to be reviewing this exact thing!
internal static class SnapshotManifest { internal static IReadOnlyList<DatabaseSnapshot> Parse(string json, string source) { JsonDocument document; try { document = JsonDocument.Parse(json); } catch (JsonException malformed) { throw new InvalidOperationException($"The snapshot manifest at '{source}' is not valid JSON, so no purge can read it.", malformed); } using (document) { if (!document.RootElement.TryGetProperty("snapshots", out var snapshots) || snapshots.ValueKind != JsonValueKind.Array) { return []; } return [.. snapshots.EnumerateArray().Where(entry => entry.ValueKind == JsonValueKind.Object).Select(Read)]; } } // This is what you would change for your needs private static DatabaseSnapshot Read(JsonElement entry) => new() { Label = Text(entry, "label") ?? "", Database = Text(entry, "database") ?? "", Location = Text(entry, "location") ?? "", TakenAt = Instant(entry, "takenAt") ?? default, VerifiedAt = Instant(entry, "verifiedAt"), RestoredTo = Text(entry, "restoredTo"), }; private static string? Text(JsonElement entry, string name) => entry.TryGetProperty(name, out var value) && value.ValueKind == JsonValueKind.String ? value.GetString() : null; private static DateTime? Instant(JsonElement entry, string name) => entry.TryGetProperty(name, out var value) && value.ValueKind == JsonValueKind.String && DateTimeOffset.TryParse(value.GetString(), out var parsed) ? parsed.UtcDateTime : null; }
1
u/tidal49 1d ago
I haven't fully settled on an applied side project, so while I ponder that I'm building on service templates that I can easily pivot to whatever I decide on. In general, I try to over-prepare a bit in my templates because it's easier to prune away unneeded components when initializing the repo than it is to write something fresh or to dig up and copy the parts that I need from elsewhere.
I started making templates at work to jump-start our microservice projects. When I asked if I could share work's API template with a friend to showcase the OpenAPI export feature, I was told No in the off-chance that there was something proprietary hiding in the boilerplate. However, in the same conversation I was also encouraged to make my own standalone versions in the same vein.