# Bifold New Architecture Roadmap ## Foudational Items - [ ] Create Github Project to manage work items - James - [ ] Create mono-repo - [x] Configure project to use Yarn - Clecio (Draft PR) - [x] Create sub-directory for existing code - [ ] Create sub-directory/package for New Architecture - [x] Create sub-directory/package for OCA package - [ ] Configure Lerna for mono-repo management (leverage AFJ configurations where possible) - [ ] Create/integrate NPM build processes (use AFJ NPM account if possible) - [x] Discuss keys w/Timo - James - [x] Scope - @aries-bifold - [ ] @aries-bifold/core - [ ] Configure react-native-bob, including the example directory/app (native RN, not expo) (may not need to use react-native-bob -- James 3-23-23) - [ ] Upgrade to latest -- React Native 0.71.x - [ ] Gradle - Dependency Lock versioning - [ ] Documentation Configuration (aries.js.org, in GH repo, etc) ## Component Development - [ ] Create new component architecture - [ ] Experiment with new architecture - [ ] Implement concepts - [ ] Finalize a component interface - [ ] Begin creating components from existing code - [ ] Creation of list of GH tickets for components (to prevent duplication) - [ ] Brainstorm on core list - [ ] Mass contribution of components - [ ] Existing forks / apps add new npm package - [ ] Migration Guide - [ ] Slowly incorporate new architecture components into applications - [ ] Stop work on existing code and deprecate - [ ] App script boostrapping ## Other Relevant Closed GH ticket discussing this in 2021 -- https://github.com/hyperledger/aries-mobile-agent-react-native/issues/49 ## New Directory Structure ``` Old: /app /core New: /packages /legacy (main?) /core (existing) /* config files (existing) - such as metro configs, etc /core - new architecure efforts /components /services /cli - scripts / bootstrap scripts /templates -- template application -- generates an example application w/simple defaults tied back to core /develop -- purpose to be able to quickly test RN components -- point to the local packagees /base - primary -- should be pointing to NPM /chat /oca -- (npm - @aries-bifold/oca) /app (or app or bifold or example) -- boilerplate config, no config (existing) Components must be refactored out of legacy BCWallet (today) /app -- BC-specific components add (@aries-bifold/core) here over time /bifold -- submodule -- deprecate over time /core Gameplan: - James to do the migration PR Thursday - Akiff to test Thursday/Friday - OCA Contribute Friday -- Akiff - Mostafa -- contribute Friday/Later? Developer Guidance -- how to link to the local packages ```