Planning

This is a high level planning document for discussions, until we have a common place for Tasks/Issues.

This only covers the implementation aspects of the project.

  • Resolve Project Name : epicenter/epicentre
    • In general do we adopt canadian spelling
    • How much i18n do we include for demo
  • Authentication / Authorization
    • Currently using discord
    • No authorization, except POC for logged in state.
    • select a final authentication authority
    • what is required for demo
  • Move the GitHub repo to https://github.com/PHACDataHub/phac-epi-garden
    • The repo has been created but the CI/CD has not been moved.
      • will we keep vercel deployments for demo, if so which domain name
  • GraphQL
    • Data is being transported to client using TRPC
      • For developer, this has similar expressivity, and enforces type safety from schema, to front end code.
    • Initial implementation of GraphQL endpoint has been done with a single entity, to de risk
  • Review Database Model
    • Canonical names for database entities/fields
      • naming conventions: pluralization/case need to be validated
    • Documentation
      • Each entity and relation should be documented to describe it's intent and invariants
      • e.g. root of org_tiers, relation ro tier_level
  • GCP deployments
  • Testing
    • Has not started
    • Unit testing (jest/react testing library)
    • End-to-end (cypress/playwright)

Specific Issues

Deploy to GCP

  • Obtain a domain name or zone (*.epicenter.phac.alpha.canada.ca)
    • this name cannot be used on vercel
  • Docker container build
  • Deploy to Cloud Run
    • No (CloudRun) Domain mapping support in canada
    • Alternative: deploy to US Region
    • Alternative: Manually create:
      • Load Balancer / Endpoints / certificates / etc...

Preview deployments

Adjust CI/CD and neon integration to preserve preview deploys (feature branches). This seems to be related to vercel/neon integration.

Org Chart

D3, although a fantastic visualization library has a fundamentally different way of treating state dynamics, and is always a challenge to integrate with React.

This component should be replaced.

The org_tier/person chart (d3), has unresolved peer dependencies.

  • d3 is locked to a very old version. The peer deps from the chart we imported specify "d3": ">= 3.x < 4"
  "@unicef/react-org-chart": "^0.3.4",
  "d3": "^3.5.17",
  "react-organizational-chart": "^2.2.1",