I'd like to request feedback and guidance from the members on my plan for a family document archive website that I'm currently planning.

I'm currently working up requirements and a high-level design for a family archive website as a central repository for historical photographs and correspondence, such as a complete set of family World War II correspondence. (Over one thousand letters.) I intend to use Drupal 8.

Initially, the site will be a static repository for several thousand scanned images of family photographs and historical correspondence, all presented as .jpeg images. Subsequently, the site may add family members as authenticated users who may add historical photographic and correspondence content. Most content will be viewable by website visitors as anonymous users.

While storing individual photographs appears straight-forward, correspondence always consists of two or more images that must be presented as a set. Example: a postcard has two sides - two images.

The functional and high-level design requirements are:

  1. Serve cataloged photographs and correspondence (in .jpeg image format) as "catalog entries."
  2. Provide an historical description of each catalog entry.
  3. Support multiple images as one catalog entry. Example: one historical letter may contain multiple pages and one envelope, all of which will be separate .jpeg files, but in toto the images comprise the complete letter, so the images in toto (e.g., 5 images) comprise the catalog entry.
  4. Each image may be downloaded.
  5. Each image within a catalog entry may be "tagged" using taxonomy for stand-alone image searches based on taxonomy. Example: search for mother's maiden name or "London, England."
  6. If technically feasible, store the cataloged .jpeg images within Amazon S3 and access and serve them by "reference;" else use the Drupal CMS public file location.
  7. Electronic storage of images should replicate a physical filing scheme, such as a directory structure based on year/type of entry. For example: "/1941/correspondence/" and "/1941/photos/" (This allows for a storage structure that is independent of Drupal logic.)
  8. Catalog entries are physically stored within the filing system by selecting/stipulating "file under" values. (Such as file under calendar year correspondence: "1941/correspondence".)
  9. Authenticated users restricted to family members.

Presently, I am thinking the best way to organize this is to create a "Catalog Entry" content type consisting of:

  1. Title
  2. [Historical] Description
  3. Source statement ( A formatted text field to contain a statement about the source of the historical item. Example: "Personal correspondence of Mrs. Jane Smith.")
  4. The catalog entry defines the component images as fields, and keeps track of that set of images associated with each field.
  5. One required image field containing the first .jpeg image (either a document image or photograph).
  6. An associated "tag" field for the required image field.
  7. Nine additional optional image fields each containing any additional .jpeg images that constitute the archived document. (Such as the additional pages of a letter.)
  8. Nine associated "tag" fields.
  9. One field to contain taxonomy "tag" values to associate with the catalog entry. (Probably one field with one or more taxonomy tags.)
  10. One or more fields to select the directory/subdirectory to store the images. For example, "correspondence for year 1941" should be stored in the correspondence subdirectory under the 1941 directory, within the storage archive.

Before I dig into a very big hole, I'd like to hear the members' thoughts on the above approach and design, and perhaps receive guidance on an appropriate way to proceed, or any examples of where this has been implemented before now.

Any feedback is appreciated.

- Harry

Comments

VM’s picture

are you coding these features or hoping they are already available for contrib?

Some of the features are in core but others such as using multiple field entries to determine file uploads are likely to require custom code.

GiorgosK’s picture

I think its totally doable with just drupal 8 core modules enabled
I would start with doing a fast demo/setup/install of what you propose and see if you are satisfied with the result
don't think of design just the site structure and user's workflow
if you get stuck somewhere post a support question with as much detail as possible

------
GiorgosK
Web Development

Harry Hobbes’s picture

VM,

As a novice, my first priority is to learn to use Drupal 8 core with minimal contributed modules. As I build skills with core and contributed modules, I expect to get into customization of code as a subsequent learning objective. (I should advise that I've been taking Chris Shattuck's courses on BuildAModule.com, first working through the basics.)

Essentially, this is my strategy. This means that in light of your advice, I will probably assume a phased approach whereby I implement that which is within core and contributed modules, and forego the advanced functionality until I feel comfortable writing the appropriate code (perhaps toward the end of the year).

This means that first I'll probably implement a basic catalog entry content type and manually record the required image attributes (e.g., filing location, etc.) within the content type (perhaps as a text field) so that those attributes are recorded with each image and may be used with later automation in code. (I am of the opinion that if I record the required attributes with each image, at some point I can automate further, if needed.)

Please advise if you think this is an appropriate way to proceed.

GiorgosK,

Thank you.

I have started my prototype website on localhost (using XAMPP) wherein I'm experimenting with the content type and the image files. I've replicated my shared hosting environment on my localhost XAMPP platform (on Windows 10), so that I have both development and production environments. As I finalize my approach with the content type, I'll begin to input the data and build the content database in the development environment. My general procedure is to first make all changes in the development environment, to include input of all data, and then to migrate the changes to the production environment via SQL import and Drupal files upload. This approach ensures that the two Drupal implementations remain in sync.

Please advise if you consider this an effect approach.

Additionally…

The strategic purpose of this effort is to pass the family's historical documents to succeeding generations; documents that currently exist in one or more shoeboxes, which are difficult to share.

This means that the lion's share of work in this effort is scanning, labeling, and storing each image artifact into electronic format in preparation of inputting each into the Drupal website (as content entries). I am taking the time and effort to uniquely label each image with a descriptive name. (E.g., "1941-07-16_Postcard_Mrs-Jane-Doe_Front.jpg" and "1941-07-16_Postcard_Mrs-Jane-Doe_Back.jpg") I expect the entire process of scanning, labeling, and inputting will require the remainder of the year to complete. (Or perhaps longer.)

So I can afford to take some time now to explore how to accomplish this project in Drupal - the technical design - while I'm simultaneously scanning the image artifacts into electronic files.

Also, it seems to me that the critical success factor in this entire effort will be to create an effective catalog of the images; a catalog that can survive or exist irrespective of the website platform. (E.g., Drupal.) I expect that initially the catalog will exist as a "view" within the Drupal website (that itself may be dumped to a file).

Any further comments are welcome.

- Harry

GiorgosK’s picture

@Harry while the copy of the dev to live MySQL procedure might work OK I would suggest to explore the Configuration Manager (core module) and maybe the contrib https://www.drupal.org/project/config_update

Configuration manager will let you export the whole configuration of you site in a single file and then import it on another site ... I have not really used yet but its one of the major advancements brought forth by drupal 8 you should a least try it. No content can migrated this way though ... only configuration.

Create as you said your demo site with your proposed content type and taxonomy with a few DEMO content items to test if your setup giving you what you wished and adjust accordingly. Feel free to post specific questions here after searching drupal.org or http://drupal.stackexchange.com/ for similar questions / asnwers.

------
GiorgosK
Web Development

Harry Hobbes’s picture

Thank you GiorgosK.

I'm implementing your suggestion and currently reviewing my promotion and update workflows in the context of the Configuration Manager with the Config_Update module. I've also adopted your suggested method of setting up a demo site to develop the content type experiment with it.

As this unfolds, I'll post additional questions in the Post Installation forum.

Thank you again...

- Harry

GiorgosK’s picture

@Harry you are welcome,
post any time you want ...
Note that config_update is not needed for configuration manager to work ...
config_update just gives extra reporting on what is imported

------
GiorgosK
Web Development