Giter Club home page Giter Club logo

panoptikum's Introduction

Projekt PANOPTIKUM

This is a web application that converts CSV files to an API with search and filtering. It has been used to create a digital collection of artworks, but could be used for essentially any data that is described using a Data Package. Find out more on the Open Knowledge Blog.

Made with Frictionless Data, Flask, Bootstrap and PhotoSwipe.

Deployment

  1. Install pipenv
  2. pipenv --python 3
  3. pipenv shell
  4. pipenv sync
  5. flask run
sudo apt-get install python3.6 python3-numpy
virtualenv --system-site-packages -p python3.6 env

Data refresh

To update the metadata, we run this script from the pipenv shell:

python collect.py

This script expects a data/WERKVERZEICHNIS.csv which is the UTF-8 encoded conversion of the source Excel file. It creates (or refreshes) a Data Package specification by inferring schema from the data using Data Package Pipelines.

The script also checks that images are present in the images folder. You may want to prepare the images first, if this is part of your use case. Otherwise, look at the source code to fit the process to your data.

Image collection

The convert utility from ImageMagick is required for this process.

Use the convert.sh script to prepare an images folder with consistent formats (JPEG) and resolutions (720p).

Then use thumbs.sh to generate thumbnails.

The scripts skip any files that are already present, and can be used for updates.

Running

In development, use:

env FLASK_DEBUG=1 flask run

In production, something like:

gunicorn --log-level=info -w 4 -b :8000 app:app

panoptikum's People

Contributors

dependabot[bot] avatar loleg avatar takashiuan avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

panoptikum's Issues

My collection / favorites

While exploring the works, the user should be able to click a โญ button to add items to a personal collection. This could then be exported / shared in some way, for example in the form of an e-mailed postcard.

Random slideshow

Currently the random button ("Zufallsgenerator") takes you to a random image. Instead, it could show a random selection from the collection. This would allow you to use the #1 to navigate through random results.

Select entire theme

Clicking on a theme header should select all the filters in that category.

Full screen and zoom

Right now the images are shown in the full available resolution, but not full screen. On desktop devices it is not possible to zoom into the image. Instead, create a Maps-like interface to get closer to the image. This means that images could open in a lower resolution to improve performance.

Offline storage

Make it possible to cache the collection - if not the entire application/API - on the local device for smooth interactivity, especially important in a gallery setting.

Starting page

Some kind of introduction ("Einstiegseite") with a description of the themes, previews of the collection, and instructions on how to use the tool.

Selection filter display

Show the list of selected filters immediately upon clicking them. Add an X button to cancel one filter at a time. The reset search button could be next to this list.

Web gallery preview

Currently images are displayed in a simple lightbox. It would be nice to be able to navigate forward and back through the search results, ideally also with swipe on mobile devices.

Automatic slideshow

It would be nice if you could set a timer and play through a collection of images automatically, advancing through a fade every few seconds.

See also #1 and #4

Actual selection count

Next to the categories, the total number of items per filter is shown. This value is calculated during data export. However, when a filter is selected the intersection count of the results should be shown. This means that the value would need to be calculated in real-time.

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.