Decentralized social built with Nostr and powered by Starknet account abstraction.
The name "Joyboy" is inspired by the character from the manga series "One Piece". Joyboy is a mysterious figure from the Void Century who left behind a treasure called the "One Piece". What if the treasure are the friends we made along the way? A decentralized social network should be a treasure trove of memories and connections.
Also Joyboy refers to a figure in the Caribbean mythology, a dancing god with a constant smile.
Joyboy is considered as the personification of freedom and joy.
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
- Cairo implementation of Nostr signature verification
- Starknet account contract implementation, controlled by Nostr keypair
- Joyboy landing page
- SocialPay feature to send and receive tips through Nostr signed messages
- Implement a full Nostr client application with Starknet integration
- Run Nostr relay server
- Crossover with Vault to bring Social features to the Vault application
sequenceDiagram
actor Alice
actor Bob
participant SocialPay relay
participant Starknet Node
participant Alice Account
participant STRK Token
Alice->>SocialPay relay: @joyboy send 10 STRK to @bob
activate SocialPay relay
SocialPay relay->>Starknet Node: SocialPay transaction
Starknet Node->>Alice Account: SocialPay handler
Alice Account->>STRK Token: transfer
Starknet Node->>SocialPay relay: SocialPay transaction complete
SocialPay relay->>Bob: @bob you just recived 10 STRK from @alice
SocialPay relay->>Alice: @alice transfer of 10 STRK to @bob is complete
deactivate SocialPay relay
Webapp
The webapp is a simple frontend to sign and verify messages using a browser extension like Flamingo or nos2x. It is built using React and Tailwind CSS.
To start the development server, run:
npm start
To build the project, run:
npm run build
Onchain
The onchain components of the project are implemented as a suite of Starknet smart contracts.
To build the project, run:
scarb build
To test the project, run:
snforge test
The Joyboy Mobile app is built with React-native & Expo. Mobile repo
Pick an issue with the labels "mobile" to start work on React-native and contribute!
To test the mobile app, run:
cd JoyboyCommunity
npm i
npm start
Select Expo web, Android or IOS. You can scan it with Expo GO on your phone.
Recent implementation PoC on React Native. Here is what we have on the mobile app on the first days, contributions welcome! Check the issues with the "mobile" labels.
You can see more details on the README here: Mobile repo
Proposal for UI Mobile. UI/UX proposal for video discussions
Here are some work already merge and available for test:
- Home page:
- Create Nostr account
- Feed by default:
- User feed with notes:
- My profile page: WIP
- 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
Thanks goes to these wonderful people (emoji key):
Abdel @ StarkWare 💻 |
Maciej Kamiński @ StarkWare 💻 |
MSG 💻 |
Catherine Jonathan 💻 |
Ayush Tomar 💻 |
Mubarak Muhammad Aminu 💻 |
Uğur Eren 💻 |
Oshioke Salaki 💻 |
Bhavya Gosai 💻 |
BlackStarkGoku 💻 |
IsraelRex 🎨 |
This project follows the all-contributors specification. Contributions of any kind welcome!