A socially-scalable music NFT indexer.

Overview
Comments
  • package-lock.json causing npm to report corrupt tarballs

    package-lock.json causing npm to report corrupt tarballs

    After doing a fresh git clone of the core repo, there seem to be problems with npm i. See the output below. Removing the package-lock.json fixes the corrupt tarball issue but then that's followed by a No matching version found package error.

    Let me know if I've done something dumb and the issues below are related to my environment. btw, I can work around these issues with linked packages but then I'm not so confident about whether my package versions are in sync but at least I can get the code to run.

    $ git clone https://github.com/neume-network/core.git
    Cloning into 'core'...
    remote: Enumerating objects: 457, done.
    remote: Counting objects: 100% (74/74), done.
    remote: Compressing objects: 100% (48/48), done.
    remote: Total 457 (delta 45), reused 36 (delta 26), pack-reused 383
    Receiving objects: 100% (457/457), 733.78 KiB | 1.59 MiB/s, done.
    Resolving deltas: 100% (231/231), done.
    robins @ elio ~/dev/web3/neume-network
    $ cd core
    robins @ elio ~/dev/web3/neume-network/core [main]
    $ npm i
    npm WARN deprecated [email protected]: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
    npm WARN tarball tarball data for @neume-network/extraction-worker@https://registry.npmjs.org/@neume-network/extraction-worker/-/extraction-worker-0.0.3.tgz (sha512-58nz/lASFuRSsKUi6RYfPHeDElxfCSLBRGNoGdOXQPW16aT5iLdLDdEW6AAMGMmwAemkOYOcTH26Su1YMUNI6g==) seems to be corrupted. Trying again.
    npm WARN tarball tarball data for @neume-network/extraction-worker@https://registry.npmjs.org/@neume-network/extraction-worker/-/extraction-worker-0.0.3.tgz (sha512-58nz/lASFuRSsKUi6RYfPHeDElxfCSLBRGNoGdOXQPW16aT5iLdLDdEW6AAMGMmwAemkOYOcTH26Su1YMUNI6g==) seems to be corrupted. Trying again.
    npm ERR! code EINTEGRITY
    npm ERR! sha512-58nz/lASFuRSsKUi6RYfPHeDElxfCSLBRGNoGdOXQPW16aT5iLdLDdEW6AAMGMmwAemkOYOcTH26Su1YMUNI6g== integrity checksum failed when using sha512: wanted sha512-58nz/lASFuRSsKUi6RYfPHeDElxfCSLBRGNoGdOXQPW16aT5iLdLDdEW6AAMGMmwAemkOYOcTH26Su1YMUNI6g== but got sha512-yQCpSKC7J3aR7/R82ZhAJOGeYpKC/Uzsadour+fv1+6MKho0t4jqot+eiOwio4zCCkZiF+oiEm5lBjKZVWF8tQ==. (41334 bytes)
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     /Users/robins/.npm/_logs/2022-06-02T03_55_27_730Z-debug-0.log
    robins @ elio ~/dev/web3/neume-network/core [main]
    $ rm package-lock.json
    robins @ elio ~/dev/web3/neume-network/core [main]
    $ npm i
    npm ERR! code ETARGET
    npm ERR! notarget No matching version found for @neume-network/[email protected].
    npm ERR! notarget In most cases you or one of your dependencies are requesting
    npm ERR! notarget a package version that doesn't exist.
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     /Users/robins/.npm/_logs/2022-06-02T03_56_20_787Z-debug-0.log
    
    opened by morestatic 13
  • Consider using the HTTPS URL rather than SSH URL for submodules

    Consider using the HTTPS URL rather than SSH URL for submodules

    Summary

    Currently, the lone submodule points to the SSH URL:

    https://github.com/neume-network/core/blob/8afe75b6ce1c3ff3ba0096f4a6b8acfa78e81dab/.gitmodules#L3

    For new users (like me!), it's possible that we don't have SSH keys set up by default with Git. In that case, Git will produce this funny error:

    [email protected]: Permission denied (publickey).
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.
    fatal: clone of '[email protected]:neume-network/strategies.git' into submodule path '/workspaces/core/src/strategies' failed
    Failed to clone 'src/strategies'. Retry scheduled
    Cloning into '/workspaces/core/src/strategies'...
    [email protected]: Permission denied (publickey).
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.
    

    My gut tells me that HTTPS on the other hand should "just work" for most configurations without any additional setup (happy to be corrected if that's actually false 😂).

    Suggested change

    -      url = [email protected]:neume-network/strategies.git
    +      url = https://github.com/neume-network/strategies.git
    

    Happy to cut a PR for this, if there are no objections ✌️

    opened by almndbtr 5
  • force close the app when an error bubbles up

    force close the app when an error bubbles up

    If the control flow reaches here then there isn't anything else to execute. But the process won't exit because worker is still running. So, we force close using process.exit().

    opened by il3ven 4
  • Create pull_request_template.md

    Create pull_request_template.md

    As the title suggested, added a pull request template for the repo.

    For the checklist, I am not how much requirement you would like to see, but I listed 3 for now. This can always improve or adjust as the project is growing.

    Let me know if you have anything else to add or feedback.

    Close #43

    opened by victoriacheng15 3
  • Run neume-network as service and generate new dataset N times a day to data repository

    Run neume-network as service and generate new dataset N times a day to data repository

    As a part of our internal prototyping, we would be very happy if we could have this dateset updated n times a day with new content to simulate realtime updates.

    enhancement help wanted 
    opened by reimertz 3
  • All usages of web3subgraph in crawlpath must be renamed to logs-to-subgraph

    All usages of web3subgraph in crawlpath must be renamed to logs-to-subgraph

    • this one and others: https://github.com/neume-network/core/blob/83dcf4ca4fd7943935c3c26a7c59569a609c4ebf/crawl_path.mjs#L12
    • the first strategy must be call-block-logs followed by logs-to-subgraph
    opened by TimDaub 2
  • add test to check worker creation in boot.mjs

    add test to check worker creation in boot.mjs

    Partially fix #65

    This PR adds a test for boot.mjs to check creation of worker. In situations when worker data is incorrect the test will fail.

    I couldn't add a test for worker_start.mjs. The main reason is that isMainThread is false due to ava executing the tests in a worker thread.

    https://github.com/neume-network/core/blob/472f9ef9c4ccc9555496fa8bc1f2cccf38d9df60/src/worker_start.mjs#L20-L25

    opened by il3ven 2
  • src/strategies submodule subproject commit id is lagging

    src/strategies submodule subproject commit id is lagging

    It seems that the core src/stategies submodule isn't updating after recent strategies updates. Not quite sure of the root clause of this but it seems that the default branch on clone is a local HEAD branch (which matches the committed core src/strategies subproject commit id). Checking out the 'main' src/strategies branch updates src/strategies to latest and causes an update to the src/strategies subject commit id in the core repo, which then needs to be committed and pushed as an update to github.

    It seems that if the core repo is to be kept in-sync with the strategies submodule updates then corresponding core repo updates must made. The updates can diverge but then repo users must make sure to update the submodule each time before use. Sounds like fair practice but it is also an easy step to miss or forget.

    Note: submodules are not really my area so caveat the above with this in mind.

    opened by morestatic 2
  • Should we move to a monorepo?

    Should we move to a monorepo?

    We have multiple packages: core, strategies, message-schema, extractor which we are either imported through npm or through git submodule.

    The problem with importing packages through npm is that for development I have to modify the code in node_modules. If the code works I have to copy it from node_modules to the actual repo in order to make a pull request. If I made changes across multiple packages. It can cause multiple pull requests for the same feature across multiple repos. Which can be hard to track imo.

    The problem with submodules is that they are a little confusing. At least, in my opinion. The problem of multiple PRs across repos for the same feature is a problem with submodules too.

    Monorepo architecture is gaining popularity. For example, jest is a monorepo.

    Since version 8, npm supports monorepo out of the box so theoretically we won't be introducing any new tools.

    opened by il3ven 2
  • Implement basic CLI

    Implement basic CLI

    This PR tries to implement a basic CLI for neume-network/core.

    Usage of CLI

    neume --path <crawl-path-file>
    

    Here is a sample crawl path file. The neume-network/core project can still be locally run using npm run dev. The CLI options and commands can be improved in the future as per the needs.

    Tests

    Even though a new functionality has been added I couldn't think of any unit tests. All the new functionality is pretty straight forward.

    opened by il3ven 1
  • A integration tests should periodically run to inform health of entire crawl

    A integration tests should periodically run to inform health of entire crawl

    • currently, when users download neume-network/core and run it, there's a high chance that bugs in the crawl prevent it from concluding
    • generally, although we have many unit tests, the integration between modules can lead to errors that we're currently not tracking. The more we test, the more apparent these errors will become and we can increase the turn-around time to fix them
    • hence, there should be an integration tests that runs periodically, e.g. once a day, that downloads the entire neume-network/core codebase, installs all dependencies and starts running a real crawl
    • finally, after the crawl has finished, some tolerant health measures should be evaluate (e.g. if all data-dir files of all existing strategies have been created)
    • the health measurement shouldn't enforce strict assertions e.g. (assert(file.length, 1234) as we must be conscious of the non-deterministic nature of the crawl
    opened by TimDaub 1
  • can /data/scripts/generateBlockLogsCrawlPath exist in a new package called

    can /data/scripts/generateBlockLogsCrawlPath exist in a new package called "orchestrator"

    • among other files, at least for the specific /data implementation: https://github.com/neume-network/data/blob/main/scripts/generateBlockLogsCrawlPath seems to be the file that orchestrates the stateful logic of the neume crawl
    • now, if we had neume running on ubuntu, then it'd probably be different from the continuous invocation on /data through GitHub actions
    • or maybe not and we'd be triggering runs with crontab -e as well?
    • but anyhow, we now can use neume/core in a JavaScript context https://github.com/neume-network/core#javascript-usage and so it'd be interesting to have @neume-network/orchestrator that basically takes over whatever the net of scripts in /data does
    opened by TimDaub 0
  • when an endpoint is rate limited, we're not warning the user

    when an endpoint is rate limited, we're not warning the user

    • although having RPC_HTTP_HOST being slowed down is mostly useful for e.g. infura users, it can actually be really confusing to someone wanting to blast through all block logs fast and wondering why there is no performance whatsoever
    • https://github.com/neume-network/core/blob/1cd0595ee009dc109c00855966407561686193cc/config.mjs#L10
    opened by TimDaub 0
  • when defining `extractor` as `extraction` in crawlpath object, process just quits without errors

    when defining `extractor` as `extraction` in crawlpath object, process just quits without errors

    • A statement like this will just stop the process after a short while without throwing any noticeable error message
    • we want the program to clearly indicate that something is very wrong
      {
          name: "call-block-logs",
          extraction: {
            args: [],
          },
        }
    
    opened by TimDaub 0
  • For all downstream repositories of core, @neume-network/schema should be a peerDependency

    For all downstream repositories of core, @neume-network/schema should be a peerDependency

    • We're again in npm version hell as @neume-network/schema is now being used everywhere individually
      • https://github.com/neume-network/core/blob/1cd0595ee009dc109c00855966407561686193cc/package.json#L39
      • https://github.com/neume-network/strategies/blob/54631d99cbb1861c9c1381a7b0d5209da7465518/package.json#L50
      • https://github.com/neume-network/extraction-worker/blob/ed02ece7d6487363cc8c3db0207ffd979574f66c/package.json#L62
    • We once had the same problem with eth-fun until we just said that we make it a mandatory peer dependency in all downstream packages (strategies, extraction worker) and that we truly require it for @neume-network/core though
    • This has worked well IMO and so we should do the same now with @neume-network/schema
    opened by TimDaub 0
  • readme exemplary crawlpath and crawlpath.mjs must be updated to use new call-tokenuri strategy

    readme exemplary crawlpath and crawlpath.mjs must be updated to use new call-tokenuri strategy

    • we've deleted all platform specific call-tokenuri strategies in favor of using a generic strategy: https://github.com/neume-network/strategies/commit/08af9f4fecdedad92cf5e8b5c6558f0189b97c12
    • we've made that change in /data too: https://github.com/neume-network/data/blob/bfce554e48aa22ab5d4ee2cb5a5306bc4234f355/steps/3.mjs
    • but in the readme.md file here and in the exemplary crawl_path.mjs file, we haven't made that change yet
    • As soon as we'll start to upgrade the /strategies submodule, beyond the above linked commit tip, we must update the crawl paths
    opened by TimDaub 0
An indexer that aggregates and normalizes NFT related data on the Tezos Blockchain and provides a GraphQL API for developers.

TezTok Token Indexer An indexer that aggregates and normalizes NFT related data on the Tezos Blockchain and provides a GraphQL API for developers. Not

null 29 Dec 23, 2022
🟢 Music player app with a modern homepage, fully-fledged music player, search, lyrics, song exploration features, search, popular music around you, worldwide top charts, and much more.

Music-player-app see the project here. 1. Key Features 2. Technologies I've used Key Features: ?? Fully responsive clean UI. ?? Entirely mobile respo

suraj ✨ 3 Nov 16, 2022
🐲 Epic NFTs [UI] - Proyecto que te permitirá conectar tu billetera y acuñar un NFT, podrás revender el NFT en OpenSea. El NFT en sí se puede personalizar

?? Epic NFTs [UI] El proyecto se encuentra deployado en Vercel para que puedan verlo e interactuar con él, toda crítica o comentario se agradece, pued

Braian D. Vaylet 17 Oct 22, 2022
Fullstack Dynamic NFT Mini Game built using 💎 Diamond Standard [EIP 2535] 🏃‍♀️Players can use Hero NFT to battle against Thanos ⚔ Heroes can be Healed by staking their NFT 🛡

?? Fullstack Dynamic NFT Mini Game ?? ?? Using Diamond Standard Play On ?? ?? ⏩ http://diamond-dapp.vercel.app/ Project Description ?? Fullstack Dynam

Shiva Shanmuganathan 21 Dec 23, 2022
NFT Marketplace framework to build standalone NFT marketplace or inApp/inGame NFT marketplace

NFT Marketplace This project is a decentalized NFT Marketplace framework which is to be the baseline for you to build standalone NFT marketplace or in

Reddio, inc. 14 Dec 19, 2022
Dev Guide for Archival Node & Indexer Setup

Algorand - The Undocumented Docs Dev Notes for Archival Node, Indexer Setup (and more) Archival Node FAQ [ ? ] How much space will I need? See -> http

null 5 May 23, 2022
A minimal, mobile-ready, album-centered music client for subsonic compatible music servers.

Soniclair An album-centered subsonic client for PWA, Android, Android TV and Desktop SonicLair is a minimal, mobile-ready, album-centered music client

Carlos Pérez 17 Dec 13, 2022
the music metadata you love, with IPFS hosting on nft.storage :rainbow:

Music NFT IPFS Metadata Standard for musicians pioneered by Catalog & Mint Songs. Compatible with contracts created by: Catalog Sound.xyz Manifold - W

sweetman.eth 12 Oct 17, 2022
A music NFT experience. Turning pain into art.

Music NFTs - Catalog Factory Curation as a Public Good Official submission for Zora Hackathon at ETH Global. music nfts + Zora V3. All minted music nf

Erick Martinez Jr. 13 Dec 10, 2022
NFT Game Starter Project: https://github.com/buildspace/buildspace-nft-game-starter

Running React on Repl.it React is a popular JavaScript library for building user interfaces. Vite is a blazing fast frontend build tool that includes

Zahuis 2 Feb 11, 2022
Dead simple program to upload NFT data to IPFS via nft.storage

NFTP The simplest way to publish files and folders to IPFS, with one command. 100% FREE to upload as much files as you want, powered by nft.storage. N

factoria 35 Dec 11, 2022
Candy Shop is a JavaScript library that allows DAOs, NFT projects and anyone to create an NFT marketplace on Solana in minutes!

Candy Shop (IN BETA) Intro Candy Shop is a JavaScript library that allows DAOs, NFT projects and anyone to create an NFT marketplace on Solana in minu

LIQNFT 111 Dec 15, 2022
Script to fetch all NFT owners using moralis API. This script output is a data.txt file containing all owner addresses of a given NFT and their balances.

?? Moralis NFT Snapshot Moralis NFT API will only return 500 itens at a time when its is called. For that reason, a simple logic is needed to fetch al

Phill Menezes 6 Jun 23, 2022
An example of an NFT Gated Website for thirdweb's NFT Gated Website Guide

NFT Gated Website "One of the more dynamic use cases for NFTs is using them as a membership pass to the NFT holders. Let’s assume you want to create a

thirdweb examples 80 Jan 3, 2023
Create your own custom NFT minting page using thirdweb's NFT Drop contract

Customizable NFT Drop Minting Page In this example, you can create your own NFT Drop minting page just by customising the template with your branding,

thirdweb examples 59 Dec 24, 2022
Simple shopping cart prototype which shows how React components and Redux can be used to build a friendly user experience with instant visual updates and scalable code in e-commerce applications.

This simple shopping cart prototype shows how React components and Redux can be used to build a friendly user experience with instant visual updates a

Ivan Kuznietsov 3 Feb 8, 2022
Fast, deep, scalable object cloning for JavaScript

A new approach to deep cloning. A simple library with no external dependencies gives you the opportunity to customize the cloning strategy.

Egor Efimenko 3 Mar 10, 2022
Inferrd makes Machine Learning deployment easy and scalable.

Introduction ML Deployment made simple, scalable and collaborative The new open-source standard to deploy, monitor and secure Machine Learning service

Inferrd 17 Dec 16, 2022
Set up and build a Node.js REST API using Typescript, Express, Mongoose with a maintainable and scalable structure.

Introduction Create a maintainable and scalable Node.js REST API with TypeScript, Express and Mongoose. The project structure is based on MVC and foll

Adam Khomsi 16 Nov 18, 2022