Getting Started

Hello! Welcome to Werehouse :3

Prior to building Werehouse, I was using a Telegram channel to archive artwork that I wanted to be able to find again later. While this worked, I didn’t like that it was so hard to find things again, and that it was dependent on Telegram continuing to provide infinite free storage. This is the solution that I’ve built: an easily self-hostable web app that archives artwork, supports tagging, and can even share entries from your archive!

How to Archive

Werehouse supports archiving two different ways:

  1. Automatically, through the queue; or
  2. Manually, by uploading an image.

The queue can archive videos found on sites like Twitter or Bluesky, but manual archiving cannot. For more information about how each of these work—and why manual archiving is limited that way (sorry)—see How It Works: Queue.

What’s In Your Archive

Each entry in your archive is a single media file, with some metadata attached:

There are also three other important kinds of information attached to records in your archive, and they deserve their own sections.

Artists

Today’s fragmented social media landscape more-or-less requires artists to post in many places. In order to make sure artwork is saved in your archive with proper attribution, Werehouse has an extensive artist management system that helps you keep track of all of an artist’s accounts across various websites, and automatically add their name to anything you save from any of their accounts. Werehouse tries its best to automate this, but there’s only so much it can do without human judgment involved.

To link an artist with an entry in your archive, just type in their name! Up-to-date browsers will autocomplete based on all of the artists you already have in your archive. Once you’ve saved your changes to the record, you can click the artist’s name to add profile URLs (if you know any).

Sometimes, you’ll need to go through the list of artists in your archive and merge together entries for artists that are actually the same artist. The artist list has a Merge button for exactly this purpose! Right now, there’s no way to search or re-order the list, but you can rename one of the entries if it isn’t on the same page. I’m working on a feature that automatically finds artists with similar usernames and suggests them to you for merging, but it isn’t ready yet.

Tags

Tags serve two purposes in Werehouse: helping you find things later, and feeding into the sharing system so that you can @-mention folks in a group chat when you share to it.

Adding tags to something is a lot of work, so whenever you archive from a source that already includes tags (such as FurAffinity or e621.net), Werehouse will also import those tags and add them to a list you can access from the Edit menu of a record. When you select tags from that list and save the record, Werehouse will ask you which of your tags should be applied for each of the incoming tags you selected, and then make a Tag Rule that automatically applies those tags for you in the future! (Now that I have built up a library of 500-odd tag rules, I only have to do real tagging work for things that I archive from social media sites that don’t support tagging. It’s so much nicer!)

When you share using a share option with a ping list, Werehouse will automatically @-mention people who you’ve configured as interested in the tags on that record. For more details about how to set that up, check out the help article on how sharing works.

Sources

Werehouse keeps track of all the sources it knows about for any particular record. It includes these when sharing, but also uses them to help you check for duplicates in your archive.

Sharing

When you want to share something from your archive, check out the options for sharing!

Learning More

I’m still working on writing documentation, but I do have a bunch of it already! The full list is in the Help section, but a good reference is the vocabulary page—I try to use words consistently throughout the interface, and this is a guide to what I meant by each of them.

And of course, if you have more questions that aren’t answered in the documentation (or if the documentation is unclear/insufficent), open an issue on GitHub or message me about it! I’m quite happy to help :3

Thank you for reading!

- s0ph0s