A reduced-bias way to create documentaries.
What is it
DocGen is a tool for documentary creators to present their interview clips and present them in a way that doesn't impress their bias on the audience. DocGen allows the administrator to upload and organize videos. Users then select topics that interest them. DocGen then randomly selects videos proportional to the users' interests and generates a documentary.
This project was funded by the University of Miami School of Communication. It is a collaboration between Kim Grinfeder and Mike Davis.
How to Install It
You'll need an Ubuntu-based server with PostgreSQL. The releases are designed
for Ubuntu 16.04 but other versions may work equally well. Go into the releases
tab of this repo on GitHub and download
doc_gen.tag.gz onto your server.
First, create the database under a name of your choice (you may do so using
createdb <database-name> on the command line). Then add these lines into
DOC_GEN_PORT- the port you wish to run on
DOC_GEN_HOST- the hostname of your server
DOC_GEN_SECRET_KEYBASE- a random secret string of (about 65) characters
- any sort of password manager should be able to generate a good random string for this
DOC_GEN_DB_DATABASE- the database you created for the application with
DOC_GEN_DB_USERNAME- the username of the PostgreSQL user who owns that database
DOC_GEN_DB_PASSWORD- the password of the user who owns that database
DOC_GEN_PORT=4000 DOC_GEN_HOST=example.org DOC_GEN_SECRET_KEYBASE=SKtholekarcoekhoe DOC_GEN_DB_DATABASE=doc_gen_prod DOC_GEN_DB_USERNAME=postgres DOC_GEN_DB_PASSWORD=postgres
But replace these values as described above.
Now extract the application. Use
tar xzf doc_gen.tar.gz to extract it. You can
now run the app with
bin/doc_gen start (use
bin/doc_gen stop to stop it).
If you have your environment sourced, you should first run
bin/mole seed to
setup the database. (Running it twice won't do anything bad.)
Once you have these in your
/etc/environment, you can set up a service to run
the application. If your server's power goes out, you won't have to start up
the app manually. (If you don't want to do this, simply
bin/doc_gen seed, and
bin/doc_gen start.) Here's a
service definition. Write this as
you'll be able to run
service doc_gen start and never worry about it again.
[Unit] Description=doc_gen service [Service] WorkingDirectory=/root/bin/ ExecStart=/root/bin/doc_gen start ExecStop=/root/bin/doc_gen stop Restart=always StandardOutput=syslog StandardError=syslog SyslogIdentifier=doc_gen User=root RemainAfterExit=yes EnvironmentFile=/etc/environment [Install] WantedBy=multi-user.target
This project uses some cool new tech:
- Elixir: a dynamically typed functional language with great concurrency support and low latency. I use Elixir for all back-end logic.
- Phoenix Framework: Rails is to Ruby as Phoenix is to Elixir. Phoenix makes it easy to write a web-app backend in Elixir.
- PostgreSQL: An open-source and easy to use database. Postgres manages all long-term state like information on videos and accounts.
- Slime: Slim HTML with support for templating in Elixir. All pages are rendered using compiled Slime.
- Sass (indented style): a suped-up CSS with minimal syntax. Sass handles all stylization.
- Webpack: A build tool for front-end assets. Webpack automatically organizes and transpiles all front-end assets.
- Tailwind: A css framework for quickly building common interfaces. Tailwind allows me to very quickly construct an easy to use UI without the hassel of writing all the css myself.
Design, production, and ideation by Kim Grinfeder. Implementation by Mike Davis.