New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
KyleAMathews opened this Issue Jun 17, 2017 · 92 comments

Comments

Projects
None yet
@KyleAMathews
Contributor

KyleAMathews commented Jun 17, 2017

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

  • Less
  • Stylus
  • Aphrodite (tracked in #8709)
  • CXS (tracked in #8710)
  • Glamorous
  • JSS
  • styled-jsx (@timsuchanek working on this)

Transformer plugins

  • CSV
  • docx
  • pdf (tracked in #8711)
  • xml
  • asciidoc (tracked in #8712)
  • toml (@Vagr9K working on this)
  • remote URLs (e.g. a referenced image would get downloaded and then made available as a local image).

Source plugins

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

  • Trello
  • Wordpress.com
  • Drupal (there's the start of one already in the repo but there's a number of additions that'd be great to make)
  • Prismic
  • DatoCMS
  • Github
  • SQL databases (tracked in #8714)
  • MongoDB
  • DynamoDB
  • S3 bucket: See gatsby-source-s3
  • Twitter
  • Facebook
  • https://www.accedo.tv/appgrid/
  • https://github.com/marak/Faker.js/ — pass in a "schema" for the node e.g. title, date, author w/ avatar / markdown body and generate a bunch of Post nodes. Would be great for example sites!

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:

  • Multi-language sites
  • Search
  • Pagination
  • React Helmet
  • Remark (markdown)
@fk

This comment has been minimized.

Contributor

fk commented Jun 18, 2017

  • Tweets and Gists in Markdown (see jekyll-twitter-plugin)
  • automagical figure/figcaption for Markdown images that need a caption and/or reference to source/license
  • KaTeX, MathJax (in Markdown) – also while googling around stumbled upon jekyll-scholar, which "formats your bibliographies and reading lists for the web and gives your blog posts citation super-powers", …so I guess BibTeX ;)
  • favicon generator – not super necessary (as there already is http://realfavicongenerator.net/ and I also can see a lot of reasons for generating each of those manually) but quite easy to implement (apart from that SVG icon that macOS Safari wants for its "pinned tabs")
  • Dribbble
  • Flickr
  • 500px

@KyleAMathews KyleAMathews changed the title from Plugins wishlist (and example sites) to [1.0] Plugins wishlist (and example sites) Jun 20, 2017

@KyleAMathews

This comment has been minimized.

Contributor

KyleAMathews commented Jul 2, 2017

These are great sources of standalone data sets + public APIs

@erutan

This comment has been minimized.

erutan commented Jul 3, 2017

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.

@Vagr9K

This comment has been minimized.

Contributor

Vagr9K commented Jul 5, 2017

I'll work on toml-transformer.

@timsuchanek

This comment has been minimized.

Contributor

timsuchanek commented Jul 5, 2017

Working on styled-jsx and an algolia syncer

@KyleAMathews

This comment has been minimized.

Contributor

KyleAMathews commented Jul 5, 2017

@Vagr9K @timsuchanek awesome! Added you to the list

@joshboldt

This comment has been minimized.

joshboldt commented Jul 7, 2017

Anyone working on DatoCMS? Would love to see that happen.

@mfeltscher

This comment has been minimized.

Contributor

mfeltscher commented Jul 7, 2017

Is there anyone already working on a Medium integration? Would be cool to fetch the latest posts of a given blog.

@jondubin

This comment has been minimized.

jondubin commented Jul 8, 2017

@mfeltscher you read my mind! I have the same need, and started looking into how we could write one. Since the Medium API is limited in this regard (afaik you can't get the most recent posts from a blog), we'd either have to scrape or use a blog's rss feed. I started writing the general purpose rss source here: https://github.com/jondubin/gatsby-source-rss Contributions/thoughts welcome!

@KyleAMathews

This comment has been minimized.

Contributor

KyleAMathews commented Jul 8, 2017

@jondubin hey would you be interested in adding the source plugin to the Gatsby repo? This is a bit of an experiment but I think that having most community plugins in the same repo will help keep the quality of plugin code much higher as there'll be a lot more eyeballs on code here plus we can keep investing in better and better testing infrastructure to ensure everything works well.

Thoughts?

@jondubin

This comment has been minimized.

jondubin commented Jul 8, 2017

@KyleAMathews say no more! I'll migrate as soon as I get the chance.

@felixjung

This comment has been minimized.

Contributor

felixjung commented Jul 9, 2017

Hey there, I started playing with Gatsby this weekend. Looks cool! I want to build a personal website and use glamorous for styles. The way I see this, it does not need its own plugin. Because it uses glamor in the background, it jut works when you use the glamor plugin. Am I missing something?

@KyleAMathews

This comment has been minimized.

Contributor

KyleAMathews commented Jul 9, 2017

@felixjung dunno! Want to try and report back? I haven't used Glamorous or researched its SSR method so don't know if the existing glamor plugin will just work or not

@felixjung

This comment has been minimized.

Contributor

felixjung commented Jul 9, 2017

It does work 😆 Looking at its docs, I couldn't find anything about SSR stuff. Kent C. Dodds just wrote it works because glamor and react support it. So I tried and it works when you enable the glamor plugin. 🎉

@KyleAMathews

This comment has been minimized.

Contributor

KyleAMathews commented Jul 9, 2017

Oh well perfect then :-) you want to add mention of it then to the glamor plugin readme and we can check that one off then 👍

@felixjung

This comment has been minimized.

Contributor

felixjung commented Jul 9, 2017

Sure, can do.

@fk

This comment has been minimized.

Contributor

fk commented Jul 9, 2017

@jondubin +1 regarding the limitations of the Medium API. I also tried the RSS way, only to find out the feed also contains the user's comments, which you can work around, but … 🙄

@rawrmonstar

This comment has been minimized.

Contributor

rawrmonstar commented Jul 9, 2017

I think I'm going to work on a emotion plugin

@etienne-dldc

This comment has been minimized.

etienne-dldc commented Jul 10, 2017

Hi, it would be great to have a plugin for Directus since it's an open source alternative to Contentful :)

@mfeltscher

This comment has been minimized.

Contributor

mfeltscher commented Jul 10, 2017

@fk @jondubin While looking into this issue I found another solution to fetch posts from Medium as described in this blog post: https://medium.com/@{username}/latest?format=json.

@Khaledgarbaya

This comment has been minimized.

Member

Khaledgarbaya commented Jul 10, 2017

👋 I can work on the gatsby-transformer-xml plugin

@Khaledgarbaya

This comment has been minimized.

Member

Khaledgarbaya commented Jul 11, 2017

here's the PR for gatsby-transformer-xml

@sebastienfi

This comment has been minimized.

Collaborator

sebastienfi commented Jul 23, 2017

@KyleAMathews Wordpress.com source plugin is done.

@alexparish

This comment has been minimized.

Contributor

alexparish commented Apr 23, 2018

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

@m-allanson

This comment has been minimized.

Contributor

m-allanson commented Apr 23, 2018

@alexparish That'd be great to see!

@KyleAMathews

This comment has been minimized.

Contributor

KyleAMathews commented Apr 23, 2018

@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

This comment has been minimized.

Contributor

alexparish commented Apr 23, 2018

@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

This comment has been minimized.

Contributor

KyleAMathews commented Apr 23, 2018

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.

@seaneking

This comment has been minimized.

Contributor

seaneking commented May 5, 2018

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

This comment has been minimized.

Contributor

m-allanson commented May 11, 2018

Another couple of ideas:

@johanneslamers

This comment has been minimized.

johanneslamers commented Jun 20, 2018

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

This comment has been minimized.

Member

Khaledgarbaya commented Jun 27, 2018

A cloudinary plugin idea:
more info

@daon

This comment has been minimized.

daon commented Aug 16, 2018

I'll work on pdf-transformer.

@Jaikant

This comment has been minimized.

Contributor

Jaikant commented Sep 6, 2018

I'll work on the dynamodb source plugin.

@DSchau

This comment has been minimized.

Contributor

DSchau commented Oct 2, 2018

@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

This comment has been minimized.

larowlan commented Oct 9, 2018

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

This comment has been minimized.

aroduribe commented Oct 22, 2018

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

@kenigbolo

This comment has been minimized.

kenigbolo commented Oct 26, 2018

@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

This comment has been minimized.

Contributor

KyleAMathews commented Oct 26, 2018

@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

This comment has been minimized.

Contributor

KyleAMathews commented Oct 26, 2018

@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/

@DSchau DSchau removed the Hacktoberfest label Nov 6, 2018

@paulspencerwilliams

This comment has been minimized.

paulspencerwilliams commented Dec 15, 2018

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment