Convex[0] also gives you type-safe persistence (in addition to type-safe web-socket communication).
[0] https://docs.convex.dev/quickstart/script-tag