melodyRepo

Fast and reliable package repository for Go

What is melodyRepo?

melodyRepo is a caching server that analyzes Go repositories to extract and normalize package metadata and archives. Once a repo has been indexed, its content and metadata will be permanently cached for quick retrieval regardless of the source repository’s availablility and performance.

A rough draft, for now

While Go package management is in flux, we wanted to unveil this small puzzle piece to see if it resonates with you.

Reliability & reproducibility

No need to worry about the future of each package and uptime of each repository. melodyRepo caches everything.

It’s FAST!

melodyRepo supports batched metadata queries and CDN-friendly archive downloads. Say “no” to version history bloat.

Easy to get started

To fetch and analyze Go repositories locally, you need to install a number of version control and other tools. melodyRepo just needs HTTP.

Semantically versioned

Similar to git describe, our auto-versioning of each revision allows eyes and tools to gauge a revision’s impact, not just guess at a SHA-1 hash.

Commerical support

Developed and maintained by Gemfury, a team with years of cloud repo experience offered to many satisfied customers.

Why do we need a cache?

The distributed nature of Go project dependencies requires that GitHub and every other service hosting repositories to be fast and available. With the growth of the Go ecosystem and individual project complexity, dependency analysis and installation is trendind toward slower and more fragile.

Why Semantic Versioning?

Semantic Versioning is a tried-n-tested community standard that allows both humans and robots to quickly communicate the impact of each change. Rather than vendoring a single revision with no reliable upgrade path, or blindly riding the bleeding edge, SemVer allows a developer to rapidly assess the impact of each update. As Go community grows and matures, this and other implicit standards will give more confidence to both package authors and consumers to move forward.

Demo

Get started – the basics

melodyRepo accepts GraphQL and responds with JSON at this endpoint:

 https://api.melody.sh/graphql

List all tagged versions

You can list all tagged versions, if available:

package(name:"github.com/urfave/cli") {
  versions {
    edges {
      node {
        version
      }
    }
  }
}

List a specific version

Untagged commits will not appear in the list above. You can explicitly request any revision:

package(name:"github.com/aws/aws-sdk-go/aws") {
  version(revision:"2c129c11a732646f1411de34ad4833f50503f344") {
    release {
      name
      version
      url
    }
    dependencies {
      edges {
        node {
          name
          scope
        }
      }
    }
  }
}

See Full Documentation »

Coming soon:

  • Finalize support for Hg, Bzr, and SVN
  • Query complexity and rate limiting
  • SDK, demos, and examples

And we are just getting started.

If you want to integrate, contribute, or curious about
what's next, let us keep you up to date:

After you submit your email, we will send you at most one email per week with project updates. You can always opt out from our Mailchimp list.