Git Product home page Git Product logo

emoji_drop's Introduction

EmojiDrop

DApp que permite regalar emojis a un Canister en Internet Computer.

Archivos

Estructura del canister

  • emojis -> HashMap que incluye todos los emojis recibidos y el número de veces que se han recibido.
  • sendEmoji(emoji) -> Función que envía o actualiza un nuevo emoji (incrementa el conteo).
  • getEmoji(emoji) -> Revisa si el emoji se encuentra en la lista de regalos.
  • topEmoji() -> Muestra el emoji más popular y el número de veces que se ha recibido.
  • allEmojis() -> Muestra todos los emojis recibidos en el canister
  • checkEmoji(emoji) -> Función interna que revisa que los inputs del usuario sean en verdad emojis.

Ambiente

  • Asegurarse de tener una terminal UNIX y tener instalado el SDK

    sh -ci "$(curl -fsSL https://internetcomputer.org/install.sh)"
  • Comenzar un entorno local de ejecución

    # Verifica estar en el directorio de este proyecto
    dfx start

Backend

  • Despliega el canister

    dfx deploy
    • Retorna la URL de la Candid UI
      ...
      URLs:
      Backend canister via Candid interface:
          emoji_drop_backend: http://127.0.0.1:4943/?canisterId=be2us-64aaa-aaaaa-qaabq-cai&id=bkyz2-fmaaa-aaaaa-qaaaq-cai
  • Juega con el canister

    # Enviar emojis
    dfx canister call emoji_drop_backend sendEmoji 🙂
    # ("🙂", opt (1 : nat))
    dfx canister call emoji_drop_backend sendEmoji 🙂
    # ("🙂", opt (2 : nat))
    dfx canister call emoji_drop_backend sendEmoji 🤬
    # ("🤬", opt (1 : nat))
    
    # Buscar emoji
    dfx canister call emoji_drop_backend getEmoji 🙂
    # ("🙂", opt (2 : nat))
    
    # Buscar el emoji más popular
    dfx canister call emoji_drop_backend topEmoji
    # ("😀", 2 : nat)
    
    # Mostrar todos los emojis
    dfx canister call emoji_drop_backend allEmojis
    # ("(🙂, 2) (🤬, 1) ")
  • Alternativamente se puede jugar a través de la Candid UI Candid UI

  • O en el playground Playground

Frontend

  • Creado con Vite
  • Cumple con las siguientes funciones
    • Selección el emoji que se quiere regalar al canister
    • Verificación de identidad con Internet Identity para evitar spam y sobregasto de cycles
    • Call to Action que ejecuta la función sendEmoji() del canister backend
    • Muestra el Emoji más popular obtenido del query topEmoji()

Fullstack:

  • Para correr la DApp localmente hay que seguir los siguientes pasos:
    • Iniciar una terminal en el directorio raíz
    • Iniciar una réplica local npm start --clean
    • En una nueva terminal generar el ambiente de desarrollo y desplegar los canisters con npm run setup
    • Se generará el directorio src/declarations/emoji_drop_backend que contendrá los elementos para interactuar con el backend, así como el archivo .did
      service : {
          allEmojis: () -> (text) query;
          getEmoji: (text) -> (text, opt nat) query;
          sendEmoji: (text) -> (text, opt nat);
          topEmoji: () -> (text, nat) query;
      }
      
    • Ir a las direcciones que se muestran en terminal
      Deployed canisters.
      URLs:
      Frontend canister via browser
          emoji_drop_frontend: http://127.0.0.1:4943/?canisterId=bd3sg-teaaa-aaaaa-qaaba-cai
      Backend canister via Candid interface:
          emoji_drop_backend: http://127.0.0.1:4943/?canisterId=be2us-64aaa-aaaaa-qaabq-cai&id=bkyz2-fmaaa-aaaaa-qaaaq-cai
    • Y ahora se puede interactuar con ambos canisters

DApp en mainnet

UI

Planes a futuro

  • Explorar a fondo la manera de validar los emojis con Unicode
  • Mejorar elementos y validaciones en backend y frontend

emoji_drop's People

Contributors

eduairet avatar

Watchers

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