Giter Club home page Giter Club logo

janeway's Introduction

Janeway Logo

Janeway is a web-based platform for publishing journals, preprints, conference proceedings, and books. It is developed and maintained by a team of developers at the Open Library of Humanities, part of Birkbeck, University of London.

Technology

Janeway is written in Python (3.10+) and utilises the Django framework (4.2).

Installation instructions

Developer installation instructions are available in our documentation site.

A guide for installing on the live environment with apache and mod_wsgi is also available.

Running Janeway with docker

Janeway's development server can be run within a docker container, avoiding the need to install and run its dependencies from your machine. A docker-compose file as well as a Makefile can be found at the root of the project wrapping the most common operations. Docker is compatible with multiple architectures and Operating systems, if you need help installing docker, have a look at the docker documentation.

Simarly to the native installation, Janeway can be installed in a docker environment by running make install and following the installation steps described above. As a result, a database volume will be populated under janeway/db/postgres-data Once installation is completed, just type make janeway to run janeway with a postgres backend (default behaviour).

If a change to the dependencies for Janeway is required, the Janeway container can be re-created with make rebuild. The database volume will be preserved.

In order to run a different RDBMS, the environment variable DB_VENDOR can be set to one of postgres, mysql or sqlite. e.g: DB_VENDOR=mysql make install && make

Uninstalling Janeway is as simple as running make uninstall which will delete all docker related containers as well as wipe the database volume.

Janeway design principles

  1. No code should appear to work "by magic". Readability is key.

  2. Testing will be applied to security modules and whenever a post-launch bugfix is committed. We do not aim for total testing but selective regression testing.

  3. Security bugs jump the development queue and are a priority.

  4. We will never accept commits of, or ourselves write, paywall features into Janeway.

Current development

What are we working on right now? For a high-level view, check out our public roadmap.

You can get more detail by viewing our project boards here on GitHub. Open a project to see which issues it includes and what their status is. The status should be one of these:

  • To Do -- we plan to do this and include it in this release
  • In Progress -- someone is working on it at this very moment!
  • PR Submitted -- this means one developer has come up with a solution and is waiting for feedback from others
  • Done -- this means at least one other developer has approved the solution and it has been merged into the main codebase in preparation for the release

We aim to build releases in 8-week sprints, though some development cycles have taken quite a bit longer.

More on how we develop Janeway.

Licensing

Janeway is available under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE (Version 3, 19 November 2007).

Contributions

We welcome all code contributions via Pull Requests where they can be reviewed and suggestions for enhancements via Issues. We do not currently have a code of conduct for this repo but expect contributors to be courteous to one another. In order to more easily associate changes to their respective github issues, please adhere to the following conventions:

  • Branch names should be prefixed with the issue number they are related to, followed by either "Feature" or "Hotfix" depending on the nature of the change ( e.g: 66-Feature)
  • Start every commit with a reference to the github issue they are related to (e.g: #66: Adds new feature xyz)

Contacts

If you wish to get in touch about Janeway, contact information is provided below.

Andy Byers, Director of Publishing Technology - [email protected]

Major Releases

Major releases are listed below. Between v1.3 & v1.4 there were a large number of minor releases. You can find more information on the releases page.

Version Released Code Name
v1.0 10/07/2017 Kathryn
v1.1 01/09/2017 Chakotay
v1.2 06/11/2017 Tuvok
v1.3 10/08/2018 Doctor
v1.4 25/10/2021 Kes
v1.5 07/05/2023 Torres

Geolocation

Janeway includes GeoLite2 data created by MaxMind, available from https://www.maxmind.com

janeway's People

Contributors

ajrbyers avatar alainna avatar alexdutton avatar bbkctp avatar beethro avatar chriskeene avatar dependabot[bot] avatar ecareless avatar everreau avatar fingolfin avatar gamboz avatar hachacha avatar hamidrezasz avatar hardyoyo avatar joemull avatar justingonder avatar lsh-0 avatar mauromsl avatar mdlincoln avatar myucekul avatar s-haime avatar safwanrahman avatar stephdriver avatar tbelc avatar tingletech avatar yakky avatar

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

janeway's Issues

Summernote Save Bug

When attempting to save a summernote field in Code View it will not save, we should warn the user and arrest the save function.

Failed Author Search

On submission, when an author search fails we should notify the user with a django message.

Login Ban

We should have the ability to ban a user or Ip from logging in for a set period. If a user fails to login 5 times they should be banned for 20 mins. Resetting if a password will remove all bans.

Upgrade to Django 1.11

Upgrade to latest version of Django, this will require updating the django debug toolbar and updating dynamic sites to get rid of render_to_response.

This opportunity should be taken to upgrade all prerequisites.

/home/ajrbyers/.virtualenvs/janeway/src/dynamicsites/dynamicsites/middleware.py:
    3  from django.contrib.sites.models import Site
    4  from django.http import HttpResponsePermanentRedirect, Http404
    5: from django.shortcuts import render_to_response
    6  from django.utils.cache import patch_vary_headers
    7  from django.utils.http import urlquote
    .
  231                      if redirect_to:
  232                          cookies = response.cookies
  233:                         response = render_to_response(
  234                              'debug_toolbar/redirect.html',
  235                              {'redirect_to': redirect_to}

/home/ajrbyers/.virtualenvs/janeway/src/dynamicsites/dynamicsites/views.py:
    1  from django.http import Http404
    2: from django.shortcuts import render_to_response
    3  from django.template import RequestContext
    4  from django.contrib.sites.models import Site
    .
   16          'site':site
   17      }
   18:     return render_to_response('dynamicsites/site_info.html', args,
   19          context_instance=RequestContext(request))

Sync Sites Command

This command currently tears down the Sites table and recreates it. Instead we should get_or_create and if created is False, update the attrs.

Overlay journal views and handlers

Add backend and front-end interfaces to handle external articles (either by DOI or by URL). If by DOI then pull in metadata automatically.

[Note: security of DOI metadata pull in to inject malicious content into a ToC page if safe filter is used]

Pinned Articles

Allow an editor to select pinned articles and order them for a journal. This will pin the articles in order to the articles listing.

TOC Model/Special collections

If we store a table of contents as a separate model, then we can attach/detach them arbitrarily. So an issue can have a ToC. A journal can have a homepage ToC. A special collection can have a ToC.

Preprints

Allow a site wide option for preprints and add option to submission process.

Front end/Display

  • Add a new is_preprint boolean to submission model
  • Set default submission objects manager to filter out non-preprints
  • Add a new boolean setting 'enable_preprints'
  • If preprints are enabled, add a nav item for preprints
  • Add a "preprints" area with info pages on preprints and a way to search preprints
  • Add a new preprint article display template
  • Add a preprint list page (paginated by 15)

Submission

  • If enabled, add a drop down to the submission nav item allowing selection of either a normal article or a preprint for submission
  • Add new preprint start submission page with its own content
  • Allow user to complete submission as normal
  • Limit submission to PDF files only (setting?)
  • Add Event to be fired on submission

Workflow

  • Add new interface to view all unaccepted preprints
  • Allow editor to view preprint metadata and make a decision
  • Editor should be able to email the decision to the author(s)
  • If accepted, it will appear in the preprint archive
  • If declined, it will not appear on the site

Comments

  • There should be a way for people to leave comments on the manuscript that are moderated... by the author as to whether they appear in public
  • Add interface to view all comments moderated and un-moderated for a given article
  • Allow author to approve comments for public display
  • Allow Editors to see a list of comments, their status and allow Editors to make them public also

Typeset Tasks Files

All files are shown, not only those that the Production Manager has selected.

OAI to API App

APIs should have their own app, and all code related to OAI rendering should be moved there.

News App

News is large enough that it should have its own application.

  • Add a new News app
  • Move views, urls and models across
  • Update other code that utilises news
  • Test all still working

Allow adminitrator to set password policy

Currently our only password policy is length, but we should allow an admin to set a site with password policy including:

  • Password length (min: 9 chars)
  • Must include upper case
  • Must include number

Note: We recommend an easy to remember, long password that could be a short sentence as these are harder to crack.

Plug and Play Workflow

Allow a plugin to register as a workflow plugin. It's workflow name will be added to the set of Stages. Managers can then define where they fit in the workflow with an handshake and password stage.

IE plugin x might handshake with Review and handoff to Production

Plugins can identify themselves as eligible to be part of the workflow in their plugin_settings.py eg:

IS_WORKFLOW_PLUGIN = True
HANDSHAKE_URL = 'bc_article'
STAGE = 'Back Content'

This Stage identifier will then be appended to the stage list and will also display articles in this stage on the dashboard.

Kanban will need to be updated and the relevant plugin will need to supply a card.html file to determine it's content within the kanban list.

  • Add new workflow handover event that returns core.workflow.workflow_next
  • Identify core workflow handover points and add an event call the new event:
  • Review
  • Copyediting
  • Production
  • Proofing
  • Prepublication
  • Update core.worflow.workflow_next to handle there being no more events (redirect somewhere?)
  • Update Kanban to reflect workflow elements
  • Update workflow plugins to have a card.html for Kanban
  • On install, generate a default workflow [review, copyediting, typesetting, proofing, prepub]
  • Record which elements an article has been through
  • Update the Article Jump drop down

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.