@artbycity/node
TypeScript icon, indicating that this package has built-in type declarations

2.0.7 • Public • Published

Art By City Node

Description

This project is a server that intercepts and redirects requests to Arweave Gateways, tracks views of accessed content, and provides additional HTTP API endpoints to support the Art By City Protocol.

A unique view is a SHA256 hash of:

  • address Arweave address of this Art By City Node
  • ip of requesting host
  • txid of requested transaction
  • date of access

An Art By City Node exposes a few endpoints, explained below. These endpoints allow for requesting the current view count of a txid, a daily view count report, and a daily trending report ordered by descending view counts. These view counts will be used in the future to reward creators based on the engagement of their creative content.

Requirements

  • node v16.13.2
  • postgres >= v9.5

Dev Requirements

Install

$ npm i --save @artbycity/node

Environment Variables

  • Postgres Config
    • DB_HOST
    • DB_PORT
    • DB_USER
    • DB_PASS
    • DB_NAME Database name to use

Run Programmatically

import ArtByCityNode from '@artbycity/node'

const abc = new ArtByCityNode('<Arweave Address of this Node>')
await abc.start()

Or with NuxtJS/NextJS/etc Server Middleware

import ArtByCityNode from '@artbycity/node'

const abc = new ArtByCityNode('<Arweave Address of this Node>')
  .app
  .callback()

export default abc

Rest API

  • GET /:txid Retrieve content from Arweave via Meson Network by txid

    • Status 302
    • Redirect to content on Meson Network
  • GET /views/:txid Fetch view count for a given txid

    • Status 200
    • Body 999
  • GET /views/report/:date

    • Fetch daily report for a given date (format: M-D-YYYY e.g. 5-31-2022)
    • Status 200
    • Body
      {
        "date": "5-31-2022",
        "views": [
          {
            "nodeAddress": "EGy6I7YCKqEH8aA7IOA2HEjqeOsHqu9W4c67SFdVnmo",
            "txid": "MffAQBIB8vdKQ955CzmGObRzOMaP2_xRDUA3DqXTkt4",
            "hash": "0db4e729b1eddba1594e2bb32951393f625521ec8887cc949fba415a8d432571",
            "type": "image/png"
          },
          {
            "nodeAddress": "EGy6I7YCKqEH8aA7IOA2HEjqeOsHqu9W4c67SFdVnmo",
            "txid": "f-vKmV_9UuHgUINocW8G8YK7-jKQoUwFaI3nIOiNfc0",
            "hash": "474c65cbeedb65cd12bf7a8c7dc16cac04d8edb47176b91a2e02811afe92c200",
            "type": "image/jpeg"
          },
          {
            "nodeAddress": "EGy6I7YCKqEH8aA7IOA2HEjqeOsHqu9W4c67SFdVnmo",
            "txid": "dAzlR42uYVMkBtf9fD1KfZCc1D-cosidfvCnMVcmq3Q",
            "hash": "50cf432f83eafd9facd07ea2a968bbdd4c341310d3f4617fd7f9ae022ea18e7d",
            "type": "application/json"
          }
        ]
      }
  • GET /views/trending/:date

    • Fetch trending list ranked by view count for a given date (format: M-D-YYYY e.g. 5-31-2022)
    • Status 200
    • Body
      {
        "date": "5-31-2022",
        "rankings": [
          {
            "txid": "f-vKmV_9UuHgUINocW8G8YK7-jKQoUwFaI3nIOiNfc0",
            "type": "image/jpeg",
            "views": 8
          },
          {
            "txid": "dAzlR42uYVMkBtf9fD1KfZCc1D-cosidfvCnMVcmq3Q",
            "type": "application/json",
            "views": 8
          },
          {
            "txid": "MffAQBIB8vdKQ955CzmGObRzOMaP2_xRDUA3DqXTkt4",
            "type": "image/png",
            "views": 1
          }
        ]
      }
  • GET /stats/summary

    • Fetch summary of dapp stats
    • Body
      {
        "users":"38",
        "dappUsers":"37",
        "artists":"29",
        "publications":"139",
        "transactions":"27415",
        "dappTransactions":"405",
        "likesCount":"72",
        "likesTotal":"26400000000",
        "tipsCount":"11",
        "tipsTotal":"312800000000",
        "networkFees":"124845331418"
      }

Readme

Keywords

none

Package Sidebar

Install

npm i @artbycity/node

Weekly Downloads

2

Version

2.0.7

License

AGPL-3.0-only

Unpacked Size

116 kB

Total Files

87

Last publish

Collaborators

  • jim-toth