Goals

Open questions

Options

Two RN heads, shared packages with yarn workspaces or lerna

# existing app
gps/
  app/
    services/
      GpsService.js
    views/
      # fetch state from service, but pass to shared view
      MainContainer.js
      ExposureHistoryContainer.js
      ShareLocation.js # different, no shared component
    App.js
    ...
  android/
  ios/
  .env
  .env.release

# BT app
bte/
  app/
    services/
      GaeService.js
    views/
      ShareLocation.js # very different, no shared comp
    App.js
    ...
  android/
  ios/
  .env
  .env.release
  
# shared packages via yarn workspaces
packages/
  ux/
    Button.js
    IconButton.js
    NavWrapper.js
  # shared views, could work. We could have containers around them in app land ^
  views/
    main/
      NoExposure.js
      UnknownExposure.js
  services/
    # would there even be shared services?
    # language.js?

// gpd/app/views/MainContainer.js
import { GpsService } from '../services/gps_service';
import { Main } from 'safe-paths-views';
import { Button } from 'safe-paths-core-ux'; // or whatever

export const MainController = () => {
  // assume useEffect
  const {canTrack, hasExposure} = await GpsService.checkStatus();
  
  return (
    <Main canTrack={canTrack} hasExposure={hasExposure} />
  );
}