A Django web application to receive, virus check and validate transfers of digital archival records, and allow archivists to appraise and accession those records.

Overview

Aurora

Build Status GitHub (pre-)release

Aurora is a Django web application that can receive, virus check and validate transfers of digital archival records, and allows archivists to appraise and accession those records.

The name of the application is a reference both to the natural light display often seen in the northern hemisphere - sometimes referred to as aurora borealis - as well as the Roman goddess of dawn.

Aurora is part of Project Electron, an initiative to build sustainable, open and user-centered infrastructure for the archival management of digital records at the Rockefeller Archive Center. Project updates are available on Bits & Bytes, the RAC's blog.

Installation

Quick Start

If you have git and Docker installed, getting Aurora up and running is as simple as:

git clone https://github.com/RockefellerArchiveCenter/aurora.git
cd aurora
docker-compose up

Once the build and startup process has completed, log into Aurora at http://localhost:8000 with the user/password pair admin and password.

Detailed Installation Instructions

  1. Install git and Docker
  2. Download or clone this repository
$ git clone https://github.com/RockefellerArchiveCenter/aurora.git
  1. Build and run Aurora. The initial build may take some time, so be patient!
$ cd aurora
$ docker-compose up
  1. Once this process has completed, Aurora is available in your web browser at http://localhost:8000. Log in using one of the default user accounts (see "User accounts" below).

Installation Notes for Windows Users

By default, when cloning to a Windows machine, git will convert line endings to DOS format, which will cause a variety of issues in the Docker container. To avoid these problems, clone the repo to Windows using core.autocrlf

$ git clone https://github.com/RockefellerArchiveCenter/aurora.git --config core.autocrlf=input

Install the correct version of Docker based on the Windows platform being used. Docker Toolbox is available for versions of Windows that do not support Docker for Windows.

When using Docker Toolbox, clone aurora to a location in the C:\Users directory. By default, Docker Toolbox only has access to this directory.

Note that with Docker Toolbox, Aurora will not default to run on http://localhost:8000. Check the docker ip default:

$ docker-machine ip default

Sample Data

If desired, you can import a set of sample bags (not all of which are valid) by running the import_sample_data.sh script.

Open up a new terminal window and navigate to the root of the application, then run

$ docker-compose exec web import_sample_data

Transferring Your Own Bags

If you'd like to transfer your own bags, you can do that by SFTPing them into the local container:

  • Protocol: SFTP
  • Host name: localhost
  • Port number: 22
  • Username: A username associated with an existing user account in Aurora (see below for default accounts)
  • Password: The password associated with the user account above

Data Persistence

The Docker container is currently configured to persist the MySQL database in local storage. This means that when you shut down the container using docker-compose down all the data in the application will still be there the next time you run docker-compose up. If you want to wipe out the database at shut down, simply run docker-compose down -v.

User accounts

By default, Aurora comes with five user accounts:

Username Password User Role
admin password System Administrator
donor password Read Only User
appraiser password Appraisal Archivist
accessioner password Accessioning Archivist
manager password Managing Archivist

See the Aurora User Documentation for more information about permissions associated with each user role.

Note that in the Docker container, all user passwords are reset to "password" each time the container is restarted. This behavior can be changed by editing setup_objects.py, but note that this change will impact your ability to SFTP bags into the container.

Transferring digital records

Aurora scans subdirectories at the location specified by the TRANSFER_UPLOADS_ROOT setting. It expects each organization to have its own directory, containing two subdirectories: uploads and processing. Any new files or directories in the uploads subdirectory are added to Aurora's processing queue.

At a high level, transfers are processed as follows:

  • Transfers are checked to ensure they have a valid filename, in other words that the top-level directory (for unserialized bags) or filename (for serialized bags) does not contain illegal characters.
  • Transfers are checked for viruses.
  • Transfers are checked to ensure they have only one top-level directory.
  • Size of transfers is checked to ensure it doesn't exceed TRANSFER_FILESIZE_MAX.
  • Transfers are validated against the BagIt specification using bagit-python.
  • Transfers are validated against the BagIt Profile specified in their bag-info.txt file using bagit-profiles-validator.
  • Relevant PREMIS rights statements are assigned to transfers (see Organization Management section for details).

API

Aurora comes with a RESTful API, built using the Django Rest Framework. In addition to interacting with the API via your favorite command-line client, you can also use the browsable API interface available in the application.

Authentication

Aurora uses JSON Web Tokens for validation. As with all token-based authentication, you should ensure the application is only available over SSL/TLS in order to avoid token tampering and replay attacks.

To get your token, send a POST request to the /get-token/ endpoint, passing your username and password:

$ curl -X POST -d "username=admin&password=password123" http://localhost:8000/api/get-token/

Your token will be returned in the response. You can then use the token in requests such as:

$ curl -H "Authorization: JWT <your_token>" http://localhost:8000/api/orgs/1/

In a production environment, successfully authenticating against this endpoint may require setting Apache's WSGIPassAuthorization to On.

Django Admin Configuration

Aurora comes with the default Django admin site. Only users with superuser privileges are able to view this interface, which can be accessed by clicking on the profile menu and selecting "Administration".

In addition to allowing for the manual creation and deletion of certain objects, this interface also allows authorized users to edit system values which are used by the application, including the human-readable strings associated with Bag Log Codes. Care should be taken when making changes in the Django admin interface, particularly the creation or deletion of objects, since they can have unintended consequences.

Contributing

Aurora is an open source project and we welcome contributions! If you want to fix a bug, or have an idea of how to enhance the application, the process looks like this:

  1. File an issue in this repository. This will provide a location to discuss proposed implementations of fixes or enhancements, and can then be tied to a subsequent pull request.
  2. If you have an idea of how to fix the bug (or make the improvements), fork the repository and work in your own branch. When you are done, push the branch back to this repository and set up a pull request. Automated unit tests are run on all pull requests. Any new code should have unit test coverage, documentation (if necessary), and should conform to the Python PEP8 style guidelines.
  3. After some back and forth between you and core committers (or individuals who have privileges to commit to the base branch of this repository), your code will probably be merged, perhaps with some minor changes.

This repository contains a configuration file for git pre-commit hooks which help ensure that code is linted before it is checked into version control. It is strongly recommended that you install these hooks locally by installing pre-commit and running pre-commit install.

License

Aurora is released under an MIT License.

Comments
  • Improve Bag-It Profile form for Manifests Allowed

    Improve Bag-It Profile form for Manifests Allowed

    Fixes issue #407

    • Changes the help text for the ManifestsRequired and ManifestsAllowed elements in the BagIt Profile form to reflect recent changes to these after we excluded md5 from the checksum algorithms.
    • Shortens some help text in the BagIt Profile form.

    Question: I think we should make Manifests Allowed required in the form? I could not figure out how to do that, so tips welcome.

    opened by HaSistrunk 7
  • Limits organizations to only one Bagit Profile

    Limits organizations to only one Bagit Profile

    Limits organizations to one BagIt Profile by changing database relationships. Makes a bunch of other updates throughout the app as a result of this change.

    Note for reviewers: this is a pretty intensive PR, so please take the time to pull down the app and test things out locally to make sure it's all working as expected.

    fixes #399

    opened by helrond 6
  • Implement PageTitleMixin

    Implement PageTitleMixin

    Adds a PageTitleMixin and implements it across the application. This means that all pages now have a meta page title which aligns with the h1 on the page. It also allowed me to get rid of some get_context_data blocks in views, which was a nice feeling.

    Asking for a review on this because it's fairly invasive.

    Fixes #473

    opened by helrond 5
  • Do not send notifications for transfers that are still being uploaded

    Do not send notifications for transfers that are still being uploaded

    Transfers should not be checked until they have been completely uploaded. For large transfers, a check is necessary to ensure the bag is not in the process of being transferred.

    Checking while bags are still being transferred results in incorrect error messages and failure reports.

    notifications validation blocker 
    opened by helrond 5
  • Change name of default branch

    Change name of default branch

    In alignments with efforts to reduce harmful and oppressive language in all aspects of the RAC's work, the default branch on this repository should be renamed from master to base.

    1. Move to a new default branch and push:
    git branch -m master base
    git push -u origin base
    
    1. Change default branch in GitHub.
    2. Update any CI integrations (Travis CI/GitHub Actions) which rely on this branch.

    Local clones can update refs as follows:

    $ git checkout master
    $ git branch -m master base
    $ git fetch
    $ git branch --unset-upstream
    $ git branch -u origin/base
    $ git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/base
    
    opened by helrond 4
  • Limit organizations to only one BagIt Profile

    Limit organizations to only one BagIt Profile

    Is your feature request related to a problem? Please describe.

    The original implementation of Aurora allowed organizations to have multiple BagIt Profiles. However, we so far don't have a use case for multiple Profiles associated with a single organization.

    Having multiple BagIt Profiles associated with an organization also blocks us from doing some things which would improve validation, like dynamically fetching the BagIt Profile's URL from Aurora, rather than having to rely on hardcoded URLs.

    Describe the solution you'd like

    Remove the ForeignKey relationship on BagItProfiles to Organizations, and add a ForeignKey relationship from Organizations to BagIt Profiles. In BagIt Profile validation, fetch the BagIt Profile by using Django's reverse utility. Additional work will need to be done in Views, Templates and API Serializers to account for the above changes.

    Describe alternatives you've considered

    We could leave this as-is; it's not necessarily hurting anyone, but it's kind of annoying.

    opened by helrond 4
  • Saves metadata from bag-info.txt to application

    Saves metadata from bag-info.txt to application

    Adds models for metadata in bag-info.txt, as per #125. Started to add this data into views, but leaving most of that work for other PRs.

    This is branched from #132, so that should be merged first.

    opened by helrond 4
  • Clarify password handling

    Clarify password handling

    Is your feature request related to a problem? Please describe.

    See #539. For users not using AWS services, the password will need to be stored in the app database, while for Cognito implementations the password should be stored in Cognito.

    Describe the solution you'd like

    Clarify models and handling of auth so it works for both local and Cognito users.

    aws 
    opened by helrond 3
  • Add script to easily add existing users

    Add script to easily add existing users

    Adds a script that can be run to easily add system users and groups (and associate users with the right groups) for Users and Organziations which already exist in Aurora's database. Useful when migrating to a new server.

    opened by helrond 3
  • Freezing top row of table

    Freezing top row of table

    Is your feature request related to a problem? Please describe.

    When you scroll down with too many results, the top row goes away (under the transfer, appraise and accession pages) which result in scrolling back and forth a lot.

    Describe the solution you'd like

    Is there a way to freeze the top row or make it so that it moves in sync when scrolling.

    Additional context

    Feel free to disagree but I feel it kills a lot of time scrolling back and forth.

    ui 
    opened by EcZX 3
  • Edit UIs and notifications for consistent transfer tracking info and ids

    Edit UIs and notifications for consistent transfer tracking info and ids

    Is your feature request related to a problem? Please describe.

    Both donor and archivist users have difficulty searching for/locating a specific transfer in Aurora. Donor users have added their external identifier to the bag title name to aid searching, and archivists are currently tracking specific transfers by metadata including title, record type, creator, and upload time. Search/ locating specific transfers can be improved by adding transfer ids to tables and detail views consistently across the app and in email notifications.

    Describe the solution you'd like

    Transfer page table (both All Transfers and My Transfers tabs)

    • Add external identifier to "Name" column in the format: title (external identifier). If a bag is not valid, use the bag-it-name value instead.
    • Add "Transfer File ID" column containing machine file id.
    • Reformat "Dates "column to remove day: month year - month year to make more room in the table
    • Change column order to: Name, Transfer File ID, Status, Dates, ...
    • Rename "Upload Time" column to "Transfer Date" to match Appraisal Queue

    Appraisal Queue

    • Rename "Transfer File Name" column to "Transfer File ID" to match new column in Transfer page table. Table values should be the machine file id.

    Organization Page (Recent Transfers table)

    • Rename column "Bag Name" to "Name" to match Transfer page table
    • Change value in name column to match Transfer page table: bag title (external identifier). If bag is not valid, use the bag-it-name value instead.
    • Change "Upload Time" column name to be "Transfer Date" to match Transfer page table and Appraisal Queue table.

    Accession Record (Transfers table)

    • Rename "Name" column to be "Transfer File ID" to match other tables in Aurora. Table values should be the machine file id.

    Transfer Details page

    • Add the words "Details for" to the h1 ahead of the bag name to match the Appraisal Queue details modal.
    • Add the machine file id as a <p> below the header if that value is available

    details view screenshot

    Appraisal Details modal

    • Change the modal to match the Transfer Details page, ie. use the bag-it-name as the title and add the machine file id below the title as seen in the screenshot in the previous section.

    Email notification

    • For transfers that pass validation, include the bag title and external identifier in the email text: The transfer [bag title (external identifier)] with the bag name [bag-it-name] was received at {} and has passed all automated validation checks:', 'You can view the current status of this transfer at {}'
    • For transfers that fail validation, add additional text: An error occurred for the transfer with bag name {}

    Dashboard

    • Leave the Recent Transfers section links as the bag-it-name, since these are just quick links that do not need to be complicated with additional identifiers.

    Describe alternatives you've considered

    • We could use the transfer file id as the header in detail pages and on the Dashboard, but because invalid bags will not have this value, I'm suggesting sticking with the bag-it-name for consistency.
    • There may be more explanatory text that could be added to the email notification for a failed bag since that notification cannot provide any metadata to help clarify which bag is invalid.

    Additional context

    Once changes are made, communicate to donor users that the external identifier does not need to be added as part of the title.

    ui notifications 
    opened by HaSistrunk 3
  • Align transfer status indications across the UI

    Align transfer status indications across the UI

    Is your feature request related to a problem? Please describe.

    The transfer status on the Aurora /transfers page shows a progress bar and the exact status description. However, on the dashboard, each transfer status indication is binary with text indicating that it either passed or failed validation: Transfer by [user] passed/failed validation.

    As we saw from bag 0c962a5a-0456-49c7-b7b1-58c1b24ce57c in a recent dev transfer, this can cause confusion for the user when the transfer status is "Transfer Completed" where the bag passed validation, but on the dashboard it says it failed validation.

    Describe the solution you'd like

    There are a few possibilities here. I think the idea of having this info on the dashboard is so that a user can quickly see if a bag was successfully transferred with no problems. We could adjust the text to have 3 options:

    1. Transfer by [user] is in progress if the transfer has a status of "transfer started" or "transfer completed". No red or green color.
    2. Transfer by [user] failed validation if the transfer has a status of invalid. Red color.
    3. Transfer by [user] passed validation if the transfer has any other status. Green color.

    Describe alternatives you've considered

    1. We could also adjust the dashboard table to include the same transfer status column that is on the transfers page.
    2. A simple approach would be to edit the text on the dashboard to match the transfer status on the transfers page: Transfer by [user]. Status: [transfer status]

    Additional context

    There are currently 9 possible statuses in Aurora:

    • Transfer Started
    • Transfer Complete
    • Invalid
    • Validated
    • Rejected
    • Accepted
    • Accessioning Started
    • In Accession Queue
    • Accession Complete
    ui 
    opened by HaSistrunk 0
  • Convert bag metadata datetime fields to date fields

    Convert bag metadata datetime fields to date fields

    Is your feature request related to a problem? Please describe.

    Bag metadata date fields use Django datetime fields. This is confusing for end users.

    Describe the solution you'd like

    Convert datetime fields to date fields.

    Additional context

    Will need to investigate how this impacts existing data.

    opened by helrond 2
Releases(v4.0)
  • v4.0(Jun 28, 2022)

    Breaking Changes

    • uses Python 3.10 and Django 4

    New Features

    • Allow application to be deployed continuously
    • Improve caching in CI pipeline
    • Limit delivery of accessioned transfers to one at a time (#519)
    • Toggle all rights basis checkboxes (#534)

    Fixes

    • Don't overwrite basis dates (#508)
    • Correctly assign start dates to rights statements (#516)
    • Make sure emails are sent on account creation (#502)
    • Improve display of rights statements (#507 and #533)
    Source code(tar.gz)
    Source code(zip)
  • v3.1(Sep 7, 2021)

    • Add additional characters to password reset URL regex (fixes #500)
    • Rework logic for getting Transfer machine_identifier (fixes #499)
    • Use granted_note instead of note in RightsStatementRightsGranted (fixes #497)
    Source code(tar.gz)
    Source code(zip)
  • v3.0(Aug 16, 2021)

    Breaking changes

    • Serialization of rights statements aligned with rac_schemas

    Merged PRs

    update dashboard_data signals #416 Allow organization users to access the BagIt Detail view #432 Scope Dashboard Record Type to only show record types of transfers for an organization #433 Prevent endless authentication loop for logged out users #431 Handles exceptions thrown by incorrectly configured email #434 Improve Bag-It Profile form for Manifests Allowed #428 Improve Bag-It Profile form for Manifests Allowed #428 Limits organizations to only one Bagit Profile #436 Dynamically set max_forms based on model choices #438 Refactors several rights methods to reduce duplication of code #441 Updates test bags #450 Removes mounted volumes and references to them #447 Improves performance of cron unit test #452 Add privacy policy link to footer #448 Enables SFTP transfer in container #453 Improve unit tests for Accessions and API #467 Remove static paths from cron #468 Improves Appraisal tests #469 Improves Organization tests #470 Improves coverage of user tests and model methods #471 Improves coverage for Transfer views and Archives model methods #472 Improves unit tests for Rights views and model methods #477 Improves test coverage for mixins and signals #478 Improve Travis-CI configs #479 Add test coverage for lib files #480 Improves datatable display #481 Implement PageTitleMixin #482 Refactors test helpers #484 Updates dependency management #487 Aligns naming conventions #488 Removes overriding of post in form views #491 Correctly target rights basis info #492 Moves BagItProfiles to separate app #493 Monkey patches for FIPS compliance #495

    Source code(tar.gz)
    Source code(zip)
  • v2.0(May 4, 2020)

    Adds

    Updates application to use Python3 and Django 2, c4902e4 Adds origin field to BagIt metadata, API Serializers and Bag-Info file, f912b9d and 3dd0673

    Updates

    Uses Django Rest Framework's native OpenAPI schema view, 6e5605c Adds health check endpoint, 5dcb80f Refactors JavaScript, 09f7039 Adds unit tests for cron jobs, e3fbb1d Formats all code using autopep8 Converts code comments to docstrings, 88d008c Add Manifests-Allowed to BagIt Profiles, e487209

    Fixes

    Debugs variables, aa9a232 Error handling for bags which use md5 checksum, 4c3ccdd Updates checksums in examples bags, d29bb81 Add use of v1.0 of BagIt Specification, 7b2c4f6 Properly recognizes .tar.gz files, 2a38801 Improves BDIR error message, 474687c

    Source code(tar.gz)
    Source code(zip)
  • v1.6(Oct 21, 2019)

    Adds

    Adds confirmation modal to reject workflow in appraisal queue, fixes #345 Adds a detail page for accessions, #351, #352, #358 and #344 Adds missing table headers, #367

    Fixes

    Hides "My Transfers" tab for users who have no transfers, #359 Adds fixed positioning to nav elements and table headers, #339 and #340 Avoids saving many-to-many objects with empty values, #369 Support searching of external_ids, #364 Factors out common functions and helpers to reduce redundant code

    Deployment notes

    Requires collectstatic

    Source code(tar.gz)
    Source code(zip)
  • v1.5.2(Aug 27, 2019)

  • v1.5.1(Aug 26, 2019)

  • v1.5(Aug 15, 2019)

    Implications for deployment

    • No config.py updates
    • Dependency updates
    • Added new migration 4f36567
    • Updated /static/css/styles.css 596d740

    Adds

    • Email notifications when transfers are rejected by appraisal archivist eaa6097
    • Email notification text to explain next steps to user f48edb7
    • Django Cron Lock to prevent multiple instances of cron jobs 78218d4
    • Code Climate test coverage #324

    Fixes

    • Save accession after delivering it 45a4469
    • Shorten password reset timeout period 0e00587
    • Update dependencies
    • Cleanup code (remove extraneous print statements, refactor)
    • Increase integer size for extent number to prevent accession size limit 4f36567

    UI fixes

    • Improve password reset email template fcbaf8f
    • Move manifest section to the bottom in Transfer Detail page 327a06a
    • Improve note button text and styling in Appraisal Queue table
    • Improve responsiveness 596d740
    • Improve consistency of transfer tracking information b0b3732
    • Update data in dashboard when a bag is deleted (migration update) d058618
    Source code(tar.gz)
    Source code(zip)
  • v1.4(Jun 24, 2019)

    Adds:

    • Unit test for schema endpoint 8402aa3
    • Google analytics c52ded3
    • Code Climate coverage d2646c5
    • Issue Templats

    Fixes:

    • Chain user passwords and add sudo to commands inside RAC_CMD. Refactor if statement in User model. Import and implement new RAC_CMD function in views. #300
    • Update test suite 0a094f9
    • Dependency updates

    UI fixes:

    • Allow managing archivists to manage rights and profiles 186fe5c
    • Add edit button to rights statement pages 534708d
    • Make appraisal table responsive 186fe5c
    • Improve keyboard focus in modals 76257f3
    • Order BagIt Profile values alphabetically b6a2276

    Bag validation

    • Graceful failures for bag delivery 4945906
    • Validates languages according to ISO 639-2 (not ISO 639-3) #319
    Source code(tar.gz)
    Source code(zip)
  • v1.3.1(Apr 4, 2019)

  • v1.3(Feb 6, 2019)

    Adds

    • Allow users to reset their passwords via a link on the login page (#22)
    • Allow authorized users to create user accounts via the UI, including specifying a username (#207)
    • Adds external volume so users running Docker container can easily add their own bags (#290 and #246)
    • Adds API key to microservice POST requests (#288)

    Fixes

    • Better handling of files which fail before bag validation (#286)
    • Improves dashboard performance (#287)
    • Provides read-only access to the Accessioning queue for non-accessioners (#295)
    • Hides action buttons in Appraisal queue for non-appraisers (#296)
    • Improves ClamAV implementation by running freshclam on start (#289)
    • Removes user documentation from README and updates existing technical information (#291)
    • Aligns data downloaded in CSV files with table display (#292)
    • Reduces complexity by removing LDAP and reliance on standalone scripts.
    • Constructs organization directories and system groups from organization name rather than incrementing existing directories.
    • Improve code quality throughout the application by making views and templates DRYer, removing unnecessary print statements, and formatting for PEP8 compliance.
    Source code(tar.gz)
    Source code(zip)
  • v1.2(Dec 21, 2018)

    Adds

    Delivers accession data to configured URL, and allows users to query ArchiveSpace for a resource record and associate it with an accession Allows users to retry delivery of failed accessions

    Improves

    Adds more accessiblity improvements Improves OpenAPI schema so it can be used for validation in microservices Uses constants for process_status Keeps error messages visible for better debugging

    Fixes

    Makes DELIVERY_URL an optional config value. Get correct local time in datatables

    Source code(tar.gz)
    Source code(zip)
  • v1.1.3(Nov 29, 2018)

  • v1.1.2(Nov 29, 2018)

  • v1.1.1(Nov 29, 2018)

  • v1.1.0(Nov 29, 2018)

    New Functionality

    When an accession is created, Aurora now delivers a POST request to a configured URL along with a payload containing JSON data about that accession.

    Aurora now allows updated transfer data to be delivered as a JSON payload via an HTTP PUT request. The application will update its transfer data and will also remove the transfer files from the delivery directory.

    Improvements

    Properly serializes rights statements in the OpenAPI schema provided so external applications can use it to validate accession data. This functionality is used in Ursa Major.

    Improves the application's accessibility: keyboard-only navigation is better-supported, color contrast is increased overall, and status badges are now progress bars.

    Config file changes

    In order for Aurora to deliver transfers to a microservice environment, this update requires the addition of a DELIVERY_URL configuration key in config.py, set to the endpoint to which accession data should be posted.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Nov 5, 2018)

  • v1.0(Nov 1, 2018)

  • v1.0-beta(Aug 10, 2018)

    Beta release which incorporates fixes for usability issues identified in testing, as well as some minor bugfixes and other improvements.

    • Adds success and error messages across the application
    • Adds file manifest to transfer detail pages
    • Adds detail modal to appraisal page and ability to delete appraisal note
    • Refactors rights statement creation/edit into single page
    • Improves show/hide of add and delete buttons for rights statements and BagIt Profiles formsets
    • Improves help text on forms
    • removes unnecessary templates
    • Adds URL namespacing
    • resolves use of auto_now and auto_now_add in model fields
    Source code(tar.gz)
    Source code(zip)
  • v1.0-alpha2(Jun 27, 2018)

  • v1.0-alpha(May 7, 2018)

Owner
Rockefeller Archive Center
A repository and research center for the study of philanthropy and its impact throughout the world.
Rockefeller Archive Center
Simple yet powerful and really extendable application for managing a blog within your Django Web site.

Django Blog Zinnia Simple yet powerful and really extendable application for managing a blog within your Django Web site. Zinnia has been made for pub

Julien Fache 2.1k Dec 24, 2022
PWA is a simple Django app to develope and deploy a Progressive Web Application.

PWA PWA is a simple Django app to develope and deploy a Progressive Web Application. Detailed documentation is in the "docs" directory. Quick start Ad

Nima 6 Dec 9, 2022
This is a simple Todo web application built Django (back-end) and React JS (front-end)

Django REST Todo app This is a simple Todo web application built with Django (back-end) and React JS (front-end). The project enables you to systemati

Maxim Mukhin 5 May 6, 2022
A Django web application that allows you to be in the loop about everything happening in your neighborhood.

A Django web application that allows you to be in the loop about everything happening in your neighborhood. From contact information of different handyman to meeting announcements or even alerts.

Kennedy Ngugi Mwaura 3 Dec 11, 2022
This is a repository for a web application developed with Django, built with Crowdbotics

assignment_32558 This is a repository for a web application developed with Django, built with Crowdbotics Table of Contents Project Structure Features

Crowdbotics 1 Dec 29, 2021
A Django web application that shortens long URLs. This is a demo project to show off my tech abilities.

Django URL Shortener This project is just a complete and production-ready URL shortener web application to show off my tech and coding abilities. Impo

Seyyed Ali Ayati 5 Jan 26, 2022
Django-Audiofield is a simple app that allows Audio files upload, management and conversion to different audio format (mp3, wav & ogg), which also makes it easy to play audio files into your Django application.

Django-Audiofield Description: Django Audio Management Tools Maintainer: Areski Contributors: list of contributors Django-Audiofield is a simple app t

Areski Belaid 167 Nov 10, 2022
django Filer is a file management application for django that makes handling of files and images a breeze.

django Filer is a file management application for django that makes handling of files and images a breeze.

django CMS Association 1.6k Jan 6, 2023
Django-environ allows you to utilize 12factor inspired environment variables to configure your Django application.

Django-environ django-environ allows you to use Twelve-factor methodology to configure your Django application with environment variables. import envi

Daniele Faraglia 2.7k Jan 7, 2023
Rosetta is a Django application that eases the translation process of your Django projects

Rosetta Rosetta is a Django application that facilitates the translation process of your Django projects. Because it doesn't export any models, Rosett

Marco Bonetti 909 Dec 26, 2022
django-dashing is a customisable, modular dashboard application framework for Django to visualize interesting data about your project. Inspired in the dashboard framework Dashing

django-dashing django-dashing is a customisable, modular dashboard application framework for Django to visualize interesting data about your project.

talPor Solutions 703 Dec 22, 2022
django-reversion is an extension to the Django web framework that provides version control for model instances.

django-reversion django-reversion is an extension to the Django web framework that provides version control for model instances. Requirements Python 3

Dave Hall 2.8k Jan 2, 2023
Django URL Shortener is a Django app to to include URL Shortening feature in your Django Project

Django URL Shortener Django URL Shortener is a Django app to to include URL Shortening feature in your Django Project Install this package to your Dja

Rishav Sinha 4 Nov 18, 2021
Django application and library for importing and exporting data with admin integration.

django-import-export django-import-export is a Django application and library for importing and exporting data with included admin integration. Featur

null 2.6k Dec 26, 2022
A Django application that provides country choices for use with forms, flag icons static files, and a country field for models.

Django Countries A Django application that provides country choices for use with forms, flag icons static files, and a country field for models. Insta

Chris Beaven 1.2k Jan 7, 2023
Full-text multi-table search application for Django. Easy to install and use, with good performance.

django-watson django-watson is a fast multi-model full-text search plugin for Django. It is easy to install and use, and provides high quality search

Dave Hall 1.1k Dec 22, 2022
Quick example of a todo list application using Django and HTMX

django-htmx-todo-list Quick example of a todo list application using Django and HTMX Background Modified & expanded from https://github.com/jaredlockh

Jack Linke 54 Dec 10, 2022
A Django application that provides country choices for use with forms, flag icons static files, and a country field for models.

Django Countries A Django application that provides country choices for use with forms, flag icons static files, and a country field for models. Insta

Chris Beaven 1.2k Dec 31, 2022
File and Image Management Application for django

Django Filer django Filer is a file management application for django that makes handling of files and images a breeze. Contributing This is a an open

django CMS Association 1.6k Dec 28, 2022