Giter VIP home page Giter VIP logo

grid's Introduction

Grid

License Join the chat at https://gitter.im/guardian/grid

Grid is the Guardian’s image management system, which provides a universal and fast experience accessing media that is organised and using it in an affordable way to produce high-quality content.

See the Vision document for more details on the core principles behind this project.

Screenshot of Grid search

Grid runs as a set of independent micro-services (Scala and Play Framework) exposed as hypermedia APIs (argo) and accessed using a rich Web user interface (AngularJS).

Grid relies on Elasticsearch for blazing-fast searching, and AWS services as additional storage and communication mechanisms.

See the docs for setup and running guides.

grid's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

grid's Issues

Use description as alt text if no title when dropping on thumbnail

Dropping an image on the trail doesn't get you any text to edit down as alt text if the title is missing. It should probably use the description instead in that case.

Description is usually mapped to caption, but there's no caption for thumbnail so the copy is not passed through.

Unit tests for image metadata extraction

Given how much we care about image metadata and successful ingestion, they would give us confidence and a way to regression test the behaviour on a growing sample of images.

Will also make it easier to figure out metadata extraction for other formats in the future.

Use pan-domain auth

When ready.

This will expose all services under a local.dev-gutools.co.uk domain, simplify CORS with Composer (once Composer also adopts it), etc.

Need to ensure that we retain the ability to auth by API key for apps.

Optimise original image loaded

On the image and crop screen, we load the original image file, which can be large. This is slow unless you're on a fast connection.

We should explore dropping in a dynamic resizer to dramatically reduce the file size.

Support CMYK images

Test if ingestion of CMYK is supported and if not, do what is necessary to support them (maybe passing -colorspace RGB to ImageMagick, suggests @blishen?).

Check crop dimensions to avoid rounding noise

For instance we sometimes end up with 599px when we would expect 600px, or 2000x1202 when it should really be 2000x1200.

Let's review the way dimensions rounding works and see if this can be tidied up.

Also affects frontend that are particularly strict on dimensions.

Rely on baked base AMIs for deployments

This will make deployments more stateless and resilient (e.g. our deploys were failing due to a broken transitive python dependency).

e.g. see how membership or workflow have been doing it.

Fix PagerDuty integration to use HTTPS POST endpoint

Alarms didn't work today because the email wasn't verified. Haven't found a way to verify it, and generally it seems that there's a new better way to do it using an HTTPS endpoint:

http://www.pagerduty.com/docs/guides/aws-cloudwatch-integration-guide/

We just need to replace the SNS email subscription with the correct HTTPS endpoint, somehow passing in that to the UpdateStack script as a parameter.

We should also:

  • Ensure the alarms are correctly configured for each environment (all seem to point to PROD atm)
  • Test that it actually works.
  • Maybe fix the UpdateScript to allow not passing in the panda and alarm parameters every time

Compile, bundle and minimise assets and templates

It's inefficient and much slower to load all the sources and transpile them in the browser as we do currently.

Let's keep this as a DEV workflow, but compile, bundle and minimise all assets into a bundle file that can be efficiently loaded and cached.

Don't index unknown EXIF tags

We currently store unknown tags in fileMetadata, even though we do nothing with them and don't know what they are.

We should review if we can make sense of any of it, but generally should be ignored unless standard.

Valid JPGs being parsed as invalid

There seems to be a problem with Drew's image parsing of JPGs.

We are then throwing these images away, and this has proved, in regards to Australia, to be a problem as the images they're looking for are bust, thus not showing up.

A solution might be to move to another JPG reader, not really sure what else we can do.

Since our last image upload server went up until now (November 13, 2014 2:44:28 PM UTC - November 24, 2014 17:00:00 PM UTC - 266 Hours) we've had 8251 of these errors - which seems significant.

Allow filtering for images with "free rights"

Requested by [email protected] (and likely many others):

Is there - or could there be - a way to search pic desk/library only for pictures with a green tick? I appreciate pic editors need to see the full spread, but when liveblogging, for example, I want to be able to search only for pictures I can actually use, and not have to click through pages of red/orange-flagged ones first, which really slows me down. Would be great if possible!

Map all useful fileMetadata as image metadata

For instance we're missing byline title, date taken, etc. as well as some location-related metadata (province, etc). We should go over all the fileMetadata fields and ensure they are mapped to a canonical entry in the metadata so it can be indexed, searched, displayed, etc.

Results thumbnails should not expand to fill width if there are too few

If there is only one result, or if there are less than the maximum number of results to fill the last row, thumbnails expand to fill the width. This breaks the nice grid, and also in the case of the single result makes the cost info float oddly at the bottom.

Can we make the flex items always fit to the grid regardless? I haven't look at the use of flexbox in details so let's not waste too much time if it's a pain.

PS: I've had a few chats yesterday and the solution would really be CSS3 grids, but sadly they're only supported in IE for now, so we have to wait a little longer...

Prevent exports from invalid images

The crop button is now hidden for invalid images, but it's still possible to do a crop as it's not enforced by the server.

The cropper should refuse to crop or export invalid images.

Have a script to add ES mapping

This is for when we want to add to the ES mapping - for that we don't have to reindex.
For the time being we're using the ES UI.

This could be automatically run on build perhaps?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.