Decentralized social built with Nostr and powered by Starknet account abstraction.
The name "Aligned Fam Kernel" is inspired by our vision to align the web3 family together, in one Social graph.
We build and fight together, not against. What if the treasure are the friends we made along the way? Then A decentralized social network should be a treasure trove of memories and connections!
Yes! This is what social networks should be about. A place where you can be yourself, express your thoughts and feelings, and connect with others.
Freedom requires censorship resistance, and Nostr provides exactly that.
Register to Only Dust to get rewarded for your contributions.
Tech stack:
- Starknet smart contracts in Cairo - Learn Cairo now
- React Native for the mobile app - Learn React Native now
- Typescript for the Nostr relayer - Learn Typescript now
We use Turborepo for the monorepo.
- Onchain (Cairo & Solidity): /onchain
- Scripts: Run & deploy Cairo code
Apps:
- Mobile: apps/mobile
- Website landing page: apps/website
- Backend: apps/data-backend
- Indexer Apibara: apps/indexer
Packages:
- Common: packages/common
- Prisma indexer pull: packages/indexer-prisma
- Nostr sdk: packages/afk_nostr_sdk
The AFK Mobile app is built with React-native & Expo. Current version
Pick an issue with the labels "mobile" to start work on React-native and contribute!
To test the mobile app, run:
pnpm install
cd apps/mobile
pnpm start
Select Expo web, Android or IOS. You can scan it with Expo GO on your phone.
Turburepo located in apps and packages. Read the README.md of the repo you are working on. Maybe you need to run others services to contribute as expected.
There are two alternatives: WalletConnect, one which expects Nostr users to set up oridinary Starknet wallet like Argent or Braavos, and so called SocialPay which uses custom Account Abstraction contract based on bip340 signature scheme (Nostr native).
sequenceDiagram
actor Alice
actor Bob
participant backend as Backend
participant transfer as Deposit Contract
participant erc20 as ERC20
Note over Alice,erc20: Alice tip is escrowed by the Deposit Contract
activate Alice
Alice->>erc20: approve(Deposit Contract, x)
Alice->>transfer: transfer(Bob Nostr Address, x)
transfer->>erc20: transferFrom(Alice, Deposit Contract, x)
transfer->>Alice: deposit_id
deactivate Alice
Note over Alice,erc20: Bob claims the tip with his Nostr identity
activate Bob
Bob->>backend: claim(deposit_id)
Note right of Bob: deposit_id is signed<br/> with Nostr key
backend->>transfer: claim(deposit_id)
transfer->>erc20: transferFrom(Transfer Contract, Bob, x)
deactivate Bob
sequenceDiagram
actor Alice
participant transfer as Deposit Contract
participant erc20 as ERC20
activate Alice
Alice->>erc20: approve(Deposit Contract, x)
Alice->>transfer: transfer(Bob Nostr Address, x)
Note left of transfer: Deposit Contract knows<br/> Bob's SN address
transfer->>erc20: transferFrom(Alice, Bob, x)
deactivate Alice
sequenceDiagram
actor Alice
actor Bob
participant SocialPay gateway
participant Starknet Node
participant Alice Account
participant STRK Token
Alice->>SocialPay gateway: @AFK send 10 STRK to @bob
activate SocialPay gateway
SocialPay gateway->>Starknet Node: SocialPay transaction
Starknet Node->>Alice Account: SocialPay handler
Alice Account->>STRK Token: transfer
Starknet Node->>SocialPay gateway: SocialPay transaction complete
SocialPay gateway->>Bob: @bob you just received 10 STRK from @alice
SocialPay gateway->>Alice: @alice transfer of 10 STRK to @bob is complete
deactivate SocialPay gateway
Onchain
The onchain components of the project are implemented as a suite of Starknet smart contracts.
Located in /onchain.
To build the project, run:
scarb build
To test the project, run:
snforge test
- Starknet
- Nostr
- Nostr Implementation Possibilities
- JoinStr: Decentralized CoinJoin Implementation Using Nostr
- Smart Vaults - Bitcoin multi-custody signature orchestration - website
- Smart Vaults - Bitcoin multi-custody signature orchestration - repo
We build into the Joyboy repo here from the Exploration team:
AFK Aligned Fam Kernel is born from this open source project.
Now we keep building and move forward!
- Cairo implementation of Nostr signature verification
- Starknet account contract implementation, controlled by Nostr keypair
- AFK landing page
- SocialPay feature to send and receive tips through Nostr signed messages
- Implement a Nostr client application with Starknet integration
- Run Nostr relay server
- Complete Nostr client
- ZAP
- Launchpad & Pump it
- Questings
- Social games
- BTCFi and Bridge
- Onramp offramp
- Crossover with Vault to bring Social features to the Vault application
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!