{"id":15495728,"url":"https://github.com/jbolda/gatsby-source-airtable","last_synced_at":"2025-04-06T04:06:37.019Z","repository":{"id":39001879,"uuid":"132604860","full_name":"jbolda/gatsby-source-airtable","owner":"jbolda","description":null,"archived":false,"fork":false,"pushed_at":"2023-02-03T17:21:24.000Z","size":23944,"stargazers_count":216,"open_issues_count":18,"forks_count":43,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-30T03:09:49.013Z","etag":null,"topics":["airtable","gatsby","gatsby-plugins","gatsby-source","gatsby-source-airtable","gatsby-source-plugin"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jbolda.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-05-08T12:21:25.000Z","updated_at":"2024-05-24T16:38:04.000Z","dependencies_parsed_at":"2023-02-18T09:31:12.097Z","dependency_job_id":null,"html_url":"https://github.com/jbolda/gatsby-source-airtable","commit_stats":null,"previous_names":["jbolda/gatsby-source-airtable-linked"],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbolda%2Fgatsby-source-airtable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbolda%2Fgatsby-source-airtable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbolda%2Fgatsby-source-airtable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbolda%2Fgatsby-source-airtable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jbolda","download_url":"https://codeload.github.com/jbolda/gatsby-source-airtable/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247430864,"owners_count":20937874,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["airtable","gatsby","gatsby-plugins","gatsby-source","gatsby-source-airtable","gatsby-source-plugin"],"created_at":"2024-10-02T08:19:17.186Z","updated_at":"2025-04-06T04:06:36.969Z","avatar_url":"https://github.com/jbolda.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003e **Warning**\n\u003e # Future Maintenance\n\u003e \n\u003e This repo is no longer the maintenance source for `gatsby-source-airtable`. It has been moved to [gatsby-uc/plugins](https://github.com/gatsby-uc/plugins). Please open all pull requests and issues at that repo.\n\n\u003c!-- markdownlint-disable MD033 MD041 --\u003e\n\u003cdiv align=\"center\"\u003e\n\n[![gatsby-source-airtable](./header.png)](.)\n\n# gatsby-source-airtable\n\nGatsby source plugin for sourcing data into your Gatsby application from your\nAirtable base tables\n\n[![npm](https://badgen.net/npm/v/gatsby-source-airtable)](https://www.npmjs.com/package/gatsby-source-airtable)\n[![travis](https://badgen.net/travis/jbolda/gatsby-source-airtable)](https://travis-ci.com/jbolda/gatsby-source-airtable)\n\n\u003c/div\u003e\n\n---\n\n- [Install](#install)\n- [Example](#example)\n- [How it works](#how-it-works)\n  - [Deep linking across tables](#deep-linking-across-tables)\n  - [Using markdown and attachments](#using-markdown-and-attachments)\n  - [The power of views](#the-power-of-views)\n  - [Naming conflicts](#naming-conflicts)\n  - [Column Names](#column-names)\n    - [Known exception](#known-exception)\n  - [API Keys](#api-keys)\n  - [Columns without any values (yet)](#columns-without-any-values-yet)\n- [History](#history)\n- [Contributors](#contributors)\n- [License](#license)\n\n---\n\n## Install\n\n```sh\n# using npm\nnpm install --save gatsby-source-airtable\n\n# using yarn\nyarn add gatsby-source-airtable\n```\n\n## Example\n\nGetting data from two different tables:\n\n```javascript\n// In gatsby-config.js\nplugins: [\n  {\n    resolve: `gatsby-source-airtable`,\n    options: {\n      apiKey: `YOUR_AIRTABLE_KEY`, // may instead specify via env, see below\n      concurrency: 5, // default, see using markdown and attachments for more information\n      tables: [\n        {\n          baseId: `YOUR_AIRTABLE_BASE_ID`,\n          tableName: `YOUR_TABLE_NAME`,\n          tableView: `YOUR_TABLE_VIEW_NAME`, // optional\n          queryName: `OPTIONAL_NAME_TO_IDENTIFY_TABLE`, // optionally default is false - makes all records in this table a separate node type, based on your tableView, or if not present, tableName, e.g. a table called \"Fruit\" would become \"allAirtableFruit\". Useful when pulling many airtables with similar structures or fields that have different types. See https://github.com/jbolda/gatsby-source-airtable/pull/52.\n          mapping: { `CASE_SENSITIVE_COLUMN_NAME`: `VALUE_FORMAT` }, // optional, e.g. \"text/markdown\", \"fileNode\"\n          tableLinks: [`CASE`, `SENSITIVE`, `COLUMN`, `NAMES`], // optional, for deep linking to records across tables.\n          separateNodeType: false, // boolean, default is false, see the documentation on naming conflicts for more information\n          separateMapType: false, // boolean, default is false, see the documentation on using markdown and attachments for more information\n        },\n        {\n          baseId: `YOUR_AIRTABLE_BASE_ID`,\n          tableName: `YOUR_TABLE_NAME`,\n          tableView: `YOUR_TABLE_VIEW_NAME` // optional\n          // can leave off queryName, mapping or tableLinks if not needed\n        }\n      ]\n    }\n  }\n];\n```\n\nGet one single record (table row), where `Field_1 === YOUR_VALUE`:\n\n```graphql\n{\n  airtable(\n    table: { eq: \"YOUR_TABLE_NAME\" }\n    data: { Field_1: { eq: \"YOUR_VALUE\" } }\n  ) {\n    data {\n      Field_1\n      Field_2\n      Linked_Field {\n        data {\n          Linked_Field_1\n        }\n      }\n    }\n  }\n}\n```\n\nGet all records from `YOUR_TABLE_NAME` where `Field_1 === YOUR_VALUE`:\n\n```graphql\n{\n  allAirtable(\n    filter: {\n      table: { eq: \"YOUR_TABLE_NAME\" }\n      data: { Field_1: { eq: \"YOUR_VALUE\" } }\n    }\n  ) {\n    edges {\n      node {\n        data {\n          Field_1\n        }\n      }\n    }\n  }\n}\n```\n\nGet all records ordered according selected `tableView`:\n\n```graphql\n{\n  allAirtable(sort: { fields: rowIndex }) {\n    edges {\n      node {\n        data {\n          Field_1\n        }\n      }\n    }\n  }\n}\n```\n\n## How it works\n\nWhen running `gatsby develop` or `gatsby build`, this plugin will fetch all data\nfor all rows in each of the tables you specify, making them available for query\nthroughout your Gatsby app, and to other Gatsby plugins as well.\n\nAs seen in the example above, `tables` is always specified as an array of table\nobjects. These tables may be sourced from different bases.\n\nQuerying for `airtable` will always only return one record (defaulting to the\nfirst record in the table), and querying for `allAirtable` will return any\nrecords that match your query parameters.\n\nAs in the examples above, you can narrow your query by filtering for table\nnames, and field values.\n\n### Deep linking across tables\n\nOne powerful feature of Airtable is the ability to specify fields which link to\nrecords in other tables-- the `Link to a Record` field type. If you wish to\nquery data from a linked record, you must specify the field name in `tableLinks`\n(matching the name shown in Airtable, not the escaped version).\n\nThis will create nested nodes accessible in your GraphQL queries, as shown in\nthe above example. If you do not specify a linked field in `tableLinks`, you\nwill just receive the linked record's Airtable IDs as `strings`. The name of the\ncolumn/field does not have to match the related table, but you do need to make\nsure that the related table is included as an object in your `gatsby-config.js`\nas well.\n\n### Using markdown and attachments\n\nOptionally, you may provide a \"mapping\". This will alert the plugin that column\nnames you specify are of a specific, non-string format of your choosing. This is\nparticularly useful if you would like to have Gatsby pick up the fields for\ntransforming, e.g. `text/markdown`. If you do not provide a mapping, Gatsby will\njust \"infer\" what type of value it is, which is most typically a `string`.\n\nFor an example of a markdown-and-airtable-driven site using\n`gatsby-transformer-remark`, see the examples folder in this repo.\n\nIf you are using the `Attachment` type field in Airtable, you may specify a\ncolumn name with `fileNode` and the plugin will bring in these files. Using this\nmethod, it will create \"nodes\" for each of the files and expose this to all of\nthe transformer plugins. A good use case for this would be attaching images in\nAirtable, and being able to make these available for use with the `sharp`\nplugins and `gatsby-image`. Specifying a `fileNode` does require a peer\ndependency of `gatsby-source-filesystem` otherwise it will fall back as a\nnon-mapped field. The locally available files and any ecosystem connections will\nbe available on the node as `localFiles`.\n\nIf you are specifying more than one type of `mapping`, you may potentially run\ninto issues with data types clashing and throwing errors. An additional option\nthat you may specify is `separateMapType` which will create a gatsby node type\nfor each type of data. This should prevent issues with your data types clashing.\n\nWhen using the Attachment type field, this plugin governs requests to download\nthe associated files from Airtable to 5 concurrent requests to prevent excessive\nrequests on Airtable's servers - which can result in refused/hanging\nconnections. You can adjust this limit with the concurrency option in your\n`gatsby-config.js` file. Set the option with an integer value for your desired\nlimit on attempted concurrent requests. A value of 0 will allow requests to be\nmade without any limit.\n\n### The power of views\n\nWithin Airtable, every table can have one or more named Views. These Views are a\nconvenient way to pre-filter and sort your data before querying it in Gatsby. If\nyou do not specify a view in your table object, raw data will be returned in no\nparticular order.\n\nFor example, if you are creating a blog or documentation site, specify a\n`published` field in Airtable, create a filter showing only published posts, and\nspecify this as the (optional) `tableView` option in `gatsby-config.js`\n\n### Naming conflicts\n\nYou may have a situation where you are including two separate bases, each with a\ntable that has the exact same name. With the data structure of this repo, both\nbases would fall into allAirtable and you wouldn't be able to tell them apart\nwhen building GraphQL queries. This is what the optional `queryName` setting is\nfor-- simply to provide an alternate name for a table.\n\nIf you would like to have the query names for tables be different from the\ndefault `allAirtable` or `airtable`, you may specify `separateNodeType` as\n`true`.\n\n### Column Names\n\nWithin GraphQL (the language you query information from and that this plugin\nputs nodes into), there are character limitations. Most specifically we cannot\nhave spaces in field names. We don't want to force you to change your Airtable\nnames, so we will \"clean\" the keys and replace the spaces with an underscore\n(e.g. `The Column Name` becomes `The_Column_Name`). We use the cleaned name\neverywhere including `gatsby-config.js` and within your queries. We don't warn\nyou when this happens to cut down on the verbosity of the output.\n\n#### Known exception\n\nSome column names might end up with more than two underscores in a sequence, for\nexample,\n\n`Phone no. (Cell)`\n\nwould become\n\n`Phone_no___Cell_`\n\nas the period, the space and the parenthesis all become underscores. Although\nyour graphql queries will work, you will see only nulls in this column. So\nplease ensure the names of your fields in Airtable do not result in 3 sequential\nunderscores.\n\n### API Keys\n\nKeys can be found in Airtable by clicking `Help \u003e API Documentation`.\n\nThe API key can be hard coded directly in `gatsby-config.js` as noted in the\nprevious section-- **this exposes your key to anyone viewing your repository and\nis not recommended. You should inject your API key as recommended below to\nprevent it from being committed to source control**.\n\nWe recommended specifying your API key using an\n[Environment Variable](https://www.gatsbyjs.org/docs/environment-variables/).\nYou may also specify it in your command line such as\n`AIRTABLE_API_KEY=XXXXXX gatsby develop`. Note: If you use an environment\nvariable prepended with `GATSBY_`, it takes advantage of some syntactic sugar\ncourtesy of Gatsby, which automatically makes it available - but any references\nto environment variables like this that are rendered client-side will\n**automatically** expose your API key within the browser. To avoid accidentally\nexposing it, we recommend _not_ prepending it with `GATSBY_`.\n\nTo be safe, you can also setup your API key via a config variable, `apiKey`\ndefined in `gatsby-config.js`. This is the recommended way to inject your API\nkey.\n\n```javascript\n// In gatsby-config.js\nplugins: [\n  {\n    resolve: `gatsby-source-airtable`,\n    options: {\n      // not prefaced with \"GATSBY_\", will not automatically be included client-side unless you explicitly expose it\n      apiKey: process.env.AIRTABLE_API_KEY,\n      // ...etc\n    },\n  },\n];\n```\n\nYou can either use a node tool like \"dotenv\" to load secrets like your Airtable\nAPI key from a .env file, or you can specify it in your command line such as\n`AIRTABLE_API_KEY=XXXXXX gatsby develop`.\n\nIf you add or change your API key in an environment variable at the system\nlevel, you may need to reload your code editor/IDE for that variable to reload.\n\n### Columns without any values (yet)\n\nIf you want to perform conditional logic based on data that may or may not be\npresent in Airtable, but you do not yet have tabular data for the \"may\" case,\nyou can update the `gatsby-source-airtable` section of `gatsby-config.js` to\ninclude sensible defaults for those fields so that they will be returned via\nyour GraphQL calls:\n\n```javascript\n// In gatsby-config.js\nplugins: [\n  {\n    resolve: `gatsby-source-airtable`,\n    options: {\n      apiKey: process.env.AIRTABLE_API_KEY,\n      tables: [\n        {\n          baseId: process.env.AIRTABLE_BASE,\n          tableName: process.env.AIRTABLE_TABLE_NAME,\n          defaultValues: {\n            // currently does not accept null / undefined. use empty string instead\n            // and perform your conditional logic on name_of_field.length \u003e 0 ? condition_1 : condition_2\n            NAME_OF_FIELD_THAT_WILL_OTHERWISE_NOT_BE_RETURNED_IF_ALL_VALUES_ARE_BLANK:\n              \"\",\n            // ... etc\n          },\n        },\n      ],\n    },\n  },\n];\n```\n\n## History\n\nA Gatsby source plugin for pulling rows from multiple tables and bases in\nAirtable. This was originally inspired by\n[`kevzettler/gatsby-source-airtable`](https://github.com/kevzettler/gatsby-source-airtable)\nand eventually superseeded the original plugin with the introduction of Gatsby\nv2.\n\nIf you are looking for the documentation on `gatsby-source-airtable-linked`, see\nthe additional branch. We do recommend moving your dependency over to this\nplugin, `gatsby-source-airtable`, for Gatsby v2. (If you are still on Gatsby v1,\nsee\n[`gatsby-source-airtable-linked`](https://github.com/jbolda/gatsby-source-airtable/tree/gatsby-source-airtable-linked)\nfor compatible code.)\n\n## Contributors\n\nThanks goes to these wonderful people\n([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.jacobbolda.com\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/2019387?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJacob Bolda\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=jbolda\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=jbolda\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/pulls?q=is%3Apr+reviewed-by%3Ajbolda\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e \u003ca href=\"#question-jbolda\" title=\"Answering Questions\"\u003e💬\u003c/a\u003e \u003ca href=\"#ideas-jbolda\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#example-jbolda\" title=\"Examples\"\u003e💡\u003c/a\u003e \u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/issues?q=author%3Ajbolda\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/brendanmc6\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/9867865?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBrendan McGill\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=brendanmc6\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=brendanmc6\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#example-brendanmc6\" title=\"Examples\"\u003e💡\u003c/a\u003e \u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/issues?q=author%3Abrendanmc6\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://www.jamessimone.net\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/16430727?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eJames Simone\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=jamessimone\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=jamessimone\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/issues?q=author%3Ajamessimone\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#question-jamessimone\" title=\"Answering Questions\"\u003e💬\u003c/a\u003e \u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/pulls?q=is%3Apr+reviewed-by%3Ajamessimone\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://brianjon.es\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/507511?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBrian Jones\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=jonesbp\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/issues?q=author%3Ajonesbp\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"#ideas-jonesbp\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/christopherfrance\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/7366?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eChristopher Blow France\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=christopherfrance\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/issues?q=author%3Achristopherfrance\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://twitter.com/eunjae_lee\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/499898?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEunjae Lee\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=eunjae-lee\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=eunjae-lee\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://evanhahn.com/\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/777712?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eEvan Hahn\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=EvanHahn\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/pieh\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/419821?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMichal Piechowiak\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=pieh\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://markthemark.com\"\u003e\u003cimg src=\"https://avatars0.githubusercontent.com/u/4956240?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMark Hansen\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/issues?q=author%3Ayoumustfight\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=youmustfight\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://peterdohertys.website/\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/289949?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePete Doherty\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=ethagnawl\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=ethagnawl\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-ethagnawl\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://angeloashmore.github.io\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/8601064?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAngelo Ashmore\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=angeloashmore\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/dgrcode\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/17493200?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDaniel González Reina\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=dgrcode\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/issues?q=author%3Adgrcode\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://griko.id\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/8220954?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eGriko Nibras\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=grikomsn\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/mabhub\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/1846633?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003emab\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=mabhub\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=mabhub\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ryan-talus\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/61983809?v=4?s=100\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRyan Zimmerman\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/jbolda/gatsby-source-airtable/commits?author=ryan-talus\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the\n[all-contributors](https://github.com/all-contributors/all-contributors)\nspecification. Contributions of any kind welcome!\n\n## License\n\n[MIT License, Copyright (c) 2018 Jacob Bolda](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbolda%2Fgatsby-source-airtable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjbolda%2Fgatsby-source-airtable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbolda%2Fgatsby-source-airtable/lists"}