Project
A project is a group of artifacts owned by a project in the OSS Directory. For example, a project may include a GitHub organization, a blockchain address, and a NPM package. An artifact can only belong to one project.
Project Identification
The name
field is used to identify the project. It is a unique identifier that is used to reference the project in other parts of the directory. It should be a string that is all lowercase and contains only letters, numbers, and hyphens. In most cases, we adopt the GitHub organization name as the name
(eg, my-org
). If the project is not associated with a GitHub organization, you can use the project name followed by the repo owner as the name
, separated by hyphens (eg, my-repo-my-org
).
You can browse other examples in the OSS Directory.
Display Name and Description
The display_name
is a required field used to store a working name for the project. It is case sensitive. Longer names (eg, greater than 25 chars) may sometimes be truncated in the UI or charts.
The description
is an optional field used to store a short description of the project. It is case sensitive. Longer descriptions (eg, greater than 100 chars) may sometimes be truncated in the UI.
Artifacts
The github
, npm
, and blockchain
fields are used to store arrays of artifacts associated with the project. Each item in an artifact array must contain either a url
field that is a valid URL or an address
representing a public key address on a blockchain. More information about artifact schemas can be found here.
As of Version 5, you can also include websites
as artifacts. This field is used to store an array of URLs that are associated with the project. Each item in the array must contain a url
field that is a valid URL.
Example
Here is a simple example of a project YAML file in the OSS Directory:
name: my-project
display_name: My Project
github:
- url: https://github.com/my-project
websites:
- url: https://my-project.com
blockchain:
- address: "0x87feed6162cb7dfe6b62f64366742349bf4d1b05"
networks:
- mainnet
- optimism
tags:
- eoa
- wallet
Full Schema
You can always access the most recent version of the schema here.
{
"$id": "project.json",
"title": "Project",
"type": "object",
"description": "A project is a collection of artifacts",
"properties": {
"version": {
"type": "number"
},
"name": {
"type": "string"
},
"display_name": {
"type": "string"
},
"websites": {
"type": "array",
"items": {
"$ref": "url.json#"
}
},
"github": {
"type": "array",
"items": {
"$ref": "url.json#"
}
},
"npm": {
"type": "array",
"items": {
"$ref": "url.json#"
}
},
"blockchain": {
"type": "array",
"items": {
"$ref": "blockchain-address.json#"
}
}
},
"required": ["version", "name", "display_name"]
}
Contributing
Projects are updated and added to the OSS Directory by members of the Data Collective. To learn more about contributing to the OSS Directory, start here. If you are interested in joining the Data Collective, you can apply here.