Giter Site home page Giter Site logo

stephenwf / iiif-redux Goto Github PK

View Code? Open in Web Editor NEW
7.0 3.0 2.0 4.71 MB

IIIF Redux Implementation

Home Page: https://iiif-redux.stephen.wf

JavaScript 99.11% HTML 0.10% CSS 0.78%
iiif iiif-presentation manifesto iiif-av iiif-image iiif-presentation-3 iiif-search

iiif-redux's Introduction


Moving to Hyperion

This project will soon be part of the Hyperion Framework and APIs finalised. The aim of this library was to standardise both the IIIF presentation 2 and 3 specifications and provide a single layer for accessing data from them. As an experiment it was a success. However, the practicalities of supporting 2 presentation versions, and more when further versions are released is unrealistic.

Where the Hyperion Framework is different is that it will always chase the specification. It is designed to internally work with latest Presentation version, and all IIIF resources requested by it will be upgraded on the fly to the latest version. It's also grounded in strong types, although does not require types to be used by consumers of the framework. This provides a better foundation for writing libraries and tools on top of the IIIF specifications, and is a consolidation of various experiments.

The original architecture and readme can still be found below. You can find some more experiments in the pull requests.


Coverage Status Build Status Codacy Badge FOSSA Status

Demo | Concepts | API Proposal | Selector API | IIIF Spec progress | Contributing


โš ๏ธ IIIF Redux current state is a request for comments from the community with a proposal for managing IIIF resources state on the frontend for both presentational and content creation purposes.

Pull requests + issues are welcomed to discuss and improve this proposal.


What is IIIF Redux?

IIIF Redux is a single source of truth for IIIF resources, split into 3 distinct packages:

  • IIIF Redux - the "to the spec" implementation, storing and normalizing collections, manifests and canvases.
  • IIIF Redux Viewer - more state, actions and selectors for building a viewer experience
  • IIIF Redux Creator - new set of actions for drafting and editing IIIF resources, and hook-able middleware for saving, for creating editor UIs for IIIF resources.

Planned projects

  • IIIF Service plugins - Community sourced set of plugins for understanding and presenting different services on IIIF resources.
  • IIIF GraphQL - built using the selector library, an interface to IIIF endpoints using GraphQL.
  • IIIF Redux AV - Redux state in the temporal dimension, with extensions focused on displaying AV content.
  • IIIF Presentation Upgrade - Presentation 2 to 3 converter, Presentation 2 or 3 normalization, fixing and validation.

Proposal

Testing

For libraries that deal with interoperable data its important to have smoke tests that can be run over large sets of manifests. These tests would have to be expect(blah).toExist() or expect(blah.length).not.toEqual(0) type tests that SHOULD pass for all manifests.

In addition unit tests of the units that make up the library (selectors, reducers, actions).

Finally running Interoperable Manifesto library through Manifesto's tests too would work to ensure parity.

Contributing

This project is currently firmly in the planning and prototyping stages at the moment. Any contributions in the form of pull requests or issues for discussion are welcome.

License

FOSSA Status

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.