# @padloc/tauri (experimental)

Cross-platform native app builder for Padloc, powered by
[Tauri](https://github.com/tauri-apps/tauri).

## How To Use

1. Follow the steps described in the
   [Getting Started](https://github.com/padloc/padloc/blob/master/README.md#getting-started)
   section of repo readme.

2. Follow Tauri's
   [setup guide](https://tauri.studio/docs/getting-started/intro/#setting-up-your-environment)
   for your platform.

3. Build the app:

    ```sh
    cd packages/tauri
    npm run build
    ```

    Don't forget to set the server url
    [configuration variable](https://github.com/padloc/padloc/blob/master/README.md#configuration).
    For example, if you want the app to connect to the official Padloc server:

    ```sh
    PL_SERVER_URL=https://api.padloc.app npm run build
    ```

## TODOs

Initial tests look very promising. Some things that still need figuring out.

-   [ ] **Persistent Storage**: Using IndexedDB doesn't work here for various
        reasons. Best option is probably writing a simple storage backend using
        Tauri's [file system api](https://tauri.studio/docs/api/js#file-system).
-   [ ] **Copy & Paste**: Doesn't work out of the box. Figure out steps to make
        it work.
-   [ ] **Auto-updating**: Must-have feature for desktop apps at least those not
        distributed through app stores or package managers. Not available in
        Tauri yet, but apparently on the roadmap.
-   [ ] **Code-signing**: Also on Tauri's roadmap, but not available yet
-   [ ] **Run without the embedded web server**: Would be the safer choice
        security-wise but doesn't seem to work as-is. Need to figure out what
        changes are needed to make it work.
-   [ ] **Mobile**: Waiting for Tauri to support Android and iOS builds, which
        could potentially replace Cordova.
-   [ ] **Biometric Authentication**: This is a must-have on mobile but it would
        be nice to have it on desktop as well
-   [ ] **Secure Enclave / Key Store**: Along with biometric authentication,
        this is a requirement for biometric unlock.
