WakaKit
One workspace for a studio's projects, tasks and client feedback.
A workspace for a small 3D studio that serves two people at once. The project manager tracks projects, phases, timelines and what the client said. The artist gets a task list, and the client's feedback in a simpler form, pinned to the image it is about. Clients review through a link, without an account.
Paused for the public, still in use
01
How it's built
- C#
- .NET 6
- Blazor Server
- MudBlazor
- MediatR
- EF Core
- Dapper
- SQL Server
- SignalR
- Hangfire
- Azure
- Pulumi
Blazor Server on .NET 6, with MudBlazor for the interface and two small component libraries of my own. The code follows Clean Architecture, split into separate domain, application, infrastructure, persistence and authorization projects, and every action goes through MediatR as a command or a query (CQRS). The data is in SQL Server through EF Core, with Dapper for the queries that run most. Chat is real-time over SignalR, background jobs run on Hangfire, files sit in Azure Blob Storage, and the Azure infrastructure itself is written in C# with Pulumi.
02
What was hard
Keeping each studio's data apart. WakaKit was built multi-tenant from the start: one app and one database, serving any number of studios, each seeing only its own work. Every record carries an address in a tree: studio, then portal, then project. A person is given one or more branches of that tree, and every query returns only what sits under them. So one studio's queries do not return another studio's data, and inside a studio, access can be as narrow as a single project. On top of that, roles grant permissions at sign-in, and each action is checked before it runs. The ids in the address bar are scrambled, so a URL says nothing about how many records exist.
The design follows Jon P Smith's approach to permissions and hierarchical multi-tenant data in ASP.NET Core, from his series A better way to handle authorization in ASP.NET Core, adapted to this app.
03
Where it stopped
It was used hard enough to find its limit. Project managers and artists needed different things from the same feedback, and the artists' side moved to whiteboards: Miro first, a Figma board now. That suits the artists and leaves the project managers without their view. The next version starts from that finding, with one board both of them work on. Until then WakaKit is paused for the public, and still in use.