# 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
```