https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/
- Do not source
.env, because Nx will not override env that already exist. So, let Nx source itself - Delete broken symlinks in the current directory and its subdirectories
find . -type l ! -exec test -e {} \; -print -delete
- Note service
- Routing kafka message based on metadata workspace id if partitioning or listening
- Some handlers should rename the UserID to actor ID, and... so do the domain event?
- Some query handler inject domain repo for getting workspace id
- Document service
- Currently only hocuspocus guard the document, other like create/update/delete revision not check, bcs I'm lazy
If do, should create a guard outside of it
- Health check
- Consider merging blocknote & hocuspocus into editor module
- Currently only hocuspocus guard the document, other like create/update/delete revision not check, bcs I'm lazy
- Authorization service
- Health check
- Cannot deal with
domain.com:8080/api/v1base path - no env validation for document, search-worker
- Health check to other services (api service, meili, postgres...)
- Connection pool max connections, idle, timeout for database, meili
- gin should be protected with
SetTrustedProxies - Event is tracked by either otel or correlation id. But, currently use wotel + kafka tracer, and partially correlation id but not really connected.
- Revision endpoints aren't protected with authorization
- use suspend with skeleton, use suspend query for streamming
- Manage server state by tanstack, not always useState
- Clean architecture is considerable?
https://www.freecodecamp.org/news/reusable-architecture-for-large-nextjs-applications/ - Add custom theme (or not)
- Set up logger
- Refactor
- Alert
- Use tanstack for update cache instead invalidate it
- yjs isn't typesafety, like getting Ymap, and set value. May try to see other libs, how do they do
- Those NestJS logging, we need to find a better way to wrap those controller log. NestJS Pino only http? not microservice. And guess that we should either using middleware or interceptor
- Mutating
update, add, deleteworkspace member doesn't send event to user client