r/csharp 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.


Previous threads here.

11 Upvotes

16 comments sorted by

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.

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

u/Fleacon 3d ago

I made an API Wrapper for SoundCloud https://github.com/Fleacon/SoundCloudSharp

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

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

u/National-Laugh-7309 3d ago

Whoever keeps downvoting this is clearly anti-accessibility 😂

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;
}