Giter VIP home page Giter VIP logo

offchain's Introduction

offchain

Documentation | Zora API


offchain is a library for parsing NFT metadata. It's used by Zora's indexer & API. It can handle metadata of many standards (OpenSea, ZORA, Nouns), hosted in many places (ipfs, http, dataURIs), and normalize them into a consistent format.

Our goal with this project is to democratize access to NFT metadata.

pip install offchain
from offchain import MetadataPipeline, Token

pipeline = MetadataPipeline()
token = Token(
    collection_address="0x5180db8f5c931aae63c74266b211f580155ecac8",
    token_id=9559
)
metadata = pipeline.run([token])[0]

metadata.name               # -> 'antares the improbable'
metadata.description        # -> 'You are a WITCH who bathes in the tears of...'
metadata.standard           # -> OPENSEA_STANDARD
metadata.attributes         # -> [Attribute(trait_type='Skin Tone', ...]
metadata.image              # -> MediaDetails(size=2139693, sha256=None, uri='https://cryptocoven.s3.amazonaws.com/2048b255aa1d02045eef13cdd7100479.png', mime_type='image/png')
metadata.additional_fields  # -> [MetadataField(...), ...]

See documentation for more examples and tutorials.

Contributing

We welcome contributions that add support for new metadata standards, new ways of retreiving metadata, and ways of normalizing them to a consistent form. We are commited to integrating contributions to our indexer and making the results available in our API.

You should be able to contribute a new standard for metadata, and have NFTs that adhere to that metadata standard be returned correctly from queries to api.zora.co. We hope this helps to foster innovation in how NFTs are represented, where metadata is stored, and what is expressed in that metadata.

Features

  • Multiple metadata standards: represent metadata any way you wish
  • Multiple transport protocols: store metadata where you want
  • Composible for custom applications: only parse the standards you care about
  • Future proof: extensible to new formats, locations, etc. The more gigabrain the better.

Development

This project is developed using Python 3.9. Here's a recommended setup:

Poetry

This project uses poetry for dependency management and packaging. Install poetry:

curl -sSL https://install.python-poetry.org | python3 -

Setup

poetry install

Pre-commit

Pre-commit runs checks to enforce coding standards on every commit

pip install pre-commit  # into global python path
pre-commit install

Testing

poetry run python -m pytest tests/

Documentation

This project uses mkdocs and mkdocs-material for documentation.

poetry run mkdocs serve

offchain's People

Contributors

anader123 avatar erikreppel avatar isabellasmallcombe avatar ligustah avatar mattmalec avatar ninazo avatar oveddan avatar owen-zora avatar zylora avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

offchain's Issues

Offchain python package install error [Windows 11]

Tried installing. Install failed due to error (same error in this log). Hard installed Microsoft Visual C++ 14.0. Also verified Python version 3.11. On Microsoft Windows [Version 10.0.22000.1098] machine. Error log below is after trying to install.

Is this an issue because of Poetry dependency management? Is this something I should install before trying to install the offchain package again?

Log:

C:\Users\user>pip install offchain
Collecting offchain
Using cached offchain-0.1.3-py3-none-any.whl (52 kB)
Collecting pydantic<2.0.0,>=1.9.2
Using cached pydantic-1.10.2-cp311-cp311-win_amd64.whl (2.1 MB)
Collecting python-json-logger<3.0.0,>=2.0.4
Using cached python_json_logger-2.0.4-py3-none-any.whl (7.8 kB)
Collecting requests<3.0.0,>=2.28.1
Using cached requests-2.28.1-py3-none-any.whl (62 kB)
Collecting tenacity<9.0.0,>=8.0.1
Using cached tenacity-8.1.0-py3-none-any.whl (23 kB)
Collecting urllib3<2.0.0,>=1.26.11
Using cached urllib3-1.26.12-py2.py3-none-any.whl (140 kB)
Collecting web3<6.0.0,>=5.30.0
Using cached web3-5.31.1-py3-none-any.whl (501 kB)
Collecting typing-extensions>=4.1.0
Using cached typing_extensions-4.4.0-py3-none-any.whl (26 kB)
Collecting charset-normalizer<3,>=2
Using cached charset_normalizer-2.1.1-py3-none-any.whl (39 kB)
Collecting idna<4,>=2.5
Using cached idna-3.4-py3-none-any.whl (61 kB)
Collecting certifi>=2017.4.17
Using cached certifi-2022.9.24-py3-none-any.whl (161 kB)
Collecting aiohttp<4,>=3.7.4.post0
Using cached aiohttp-3.8.3-cp311-cp311-win_amd64.whl (317 kB)
Collecting eth-abi<3.0.0,>=2.0.0b6
Using cached eth_abi-2.2.0-py3-none-any.whl (28 kB)
Collecting eth-account<0.6.0,>=0.5.9
Using cached eth_account-0.5.9-py3-none-any.whl (101 kB)
Collecting eth-hash[pycryptodome]<1.0.0,>=0.2.0
Using cached eth_hash-0.5.0-py3-none-any.whl (8.9 kB)
Collecting eth-rlp<0.3
Using cached eth_rlp-0.2.1-py3-none-any.whl (5.0 kB)
Collecting eth-typing<3.0.0,>=2.0.0
Using cached eth_typing-2.3.0-py3-none-any.whl (6.2 kB)
Collecting eth-utils<2.0.0,>=1.9.5
Using cached eth_utils-1.10.0-py3-none-any.whl (24 kB)
Collecting hexbytes<1.0.0,>=0.1.0
Using cached hexbytes-0.3.0-py3-none-any.whl (6.4 kB)
Collecting ipfshttpclient==0.8.0a2
Using cached ipfshttpclient-0.8.0a2-py3-none-any.whl (82 kB)
Collecting jsonschema<5,>=3.2.0
Downloading jsonschema-4.17.0-py3-none-any.whl (83 kB)
---------------------------------------- 83.8/83.8 kB 669.1 kB/s eta 0:00:00
Collecting lru-dict<2.0.0,>=1.1.6
Using cached lru-dict-1.1.8.tar.gz (10 kB)
Preparing metadata (setup.py) ... done
Collecting protobuf==3.19.5
Using cached protobuf-3.19.5-py2.py3-none-any.whl (162 kB)
Collecting websockets<10,>=9.1
Using cached websockets-9.1.tar.gz (76 kB)
Preparing metadata (setup.py) ... done
Collecting pywin32>=223
Using cached pywin32-304-cp311-cp311-win_amd64.whl (12.1 MB)
Collecting multiaddr>=0.0.7
Using cached multiaddr-0.0.9-py2.py3-none-any.whl (16 kB)
Collecting attrs>=17.3.0
Using cached attrs-22.1.0-py2.py3-none-any.whl (58 kB)
Collecting multidict<7.0,>=4.5
Using cached multidict-6.0.2.tar.gz (50 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting async-timeout<5.0,>=4.0.0a3
Using cached async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
Collecting yarl<2.0,>=1.0
Using cached yarl-1.8.1.tar.gz (172 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting frozenlist>=1.1.1
Using cached frozenlist-1.3.1.tar.gz (66 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting aiosignal>=1.1.2
Using cached aiosignal-1.2.0-py3-none-any.whl (8.2 kB)
Collecting parsimonious<0.9.0,>=0.8.0
Using cached parsimonious-0.8.1.tar.gz (45 kB)
Preparing metadata (setup.py) ... done
Collecting bitarray<3,>=1.2.1
Using cached bitarray-2.6.0.tar.gz (102 kB)
Preparing metadata (setup.py) ... done
Collecting eth-keyfile<0.6.0,>=0.5.0
Using cached eth_keyfile-0.5.1-py3-none-any.whl (8.3 kB)
Collecting eth-keys<0.4.0,>=0.3.4
Using cached eth_keys-0.3.4-py3-none-any.whl (21 kB)
Collecting rlp<3,>=1.0.0
Using cached rlp-2.0.1-py2.py3-none-any.whl (20 kB)
Collecting pycryptodome<4,>=3.6.6
Using cached pycryptodome-3.15.0-cp35-abi3-win_amd64.whl (1.9 MB)
Collecting eth-utils<2.0.0,>=1.9.5
Using cached eth_utils-1.9.5-py3-none-any.whl (23 kB)
Collecting cytoolz<1.0.0,>=0.10.1
Using cached cytoolz-0.12.0.tar.gz (502 kB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Preparing metadata (pyproject.toml) ... done
Collecting pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0
Using cached pyrsistent-0.19.1-py3-none-any.whl (57 kB)
Collecting toolz>=0.8.0
Using cached toolz-0.12.0-py3-none-any.whl (55 kB)
Collecting varint
Using cached varint-1.0.2.tar.gz (1.9 kB)
Preparing metadata (setup.py) ... done
Collecting six
Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting base58
Using cached base58-2.1.1-py3-none-any.whl (5.6 kB)
Collecting netaddr
Using cached netaddr-0.8.0-py2.py3-none-any.whl (1.9 MB)
Building wheels for collected packages: cytoolz, frozenlist, multidict, yarl
Building wheel for cytoolz (pyproject.toml) ... error
error: subprocess-exited-with-error

× Building wheel for cytoolz (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [55 lines of output]
[1/5] Cythonizing cytoolz/utils.pyx
[2/5] Cythonizing cytoolz/dicttoolz.pyx
[3/5] Cythonizing cytoolz/functoolz.pyx
[4/5] Cythonizing cytoolz/itertoolz.pyx
[5/5] Cythonizing cytoolz/recipes.pyx
running bdist_wheel
running build
running build_py
creating build
creating build\lib.win-amd64-cpython-311
creating build\lib.win-amd64-cpython-311\cytoolz
copying cytoolz\compatibility.py -> build\lib.win-amd64-cpython-311\cytoolz
copying cytoolz_signatures.py -> build\lib.win-amd64-cpython-311\cytoolz
copying cytoolz_version.py -> build\lib.win-amd64-cpython-311\cytoolz
copying cytoolz_init_.py -> build\lib.win-amd64-cpython-311\cytoolz
creating build\lib.win-amd64-cpython-311\cytoolz\curried
copying cytoolz\curried\exceptions.py -> build\lib.win-amd64-cpython-311\cytoolz\curried
copying cytoolz\curried\operator.py -> build\lib.win-amd64-cpython-311\cytoolz\curried
copying cytoolz\curried_init_.py -> build\lib.win-amd64-cpython-311\cytoolz\curried
copying cytoolz\dicttoolz.pyx -> build\lib.win-amd64-cpython-311\cytoolz
copying cytoolz\functoolz.pyx -> build\lib.win-amd64-cpython-311\cytoolz
copying cytoolz\itertoolz.pyx -> build\lib.win-amd64-cpython-311\cytoolz
copying cytoolz\recipes.pyx -> build\lib.win-amd64-cpython-311\cytoolz
copying cytoolz\utils.pyx -> build\lib.win-amd64-cpython-311\cytoolz
copying cytoolz\cpython.pxd -> build\lib.win-amd64-cpython-311\cytoolz
copying cytoolz\dicttoolz.pxd -> build\lib.win-amd64-cpython-311\cytoolz
copying cytoolz\functoolz.pxd -> build\lib.win-amd64-cpython-311\cytoolz
copying cytoolz\itertoolz.pxd -> build\lib.win-amd64-cpython-311\cytoolz
copying cytoolz\recipes.pxd -> build\lib.win-amd64-cpython-311\cytoolz
copying cytoolz\utils.pxd -> build\lib.win-amd64-cpython-311\cytoolz
copying cytoolz_init_.pxd -> build\lib.win-amd64-cpython-311\cytoolz
creating build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\dev_skip_test.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\test_compatibility.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\test_curried.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\test_curried_toolzlike.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\test_dev_skip_test.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\test_dicttoolz.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\test_docstrings.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\test_doctests.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\test_embedded_sigs.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\test_functoolz.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\test_inspect_args.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\test_itertoolz.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\test_none_safe.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\test_recipes.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\test_serialization.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\test_signatures.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\test_tlz.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
copying cytoolz\tests\test_utils.py -> build\lib.win-amd64-cpython-311\cytoolz\tests
UPDATING build\lib.win-amd64-cpython-311\cytoolz/_version.py
set build\lib.win-amd64-cpython-311\cytoolz/_version.py to '0.12.0'
running build_ext
building 'cytoolz.dicttoolz' extension
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for cytoolz
Building wheel for frozenlist (pyproject.toml) ... error
error: subprocess-exited-with-error

× Building wheel for frozenlist (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [33 lines of output]
*********************
* Accelerated build *
*********************
running bdist_wheel
running build
running build_py
creating build
creating build\lib.win-amd64-cpython-311
creating build\lib.win-amd64-cpython-311\frozenlist
copying frozenlist_init_.py -> build\lib.win-amd64-cpython-311\frozenlist
running egg_info
writing frozenlist.egg-info\PKG-INFO
writing dependency_links to frozenlist.egg-info\dependency_links.txt
writing top-level names to frozenlist.egg-info\top_level.txt
reading manifest file 'frozenlist.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no previously-included files matching '.pyc' found anywhere in distribution
warning: no previously-included files matching '
.pyd' found anywhere in distribution
warning: no previously-included files matching '.so' found anywhere in distribution
warning: no previously-included files matching '
.lib' found anywhere in distribution
warning: no previously-included files matching '.dll' found anywhere in distribution
warning: no previously-included files matching '
.a' found anywhere in distribution
warning: no previously-included files matching '*.obj' found anywhere in distribution
warning: no previously-included files found matching 'frozenlist*.html'
no previously-included directories found matching 'docs_build'
adding license file 'LICENSE'
writing manifest file 'frozenlist.egg-info\SOURCES.txt'
copying frozenlist_init_.pyi -> build\lib.win-amd64-cpython-311\frozenlist
copying frozenlist_frozenlist.pyx -> build\lib.win-amd64-cpython-311\frozenlist
copying frozenlist\py.typed -> build\lib.win-amd64-cpython-311\frozenlist
running build_ext
building 'frozenlist._frozenlist' extension
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for frozenlist
Building wheel for multidict (pyproject.toml) ... error
error: subprocess-exited-with-error

× Building wheel for multidict (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [59 lines of output]
*********************
* Accelerated build *
*********************
running bdist_wheel
running build
running build_py
creating build
creating build\lib.win-amd64-cpython-311
creating build\lib.win-amd64-cpython-311\multidict
copying multidict_abc.py -> build\lib.win-amd64-cpython-311\multidict
copying multidict_compat.py -> build\lib.win-amd64-cpython-311\multidict
copying multidict_multidict_base.py -> build\lib.win-amd64-cpython-311\multidict
copying multidict_multidict_py.py -> build\lib.win-amd64-cpython-311\multidict
copying multidict_init_.py -> build\lib.win-amd64-cpython-311\multidict
running egg_info
writing multidict.egg-info\PKG-INFO
writing dependency_links to multidict.egg-info\dependency_links.txt
writing top-level names to multidict.egg-info\top_level.txt
reading manifest file 'multidict.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files found matching 'multidict_multidict.html'
warning: no previously-included files found matching 'multidict*.so'
warning: no previously-included files found matching 'multidict*.pyd'
warning: no previously-included files found matching 'multidict*.pyd'
no previously-included directories found matching 'docs_build'
adding license file 'LICENSE'
writing manifest file 'multidict.egg-info\SOURCES.txt'
C:\Users\user\AppData\Local\Temp\pip-build-env-rx5z3tzo\overlay\Lib\site-packages\setuptools\command\build_py.py:202: SetuptoolsDeprecationWarning: Installing 'multidict._multilib' as data is deprecated, please list it in packages.
!!

      ############################
      # Package would be ignored #
      ############################
      Python recognizes 'multidict._multilib' as an importable package,
      but it is not listed in the `packages` configuration of setuptools.

      'multidict._multilib' has been automatically added to the distribution only
      because it may contain data files, but this behavior is likely to change
      in future versions of setuptools (and therefore is considered deprecated).

      Please make sure that 'multidict._multilib' is included as a package by using
      the `packages` configuration field or the proper discovery methods
      (for example by using `find_namespace_packages(...)`/`find_namespace:`
      instead of `find_packages(...)`/`find:`).

      You can read more about "package discovery" and "data files" on setuptools
      documentation page.


  !!

    check.warn(importable)
  copying multidict\__init__.pyi -> build\lib.win-amd64-cpython-311\multidict
  copying multidict\py.typed -> build\lib.win-amd64-cpython-311\multidict
  running build_ext
  building 'multidict._multidict' extension
  error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
  [end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for multidict
Building wheel for yarl (pyproject.toml) ... error
error: subprocess-exited-with-error

× Building wheel for yarl (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [37 lines of output]
C:\Users\user\AppData\Local\Temp\pip-build-env-5lrpf28p\overlay\Lib\site-packages\setuptools\config\setupcfg.py:508: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.
warnings.warn(msg, warning_class)
**********************
* Accelerated build *
**********************
running bdist_wheel
running build
running build_py
creating build
creating build\lib.win-amd64-cpython-311
creating build\lib.win-amd64-cpython-311\yarl
copying yarl_quoting.py -> build\lib.win-amd64-cpython-311\yarl
copying yarl_quoting_py.py -> build\lib.win-amd64-cpython-311\yarl
copying yarl_url.py -> build\lib.win-amd64-cpython-311\yarl
copying yarl_init_.py -> build\lib.win-amd64-cpython-311\yarl
running egg_info
writing yarl.egg-info\PKG-INFO
writing dependency_links to yarl.egg-info\dependency_links.txt
writing requirements to yarl.egg-info\requires.txt
writing top-level names to yarl.egg-info\top_level.txt
reading manifest file 'yarl.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no previously-included files matching '.pyc' found anywhere in distribution
warning: no previously-included files matching '
.cache' found anywhere in distribution
warning: no previously-included files found matching 'yarl*.html'
warning: no previously-included files found matching 'yarl*.so'
warning: no previously-included files found matching 'yarl*.pyd'
no previously-included directories found matching 'docs_build'
adding license file 'LICENSE'
writing manifest file 'yarl.egg-info\SOURCES.txt'
copying yarl_init_.pyi -> build\lib.win-amd64-cpython-311\yarl
copying yarl_quoting_c.pyi -> build\lib.win-amd64-cpython-311\yarl
copying yarl_quoting_c.pyx -> build\lib.win-amd64-cpython-311\yarl
copying yarl\py.typed -> build\lib.win-amd64-cpython-311\yarl
running build_ext
building 'yarl._quoting_c' extension
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for yarl
Failed to build cytoolz frozenlist multidict yarl
ERROR: Could not build wheels for cytoolz, frozenlist, multidict, yarl, which is required to install pyproject.toml-based projects

Feature request: consider adding a license

Summary

Hi @ourzora! Would you be open to adding a license to this project? 💭

Without one, this project is under exclusive copyright by default and unless otherwise specified, nobody else can copy, distribute, or modify your work without being at risk of take-downs, shake-downs, or litigation. Once the work has other contributors (each a copyright holder), “nobody” starts including the @ourzora team. 😅

I humbly suggest the MIT License or GNU GPL v3.0 (like what's done for ourzora/v3) as an option.

If you're up for it and know which one y'all would like, I wouldn't mind cutting a PR for it too! ✌️

In the code, where can I specify a different chain?

In the code, where can I specify a different chain?

This repo now only supports ETH maimnet and Goerli (?)
How do I change it to query against a different chain? More specifically, where can I change the chainId?
Trying to search but could not find the right place. thanks

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.