# ETHGlobal Brussels

*龴ↀ◡ↀ龴 Hoot 龴ↀ◡ↀ龴*

By [deca12x](https://paragraph.com/@deca12x) · 2024-07-17

---

**\_\_\_TLDR\_\_\_**

*   Hacking at ETHGlobal Brussels this weekend: [Hoot](https://ethglobal.com/showcase/hoot-6pwj8)
    
*   Decided to start over 🤯 [qcast](https://warpcast.com/deca12x/0x79ea082d) with different stack, below notes written during hack, see [update #7](https://paragraph.xyz/@deca12x/qcast-update-7)
    
*   [cron-job](https://github.com/builders-garden/beearly/blob/main/middleware.ts) (or other option), & use filecoin for media storage instead of pinata, & [lighthouse](https://docs.lighthouse.storage/lighthouse-1/how-to/upload-data/file) to pin to ipfs and a [dynamic login](https://www.dynamic.xyz/features/embedded-wallets) & [auth](https://www.dynamic.xyz/features/orchestration) to pay for service
    

**\_\_\_Bounties\_\_\_**

👋 **Dynamic Best SocialFi Project ⸺ $2,000**

*   This prize goes to the project that utilizes Dynamic to create a unique social experience with financial incentives. This could involve users interacting over a game, social network or other areas of consumer crypto.
    
*   **Qualification Requirements - The project must be available via a deployment link The project must use Dynamic beyond basic signup/login The project must fall into the SocialFi category**
    

🏆 **Filecoin Prize ⸺ $11,000**

*   🥇**1st place $5,000** 🥈 **2nd place $3,500** 🥉 **3rd place $2,500**
    
*   Awarded to the top 3 projects overall submitting to any of the Filecoin tracks - Data Apps, AI Tools or Privacy Tools.
    
*   **Qualification Requirements - Submit a video demo to showcase and walk through your project. - Open-source your project on Github.**
    

💽 **Filecoin Data Apps ⸺ $3,000**

*   Best project built on Filecoin storage services (e.g. lighthouse or [web3.storage](http://web3.storage)) or using FVM (Filecoin Solidity Library) directly to make data management flow smoothly. Examples: industry specific storage apps [xxx.storage](http://xxx.storage), perpetual storage, data aggregators, data caching nodes, truestless notaries & retrieval oracles.
    
*   **Qualification Requirements - Store & use application data programmably using Filecoin storage services (e.g. lighthouse or** [**web3.storage**](http://web3.storage)**). - Deploy your project on the Filecoin Calibration testnet, including any associated smart contracts if applicable.**
    

**\_\_\_User Flow\_\_\_**

*   user login dynamic.xyz (social or wallet)
    
*   user connect warpcast with neynar (get user.signer\_uuid)
    
*   user inputs text
    
*   user uploads image (optional)
    
*   ADDITIONAL FEATURE: user uploads frame url (optional)
    
*   user selects date & time
    

...client-side sends post request with all this info to server-side endpoint

*   cast is added to list of scheduled casts
    
*   user can remove or update the scheduled cast
    

...when it's time for the cast, it's triggered by cron-job and published

*   cast is removed from list of scheduled casts
    

**\_\_\_Tech Stack\_\_\_**

*   [nextjs](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), tailwind css
    
*   [dynamic.xyz](http://dynamic.xyz) connect wallet or social login
    
*   [dynamic.xyz](http://dynamic.xyz) to connect farcaster account
    
*   [lighthouse](https://www.lighthouse.storage/) & filecoin to store images & videos
    
*   [authjs](https://authjs.dev/) to authenticate users
    
*   upstash/qstash or [trigger.dev](http://trigger.dev) to schedule cron jobs
    
*   neynar to publish casts
    

**\_\_\_Database (first approach)\_\_\_**

*   **users,** contains:
    
    *   **id**
        
    *   **dynamic\_id**
        
*   **signer\_uuids,** contains:
    
    *   **id**
        
    *   **user**
        
    *   **signer\_uuid**
        
*   **casts,** contains:
    
    *   **cast id**
        
    *   **cast text**
        
    *   **ipfs url of image**
        
    *   **date & time**
        
    *   **bool published or not**
        
    *   **_? frame url ?_**
        

**\_\_\_Challenges\_\_\_**

*   when pinning the image file to ipfs with lighthouse, we were following [this section](https://docs.lighthouse.storage/lighthouse-1/how-to/upload-data/file) of the docs, but it was intended for pinning from client-side. we were trying to use a buffer without documentation on it. we unblocked the issue once we realised [another section](https://docs.lighthouse.storage/lighthouse-1/how-to/upload-data/buffer) of the docs about it.
    
*   the new [authjs](https://authjs.dev/) library, it was challenging to manage the token.
    

**\_\_\_Analytics\_\_\_**

Retreive casts based on filters ([docs](https://docs.neynar.com/reference/feed)):

*   likes\_count
    
*   recasts\_count
    
*   timestamp: "2024-07-13T18:47:04.000Z"
    
*   name (channel)
    

Analytics will be [bar-charts](https://www.tremor.so/docs/visualizations/bar-chart) based on castScore = likes\_count + (recasts\_count \* 3)

*   Graph 1: x-axis is day of the week, y-axis is avg castScore
    
*   Graph 2: x-axis is 3h time intervals, y-axis is avg castScore
    
*   Graph 3: x-axis is channel, y-axis is avg castScore
    

to do:

*   fid should come from "author": {"fid" ...not "parent\_author": {"fid"
    
*   the unique identifier for a cast should be "casts": \[{"hash"

---

*Originally published on [deca12x](https://paragraph.com/@deca12x/qcast-update-8)*
