Giter Club home page Giter Club logo

joyboy's Introduction

joyboy_logo

Starknet Test Workflow Status

Exploration_Team

Built with React Native

Website | Telegram | Twitter

Overview

Decentralized social built with Nostr and powered by Starknet account abstraction.

Origin story

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 is 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.

Contribute

Register to Only Dust to get rewarded for your contributions.

Tech stack:

Roadmap

  • 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

Architecture

Tips

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).

Wallet Connect

Tip to a recipient that never accepted the tip and don't have an account on SN
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 
Loading
Tip to a recipient that earlier accepted the tip
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
Loading

SocialPay

Alice sends tokens to Bob
sequenceDiagram
    actor Alice
    actor Bob
    participant SocialPay gateway
    participant Starknet Node
    participant Alice Account
    participant STRK Token

    Alice->>SocialPay gateway: @joyboy 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
Loading

Modules

Onchain

The onchain components of the project are implemented as a suite of Starknet smart contracts.

Build

To build the project, run:

scarb build

Test

To test the project, run:

snforge test

Mobile

The Joyboy Mobile app is built with React-native & Expo. Current version

Mobile repo

Pick an issue with the labels "mobile" to start work on React-native and contribute!

Test

To test the mobile app, run:

cd JoyboyCommunity
yarn install
yarn start

Select Expo web, Android or IOS. You can scan it with Expo GO on your phone.

Resources

Contributors โœจ

Thanks goes to these wonderful people (emoji key):

Abdel @ StarkWare
Abdel @ StarkWare

๐Ÿ’ป
Maciej Kamiล„ski @ StarkWare
Maciej Kamiล„ski @ StarkWare

๐Ÿ’ป
MSG
MSG

๐Ÿ’ป
Catherine Jonathan
Catherine Jonathan

๐Ÿ’ป
Ayush Tomar
Ayush Tomar

๐Ÿ’ป
Mubarak Muhammad Aminu
Mubarak Muhammad Aminu

๐Ÿ’ป
UฤŸur Eren
UฤŸur Eren

๐Ÿ’ป
Oshioke Salaki
Oshioke Salaki

๐Ÿ’ป
Bhavya Gosai
Bhavya Gosai

๐Ÿ’ป
BlackStarkGoku
BlackStarkGoku

๐Ÿ’ป
IsraelRex
IsraelRex

๐ŸŽจ
Emmaunuel Ejembi
Emmaunuel Ejembi

๐Ÿ’ป
Abdulhakeem Abdulazeez Ayodeji
Abdulhakeem Abdulazeez Ayodeji

๐Ÿ’ป
Joseph Chimebuka
Joseph Chimebuka

๐Ÿ’ป
omahs
omahs

๐Ÿ’ป
Caleb
Caleb

๐Ÿ’ป
Ben Ickah
Ben Ickah

๐Ÿ’ป
Emmanuel Soetan
Emmanuel Soetan

๐Ÿ’ป
princeibs
princeibs

๐Ÿ’ป
goofylfg
goofylfg

๐Ÿ’ป
lfg2
lfg2

๐Ÿ’ป
Collins Ikechukwu (devcollins)
Collins Ikechukwu (devcollins)

๐Ÿ’ป
petersssong
petersssong

๐Ÿ’ป

This project follows the all-contributors specification. Contributions of any kind welcome!

joyboy's People

Contributors

ugur-eren avatar abdelstark avatar maciejka avatar msghais avatar ayushtom avatar lauchaves avatar mubarak23 avatar kateberryd avatar oshioke-salaki avatar josephchimebuka avatar bhavyagosai avatar todaymoon avatar princeibs avatar petersssong avatar omahs avatar martinvibes avatar lfgtwo avatar goofylfg avatar ejembiemmanuel avatar gift-naomi avatar lindsaymoralesb avatar lawrenceezealor avatar shoetan avatar devcollinss avatar calebux avatar blackstarkgoku avatar benbaruka avatar ayoazeez26 avatar aberkebora avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.