---
# System prepended metadata

title: Tips for Findy Agency wallet development

---

# Tips for Findy Agency wallet development

You need at least *git*, *Docker* and *Node.js*/*nvm* v18

## Clone repositories

1. PWA: current wallet web application
    ```bash=
    git clone git@github.com:findy-network/findy-wallet-pwa.git
    ```
2. Issuer-tool: web GUI app for testing issuing + verifying
    ```bash=
    git clone git@github.com:findy-network/findy-issuer-tool.git
    ```

## Start applications

### Agency backend

```bash=
cd findy-wallet-pwa 
cd tools/env-local 
make pull-up
```

### PWA frontend

```bash=
cd findy-wallet-pwa 
# or make sure node v18 is in use
nvm use

npm install
npm start
```

Open http://localhost:3000 with browser.
Register new user and login with WebAuthn.

### Issuer Tool

#### Backend

```bash=
cd findy-issuer-tool/api
# or make sure node v18 is in use
nvm use

npm install

export ISSUER_TOOL_SERVER_CERT_PATH="../../findy-wallet-pwa/tools/env/config/cert/"
export AWS_ACCESS_KEY_ID="foo"
export AWS_SECRET_ACCESS_KEY="bar"

npm run db

npm start
```

#### Frontend

```bash=
cd findy-issuer-tool/frontend
# or make sure node v18 is in use
nvm use

npm install --legacy-peer-deps

npm start
```

Open browser at http://localhost:8081/
Login using "Dev login"-button

## Use case simulation

* Issuer-tool simulates here the backend functionality
* **Issue receipt credential to seller**
    * create schema and cred def with issuer tool
        * name: receipt
        * version: 1.0
        * attributes:
            * name: tv, price: 100, location: Verkkokauppa
        * cred def tag: Verkkokauppa
    * make pairwise connection to issuer-tool from seller user
    * send message to seller
    * send credential to seller
* **Issue ID credential to buyer**
    * create schema and cred def with issuer tool or use FTN credential
    * make pairwise connection to issuer-tool from buyer user
    * send message to buyer
    * send credential to buyer
* Simulate discussion between buyer and seller
* Verification

## PWA

* Authentication: token
    * Example for using hard-coded token in flutter app: https://github.com/lauravuo/flutter-graphql-example/blob/49cdd38542d2304b4bc4a3598d2d19225758f943/lib/main.dart#L14
    * Generate token with findy-agent-cli or copy-paste token from browser dev tools (Application -> Storage -> Local Storage)
* See examples on API use from PWA components
* GraphQL API
    * vault API: https://github.com/findy-network/findy-agent-vault#api
    * GraphQL playground: add `FAV_USE_PLAYGROUND` env variable to vault config (`findy-wallet-pwa/tools/env-local/docker-compose.yml`) and open browser to http://localhost:8085
    ![image](https://hackmd.io/_uploads/Bkkttc3ST.png)
    Add token to header:
    ![image](https://hackmd.io/_uploads/B1oG553ra.png)

