- Add enumeration status field.
- Add estimate field on task and aggregated estimate on story.
- Why does ASP.NET errors not conform to ProblemDetails? For instance, invalid GUID with model binding.
- Return error codes (cases of error DUs) in JSON error response, inspired by https://www.youtube.com/watch?v=AeZC1z8D5xI for Dapr.
- Create F# script/tests to call every endpoint (https://github.com/minio/mc/blob/master/functional-tests.sh) using fshttp.
- Add GitHub Actions build (https://github.com/Zaid-Ajaj/pulumi-converter-bicep/blob/master/.github/workflows/test.yml).
- Use given (class), then (method) pattern in tests?
- Create assert helpers for comparing composite types?
- Add OpenTelemetry
- Add RowVersion to each aggregate/entity per https://www.youtube.com/watch?v=YfIM-gfJe4c
- We can use modified as rowversion, but perhaps better to add a specific column.
- Redundant for SQLite which only supports one write at a time.
- Switch from HTTP 400 to HTTP 422 (https://youtu.be/x7v6SNIgJpE?t=4245).
- Include fscheck tests (https://github.com/jet/equinox/blob/master/tests/Equinox.CosmosStore.Integration/AccessStrategies.fs).
- Write stateful property based test, generating commands/queries.
- Test can maintain in memory aggregate state, then compare with what's returned by the database (https://youtu.be/LvFs33-1Tbo?t=1786).
- See also https://aaronstannard.com/fscheck-property-testing-csharp-part3.
- Make use of phantom types from https://www.compositional-it.com/news-blog/working-with-phantom-types-in-fsharp.
- Add email sending service, storing emails in database for separate processing (inbox/outbox pattern).
- Use vscode user as with https://github.com/dotnet/orleans/blob/main/.devcontainer/devcontainer.json.
- Current database write queries are only valid with isolation level serialization (https://rfd.shared.oxide.computer/rfd/0192).
- Perform simulation testing: https://www.youtube.com/watch?v=N5HyVUPuU0E and https://www.youtube.com/watch?v=N5HyVUPuU0E and https://www.youtube.com/watch?v=UZkDdQEoolo.
- Why isn't middleware starting and completing the transaction?
- Investigate transactions in middleware: https://blog.bencope.land/f-crud-api-with-giraffe-mysql-and-dapper-fsharp.
- One such example: https://www.youtube.com/watch?v=EUdhyAdYfpA.
- How to measure time the optimized way: https://www.youtube.com/watch?v=Lvdyi5DWNm4.
- Experiment with SQLite WAL feature.
- Try out https://sqlitestudio.pl/
- Try out https://github.com/xoofx/ultra
- Change domain events endpoint to audit endpoint
- Change update time field to modified time field.
- Add deleted time field to database.
- Add etag support.
- Use sensible SQLite defaults, such as WAL mode.
- Store command requests with correlation IDs and add same correlation ID to events for tracability.