We are Kraken.io - the best image optimizer on this planet and we are in need of a kick-ass WP plugin to connect to our API. The winner of this contest will be provided with free, unlimited access to our API during the time of development.
Our API docs are available here: https://kraken.io/docs
This plugin will utilize two options - "upload" to the API (https://kraken.io/docs/upload-url) and "wait" (https://kraken.io/docs/wait-callback). If you will have any problems with the API integration we are here to help and guide you.
If you like, you can check our integration example for PHP - https://kraken.io/docs/integration-upload
When the user selects the "lossy" option (read below in requirements) the plugin will need to utilize the API to perform a simple "lossy" optimization (https://kraken.io/docs/lossy-optimization);
The way how our API works is simple - you upload a file, it is optimized on our servers and then the optimized image URL is returned (along with other data about the optimization). You would need to fetch the optimized image and replace the non-optimized one in Wordpress.
IMPORTANT 1: If you have any suggestions (not mentioned in requirements below) on how things should work in this plugin you can contact us at any time and we will be happy to discuss it. We value your input :)
IMPORTANT 2: Static GIF images will be converted to optimized PNGs. When that happens, the extensions are changed but the base names are preserved - so this change will need to be reflected in the paths in Wordpress.
- Main requirement is to optimize every single image that comes through a standard WP uploader when adding a new image. By "standard uploader" we mean either a uploader lightbox when adding new post ("Add Media" button) or a uploader accessible with "Media" -> "Add New" on the admin sidebar. The optimization process should be as transparent to the user as possible.
- Optimization results should be stored in a DB (optimization date, original size, optimized size).
- A new column called "Kraken.io" in the "Media Library" view should be added with two entries for each image: "Original Size: XX KB" and "Kraken Size XX KB". The "Kraked Size" entry should be presented with a bold font-style.
- If no savings were found during the optimization process, instead of a bolded "Kraked Size XX KB" a bold text "No savings made" should be presented.
- If a given image found in the library was not optimized before, instead of presenting optimization results there should be a button called "Optimize This Image". When clicked, the button should be grayed-out (and disabled) and a small spinner should be presented next to the button to indicate optimization state. This call to the API should (ideally) utilize an async XHR2 upload (ajax upload).
- In the "Settings" -> "Media" section, a new entry should be added right below "Uploading Files" called "Kraken Image Optimizer". In this section there should be an option to choose from "lossless" and "lossy" as radiobuttons. The design of this entry should follow the design of the rest of elements on this settings page. This settings will globally affect all possible optimizations.
- Whenever an error comes from our API (like quota limit hit) a lightbox should be presented to the user with a error message. Please see https://kraken.io/docs/http-status-codes So whenever our API returns "429 Too Many Requests" a meaningful error message should be presented in a lightbox.
- In the "Appearance" -> "Themes" view a link should be added below "Activate | Live Preview | Details" for each theme saying "Optimize with Kraken". When clicked the plugin should send for optimization every image found (recursively) in this theme's directory.
The plugin will be stored on our GitHub account and distributed under the MIT license.
Once again, if you need any further information/clarification please do not hesitate to contact us at any time.