# Aaadhar Noir Circuits Cleanup
## Todos
1. Folder structure
2. Selective Disclosure Impl
3. testing env
4. benchmarks
### Improvements
1. Removal of unwanted (e.g., `rsa-sha256`)
2. Migration to latest Noir version
4. Using Offical RSA Precomplie.
5. Monorepo implementation inspired by zkEmail.nr repo
7. js testing environment
8. `scripts` -- for bench marking and sample data
9. remove hardcoded in the circuits
10. Selective Disclosure Implementation
11. Benchmarks. we will use react-native-noir for benchmarking in mobile (andriod and ios) as well.
12. go through timestamp circuit.
### Folder Structure
```
├── tests/
└── scripts/
├── circuits
│ └── src
│ ├── verifier/
│ │ └── signature_verifier.nr
│ ├── core/
│ │ ├── extractor.nr
│ │ └── qr_verifier.nr
│ │ └── nullifier.nr
│ ├── utils/
│ │ ├── utils.nr
│ │ └── constants.nr
│ └── main.nr
```
### Potential Problems with Monorepo
1. **Version Dependencies with noir-rsa Package**
- Our implementation is tightly coupled with specific noir-rsa package versions
- Possible Solutions:
- Extract signature_verifier as a separate module
- Keep core logic independent of RSA implementation
- Use version-specific branches for RSA-dependent components
- **Option 2: Split Architecture**
```
/projects
├── core-circuits/ # Main implementation
└── verifier/ # RSA Noir Separate Signature Verifier Circuits
```
**it's not a significant issue since noir team is updating packages with latest noir version.**
### Testing
we will be using `@noir-lang/noir_js`
### Benchmarking Stuff
i have tested `react-native-noir` with andriod device which surprising ran very smooth. i think we can experiment our mobile stack with noir.
- have to do standard benchmarks and also mobile benchmarks.