De iPad-weergave toont een lege pagina; iPad later weer toevoegen. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014MGLqt1uKfNARQHut9ifcx
MijnBesluit
Een platform om je beslissingen bij leven vast te leggen in een digitale kluis, en om berichten te versturen aan familie en vrienden — nu, op een datum in de toekomst, of pas nadat je er niet meer bent.
Dit is de .NET-opzet: één solution in Visual Studio, een website, een zelfstandige SocketServer voor de app, en een MariaDB-database.
Snel aan de praat
1. Database
mysql -u root -p < db\01_schema.sql
mysql -u root -p < db\02_applicatiegebruiker.sql
Draaide er al een oudere versie? Draai dan ook db\03_inloggen_met_code.sql.
Pas eerst het wachtwoord in 02_applicatiegebruiker.sql aan. Wil je een andere schemanaam dan
mijnbesluit, vervang die dan in beide scripts.
2. Sleutelbestand
Bij ontwikkelen hoef je niets te doen: de website maakt keys/masterkey.json bij de eerste start
zelf aan, omdat Security:MaakSleutelbestandAlsHetOntbreekt in appsettings.Development.json
aanstaat.
Voor een echte omgeving maak je het bestand eenmalig zelf aan en zet je die instelling niet aan:
MijnBesluit.Infrastructure.Security.FileMasterKeyProtector.CreateKeyFile(@"D:\MijnBesluit VS\MijnBesluit\keys\masterkey.json");
Zonder dit bestand is geen enkele kluis meer te openen. Maak er een aparte back-up van, op een
andere plek dan de database-back-up. Zie docs/Beveiliging.md.
3. Instellingen
dotnet user-secrets set "ConnectionStrings:MijnBesluit" "Server=localhost;Port=3306;Database=mijnbesluit;User Id=mijnbesluit_app;Password=..." --project src\MijnBesluit.Web
dotnet user-secrets set "ConnectionStrings:MijnBesluit" "..." --project src\MijnBesluit.SocketServer
Tijdens ontwikkelen staat Smtp:WriteToDiskInsteadOfSending aan: uitnodigingsmails worden dan
als html-bestand in mail-uitgaand gezet in plaats van verstuurd. Handig om de uitnodigingslink
op te zoeken.
4. Draaien
dotnet run --project src\MijnBesluit.Web # de website
dotnet run --project src\MijnBesluit.SocketServer -- --service # de server voor de app
In Visual Studio: stel beide projecten in als startprojecten (rechtsklik op de solution →
Opstartprojecten configureren → Meerdere startprojecten). Geef het SocketServer-project
--service mee als argument, anders verschijnt het beheerschermpje in plaats van de server.
5. De SocketServer als Windows-service
dotnet publish src\MijnBesluit.SocketServer -c Release -r win-x64 --self-contained false -o D:\MijnBesluit VS\MijnBesluit\publish
Klik daarna met de rechtermuisknop op MijnBesluit.SocketServer.exe en kies Als administrator
uitvoeren. Er verschijnt een schermpje met een poortnummer en een knop Install. Is de
service al geïnstalleerd, dan staat er UnInstall. Zie docs/SocketServer-installeren.md.
Uitgebreidere uitleg met een rondje door alle schermen staat in docs/Website-testen.md.
De regels controleren
dotnet run --project tests\MijnBesluit.SelfCheck
Dit loopt vijfenveertig scenario's door zonder database, webserver of packages: wachtwoorden, versleuteling, inloggen met een code per e-mail, de claim-overgang van een profiel, de overlijdensprocedure met bezwaartermijn, de kluistoegang van een nalatenschapsbeheerder, geplande berichten, de socketverbinding van app tot kluis, het draadgedrag van de server en het opslaan van het poortnummer. Het draait in een paar seconden — goed om even te doen voordat je iets aan de regels verandert.
Mappen
db/ SQL voor MariaDB
docs/ Architectuur, beveiliging, socketprotocol
src/MijnBesluit.Domain Entiteiten en regels
src/MijnBesluit.Application Handelingen en versleuteling
src/MijnBesluit.Protocol Socketprotocol: framing, server, client
src/MijnBesluit.Server Dispatcher en sessies voor de socketkant
src/MijnBesluit.Infrastructure EF Core, sleutels, bestanden, e-mail
src/MijnBesluit.ServiceBeheer De Windows-service installeren en verwijderen
src/MijnBesluit.SocketServer De zelfstandige service, het beheerschermpje en de achtergrondtaken
src/MijnBesluit.Web De website (Blazor)
tests/MijnBesluit.SelfCheck Controle van de regels
.NET-versie
Alles staat op net8.0; MijnBesluit.SocketServer op net8.0-windows en vast op 64 bits,
omdat daar het WinForms-schermpje en de Windows-service in zitten. Wil je naar .NET 10 (zoals RenHDashboardMaui), pas dan
Directory.Build.props en de <TargetFramework> in de csproj-bestanden aan. De MAUI-app op
net10.0-android kan deze bibliotheken ook op net8.0 gewoon gebruiken.
Naar de server
Zie docs/Uitrollen-naar-IIS.md voor het uitrollen op een Windows-server met IIS en MariaDB.
Wat er nog moet gebeuren
Zie docs/Volgende-stappen.md.
Waarom het is zoals het is
Een paar keuzes zijn niet vanzelfsprekend en niet uit de code af te lezen. Die staan apart:
docs/Identiteit.md— dubbele profielen, claimen en samenvoegen. Waarom er niet op naam en geboortedatum wordt gezocht, en waarom de kleine versie van een profielfoto niet versleuteld is.docs/Beveiliging.md— de drie lagen versleuteling en wat er gebeurt als het sleutelbestand weg is.docs/E-mail.md— de eigen mailserver, SPF, DKIM en DMARC.