gatsbyjs / gatsby

The best React-based framework with performance, scalability and security built in.
https://www.gatsbyjs.com
MIT License
55.28k stars 10.31k forks source link

[1.0] Plugins wishlist (and example sites) #1199

Closed KyleAMathews closed 5 years ago

KyleAMathews commented 7 years ago

There's a lot of plugins that would be fairly easy to write that'd be great to get in. Many would just be basically wrapping either a webpack plugin (e.g. adding support for a CSS preprocessor) or an NPM library (e.g. for transformer plugin). When you create a new plugin, you should also create a companion example site as both a way to demonstrate how the plugin works as well as an integration test for the plugin.

Adding plugins and example sites are easy. Simply checkout the Gatsby repo and run npm install at the root of repo. Then run npm run plop and choose to create either a plugin or example site and then follow the prompts to do the initial setup. Some of the plugins on the wishlist already have stubs in the repository.

If you want to try building one of these, just leave a comment to claim it and start coding! Also this list is by no means complete. Feel free to suggest ideas and take those on as well!

Plugin wishlist

CSS

Transformer plugins

Source plugins

Docs on writing source plugins https://www.gatsbyjs.org/docs/create-source-plugin/

Example sites

Beyond example sites showing off how to use the above plugins, it'd be great to have example sites demonstrating possible ways to build:

KyleAMathews commented 6 years ago

@Tallestthomas that'd be great! @pixelstew have you or anyone else built an example site for gatsby-paginate yet? It'd be good to have one hosted here since that's a common use case.

On search — @bvaughn has played with search ideas quite a bit. Brian — did you push any of your sample code anywhere?

bvaughn commented 6 years ago

I pushed some hacked up work-in-progress here but it's not at all ready to be shared or anything. Just working on it here and there, when I find time.

dustinhorton commented 6 years ago

Anyone happen to do any work with Zendesk or Greenhouse?

angeloashmore commented 6 years ago

Hey everyone,

I created a helper library for source plugin writers. It should help reduce some of the boilerplate needed for source plugins.

gatsby-node-helpers: https://github.com/angeloashmore/gatsby-node-helpers

I've started using it for a Shopify source plugin I'm writing and found value in it, so I figured I would share it. Please let me know what you think if you try it out. Thanks :)

pixelstew commented 6 years ago

@KyleAMathews I have used the plugin on my own blog which i'm happy to clone and host here.

KyleAMathews commented 6 years ago

@angeloashmore this is fantastic!!! Could you link to it from the source plugin docs page? https://www.gatsbyjs.org/docs/create-source-plugin/

KyleAMathews commented 6 years ago

@pixelstew gatsby-paginate?

Khaledgarbaya commented 6 years ago

@pixelstew any reason the license is GPL on the gatsby-paginate plugin?

johanneslamers commented 6 years ago

Would love to see a source plugin for Craft CMS. Craft has a native plugin that create a JSON API. https://github.com/craftcms/element-api/tree/v1.

For craft 3 there is also a GraphQL server plugin. https://github.com/markhuot/craftql

KyleAMathews commented 6 years ago

This NPM library is pretty sweet. It analyzes a page and creates the necessary font files for just the actual characters used on that page for optimal loading speed https://www.npmjs.com/package/subfont

Would be neat to have a plugin which did that for all or designated pages on a site!

mickeyreiss-visor commented 6 years ago

@KyleAMathews I'd benefit from a LaunchDarkly integration. Ideally, it would support both SSR and runtime feature flags.

KyleAMathews commented 6 years ago

@mickeyreiss-visor that would be cool!

smakosh commented 6 years ago

is there any Dribbble plugin?

fk commented 6 years ago

@smakosh Not that I'm aware of (searched npm and GitHub)…want to create one?!

smakosh commented 6 years ago

I'll give it a try!

smakosh commented 6 years ago

their API is so bad lol, instead of telling me what parameter is missing, their response be like

{
    "error": "invalid_request",
    "error_description": "The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed."
}
smakosh commented 6 years ago

Okey I managed to get a response, will work on the plugin tonight!

smakosh commented 6 years ago

Done: https://www.npmjs.com/package/gatsby-source-dribbble

KyleAMathews commented 6 years ago

@smakosh nice! Want to add it to list of community plugins? https://www.gatsbyjs.org/docs/plugins/#community-plugins

smakosh commented 6 years ago

Just opened a PR https://github.com/gatsbyjs/gatsby/pull/4086

smakosh commented 6 years ago

Starter kit: https://github.com/smakosh/gatsby-source-dribbble-example

vojtechruz commented 6 years ago

Hi, any plans to add support for asciidoc? :)

KyleAMathews commented 6 years ago

@vojtechruz I don't anyone has written one yet! Feel free to take it on and contribute it back to the community!

vojtechruz commented 6 years ago

Sure, I'll be happy to :)

alexparish commented 6 years ago

Anyone working on a subfont plugin? Would love to see it in action.

m-allanson commented 6 years ago

@alexparish That'd be great to see!

KyleAMathews commented 6 years ago

@alexparish that'd be awesome! Was just thinking about one for that the other night! My thought was by default people should have to specify which pages they want as I'm assuming the process is pretty expensive? It'd be cool to hook up to google analytics and automatically apply tool to top 10 landing pages.

alexparish commented 6 years ago

@KyleAMathews I’m afraid I know very little about the subfont process but was impressed with the perf credentials. If you had planned to have a go at this plugin please don’t let me stop you - I have very little time available so it would be slow going from my side.

KyleAMathews commented 6 years ago

Ok, not sure when I'll have time too but yeah, it has a lot of potential to improve performance on sites with custom fonts.

madeleineostoja commented 6 years ago

TBH a plugin for subfont is probably a little overkill, unless it had some magic like the idea of only running on the top 10 pages from analytics (which is an awesome idea). To add subfont to a project you can just tack it onto the end of your buildstep

gatsby build && subfont public -i
m-allanson commented 6 years ago

Another couple of ideas:

johanneslamers commented 6 years ago

Plugin idea: Parse a sketch file to auto generate component documentation or design system documentation based on component description inside the sketch file.

How does it work: To parse and read the sketch file we need a clear layer and artboard structure with some specific properties. Per component group you want to document, there needs to be a separate artboard with an description layer or an information symbol. This layer needs to have a special name. We can read the content from that layer and build a page in markdown with that content.

Some tools we can use: https://github.com/xaviervia/sketch2json http://oscarotero.design/node-sketch/ https://gist.github.com/JoelBesada/fc20060741342e8a5f15208401e4308d

Khaledgarbaya commented 6 years ago

A cloudinary plugin idea: more info

daon commented 6 years ago

I'll work on pdf-transformer.

Jaikant commented 6 years ago

I'll work on the dynamodb source plugin.

DSchau commented 6 years ago

@KyleAMathews I'm gonna break this apart into a few issues so it's a little more approachable. I'll close this out once they're created!

larowlan commented 6 years ago

issue summary has

Drupal (there's the start of one already in the repo but there's a number of additions that'd be great to make)

Is there a list somewhere of the additions you're chasing?

aroduribe commented 6 years ago

Is the source wishlist still valid on what we can add?

kenigbolo commented 6 years ago

@KyleAMathews I have a small node utility I use for fixer-io and I'd actually love to add this as a plugin I can use in gatsby so basically I'd be making a gatsby-fixer-io plugin. Is it okay to submit a PR for this already as I have this mapped out at the moment

KyleAMathews commented 6 years ago

@kenigbolo we try to only add really core plugins to this repo. We'd love for you to publish your plugin to npm yourself so it can show up in the plugin library! https://www.gatsbyjs.org/docs/submit-to-plugin-library/

KyleAMathews commented 6 years ago

@aroduribe not really. Many of these things have been done. If there's one that looks interesting, double check against the plugin library to see if it's been done or not. https://www.gatsbyjs.org/plugins/

You can also check https://github.com/gatsbyjs/gatsby/labels/status%3A%20help%20wanted for work to help out.

Other ways to contribute also can be found at https://www.gatsbyjs.org/docs/how-to-contribute/

paulspencerwilliams commented 5 years ago

Since it's acquisition by Smugmug in April, Flickr seems to be going through a small renaissance. As a long time user of the Flickr, I'm really tempted to have a go at writing a source plugin...

Flickr would be useful - while the site itself is languishing, it's robut public API makes it a useful source to store photos to pull into blog posts and pages.

dustinhorton commented 5 years ago

Curious if anyone has looking into a Notion source plugin…

Necmttn commented 5 years ago

@dustinhorton I was looking at it yesterday. but they don't have a public API so need to use public boards etc.

there's an unofficial API SDK written in GO. https://github.com/kjk/notionapi

let me know if you are willing to write one. I might contribute as well.

I have written gatsby-source-trello for the same reasons.

dustinhorton commented 5 years ago

@Necmttn Yeah I'd stumbled on that after searching for a Gatsby source plugin. Public would suite my needs fine, but I've only got one small use case so afraid I can't afford to commit the time it'd take. I will take a look over your Trello plugin to start to get an idea of what it might entail—thanks or linking.

wmlutz commented 5 years ago

I built this fam: https://github.com/wmlutz/gatsby-source-dynamodb

moonmeister commented 5 years ago

Reviewing current docs and plugins seems like everything in this has been covered. Closing this, any new source plugin requests can have an issue opened. (FYI: this is the oldest open issue, so yay team for getting all these done.)