Run
$ nix-shell
to gain access to `kdoctor` to analyze your development environment, and `idea` to start Intelli-J Idea.
Follow https://www.jetbrains.com/help/kotlin-multiplatform-dev/multiplatform-create-first-app.html to create a demo app. This is how we produced GreetingsKMP.zip.
- Provide Nix Flake environment w/ build tools and SDKs: https://github.com/tadfisher/android-nixpkgs
- Add access to Holochain dev environment with https://github.com/spartan-holochain-counsel/nix-overlay
This project implements a user onboarding and authentication flow where identity and agency are based around Ed25519 keypairs (like Passkeys). The system will be implemented in Holochain HDK v0.5.0 and HDI v0.4.0, with JavaScript binding to allow clients to interact via WebSockets.
- SLMs
**Capabilities:
- A simple authentication API compatible with Kotlin client apps.
- A simple onboarding flow that supports email + password for agent key generation.
- Designation of 2+ recovery partners for key revocation/recovery.
- Support for advanced users using external hardware wallets for key generation and recovery.
**User Stories:
- As a new user, I want to create a new agent keypair using an email and password, so that I can initialize my identity and start using the system.
- As an existing user, I want to associate a new device with my identity, so that I can access the system from multiple devices.
- As a user, I want to designate 2+ recovery partners during onboarding, so that I can recover my keypair if needed.
- As an advanced user, I want to use an external hardware wallet to generate my keypair, so that I can have enhanced security.
- As a user, I want a simple authentication API compatible with Kotlin client apps, so that I can easily integrate the authentication flow into my application.
- As a user, I want to be able to revoke and recover my keypair using designated recovery partners or an external hardware wallet, so that I can maintain access to my identity securely.
**Tasks:
- Initialize Holochain Project
- Setup Holochain environment with HDK v0.5.0 and HDI v0.4.0.
- Create new Holochain DNA for the project.
- Find out about iOS support
- Get Holochain running on all platforms
- Create Keypair Generation for Basic Users
- Implement keypair generation using email and password.
- Store generated agent keypair in Holochain.
- Identity logic re: recovering source chains on other devices
- Designate Recovery Partners
- Implement functionality to designate 2+ recovery partners during onboarding.
- Ensure recovery partners create agents using email and password.
- Implement Simple Authentication API
- Develop API endpoints for authentication compatible with Kotlin client apps.
- Ensure API supports login using generated agent keypairs.
- Associate New Device with Existing Identity
- Implement functionality for existing users to associate new devices with their identity.
- Ensure new devices generate an agent keypair and associate with the existing identity.
- Implement Key Revocation and Recovery
- Develop functionality for key revocation using designated recovery partners.
- Implement recovery process using recovery partners’ agents.
- Support key revocation/recovery using external hardware wallets for advanced users.
- Support External Hardware Wallets
- Integrate external hardware wallets for keypair generation.
- Ensure compatibility with key revocation/recovery processes.
- Develop Javascript Binding for Client Interaction
- Create Javascript bindings to interact with Holochain via WebSockets.
- Ensure bindings support keypair generation, authentication, device association, and recovery processes.
- Testing
- Write unit tests for all functionalities.
- Conduct integration tests to ensure smooth flow of onboarding, authentication, and recovery processes.
- Documentation
- Document the API endpoints and usage.
- Provide a guide for setting up the system and integrating with client apps.
- Write user guides for basic and advanced users.
**Milestones:
- Initialize Holochain project.
- Implement keypair generation for basic users.
- Designate recovery partners.
- Develop simple authentication API.
- Implement device association functionality.
- Implement key revocation and recovery using recovery partners.
- Support external hardware wallets for advanced users.
- Develop Javascript binding for client interaction.
- Complete testing and documentation.