Skip to content

Decision: Repository admin tool

Britta edited this page Aug 30, 2023 · 7 revisions
Thing Info
Relevant features Policy repository, content authoring
Date started 2023-08-03
Date finished 2023-08-26
Decision status Done
Summary of outcome Sticking with Django Admin

Background/context

We need to enable team members and staff to upload and manage internal files, with metadata, that show up on eRegs for authenticated users. We wanted to figure out the best, shortest path to getting something up and running.

To support this decision, we made a lot of notes on scratch paper here. We reviewed most of the options on this Django Packages File Managers list and investigated the two most promising options.

Core questions

Are there any existing services, plugins, or components – compatible with Django – that we could run on AWS to provide an in-house file management system for our users?

If there is no option to integrate with anything other than AWS, what’s our best path to production?

What we know

Needs

  • You need to be authenticated to use this tool. Everyone with authentication will have access to all internal documents.
  • Most files are between 1-10 MB. We could set a max of 100 MB.
  • Our scope is likely between 1000 and 10,000 files.
  • All documents are the same level of sensitivity – non-public but not PII or PHI.
  • People need a way to upload files and write metadata for those files.
  • There is minimal support for finding files in this editor interface. People will do research – they will find files – using the eRegs frontend website.
  • Items may have a description, internal notes, date, subjects, regulation locations, document type, and eventually statute locations.

Box

We were told this project can't use Box for file storage or content management. Otherwise we would want to use the Box API to fetch document information and display it on authenticated eRegs pages, because Box is already ATOed and available to all staff.

Pros:

  • Good documentation, active open source community
  • Looks nice
  • Uses Django’s templating language and contains all of the same features and functionality, while also adding a few templatetags of its own

Cons:

  • Editing interface is not flexible or customizable enough for our specific needs
  • Big, resource-intensive, hard to deploy on a Lambda

Pros:

  • Good documentation, actively maintained
  • Sounded like it had some helpful features

Cons:

  • We don't want a folder structure for these files
  • Too clunky, not very usable

None of the above

Pros:

  • Our Django admin interface is already pretty robust for editing public documents.
  • We can re-use our existing skills and code. We know how to build new features in this interface.
  • We can incrementally deliver improvements, since we're building on something that's already in production.
  • We can customize to our hearts' content.

Cons:

  • No shortcuts. Just gotta build it.

What we don't know

How to support a nice multi-file upload experience?

Things we need to decide

We need to focus our efforts. What should we use?

Decision

We decided on "none of the above" - to build on our existing Django Admin panel without adding pre-made plugins. We did our best to avoid reinventing the wheel - to save time and resources - but it turns out we have a pretty good set of custom wheels already. We can add another one reasonably efficiently.

Consequences

We learned a lot about our file management needs in the process of doing this research.

Overview

Data

Features

Decisions

User research

Usability studies

Design

Development

Clone this wiki locally