No description
  • Kotlin 93.2%
  • Jinja 3.1%
  • TypeScript 1.8%
  • HTML 1%
  • PHP 0.6%
  • Other 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-06-28 20:14:22 -05:00
api-src Update the war files, I guess 2026-06-28 20:14:22 -05:00
app-src Update the war files, I guess 2026-06-28 20:14:22 -05:00
docs Add: Spring ACL stuff 2025-02-02 10:27:48 -06:00
front-end front-end-compose.yml for building backend wars in containers 2025-02-22 12:21:50 +02:00
media Update: removing another compose container + update apache conf 2023-01-28 17:22:39 -06:00
provisioning Add: member info schema + mock data 2026-06-28 19:44:26 -05:00
.env Merge branch 'IdentityManagement_Branch_2023-09-05' into Dev 2026-02-05 18:13:44 -06:00
.gitignore Add: mock users, impersonation, and external db config 2026-02-05 17:18:40 -06:00
docker-compose.yml Finishing version bumps 2026-06-27 17:15:25 -05:00
front-end-compose.yml Finishing version bumps 2026-06-27 17:15:25 -05:00
front-end-overrides.yml front-end-compose.yml for building backend wars in containers 2025-02-22 12:21:50 +02:00
LICENSE Initial commit 2022-08-15 21:50:13 -04:00
Readme.md Merge branch 'IdentityManagement_Branch_2023-09-05' into Dev 2026-02-05 18:13:44 -06:00
Vagrantfile Add: Ansible playbook for deploying to Tomcat + more 2022-09-22 17:21:49 -05:00

TOTH (working title)

TOTH (The Org Twelve Hundred) is a platform for building communities centered around multimedia creation and consumption.

Born from AnimeMusicVideos.org, known by members as "The Org", it provides a centralized hub for people to create, find, share, and discuss content that's tailored to your particular niche. From fan-made music videos (anime or otherwise), to Let's Plays, to TechTubers, and beyond, give your community a solid foundation to thrive.


How to set up your development environment

System Requirements

  • 4 GB of RAM
    • The Virtual Machines will use ~1.5 GB total, so having 4 GB helps make sure you can still use your computer for other things
  • 16 GB of disk space
  • A CPU that supports Virtualization
    • If you have something newer than an Intel Core i5-750 (from 2009), or newer than an AMD Phenom (from 2007) it almost certainly supports virtualization. If your computer has DDR3 or newer, you almost certainly have support for virtualization.

First, you'll need some basic tools

  1. Download and install Docker Desktop ( https://www.docker.com/products/docker-desktop/ )
  • Linux users can simply run plain 'ol Docker, but Docker Desktop is preferred so we avoid issues where contributors using MacOS or Windows can't run parts of the dev environment (i.e. it removes the temptation to solve issues by using modprobe)
  1. Download and install Git ( https://git-scm.com/downloads )
  2. Download and install an IDE like Visual Studio Code or IntelliJ IDEA Community Edition
  • You'll want to install the Kotlin extension by "fwcd" if you're working on the back-end and using VSCode. It provides some code completion and can add import statements for you with a few clicks
  1. For frontend development you need to install Deno

Pull the source, and watch it go

  1. Create a folder to hold the project files
  2. Open a terminal/command prompt in your new folder (right click -> open in terminal)
  3. Use Git to clone the repository (git clone https://github.com/dFritz-eecs/website-redesign.git)
  • If you're not keeping the git repository on the drive your OS is installed on (i.e. if it's on an external drive, or something like D:\ in Windows), then you'll need to go into Docker Desktop's Settings > Resources > File sharing and add the directory that you cloned the repository into. Otherwise, you'll get errors when you try to run the next step
  1. Run docker compose up -d
    • This uses the docker-compose.yml file to start the containers (web server, web app, api, etc...)
    • The -d flag tells docker to run in the background, so you can do other things with your terminal window
  2. Wait for Docker to download the container images and get things set up

Congratulations! You have a development environment

You can start editing files in app-src and/or api-src, and then see the effect of the changes you've made by going to localhost:8086 in your browser.

Other people have made changes, how do I get those so I can see the effect in my browser

You need to get the updates from the github repository.

  • In the project folder, run git pull1

That alone should be enough. If it's not, then just destroy and rebuild the docker containers by running:

  • docker compose down2
  • docker compose up -d

1: git pull is git fetch + git merge. If you're working on the same thing as someone else, you may run into merge conflicts. In that case, you'll probably need to git fetch instead.

2: Note that this will destroy any changes you've made to the containers (like adding a video entry). This resets you back to a "clean" state where you only have the basic test data that is provisioned by the project itself.

Details for the front-end team

front-end documentation at front-end/README.md

Details for the back-end team

Do note that since the language used in the back-end, Kotlin, is a compiled language, you'll need to run the build process to generate a new .war file for the server to run whenever you make a change.

Go into the app-src or api-src directories and run ./gradlew bootWar to have gradle build a new version of the .war file. The gradle build file also copies the resulting .war file into the appropriate directory for Tomcat to pick up and auto-deploy.

In other words, you don't need to restart the app or api containers when you make a new build. It'll just automatically get picked up.

No need to install gradle yourself, the repo comes with a "gradle wrapper" that'll handle that for you.

You will additionally need to install a Java Development Kit to be able to run gradle. This project targets Java 17, so you'll need to download and install the JDK from https://adoptium.net/temurin/releases/?version=17

How much does it cost to run a TOTH community?

This software is free to use, but software needs to run on something and that something is going to cost money.

If you're looking to run this in the cloud (using a service like Linode or DigitalOcean), then expect it to cost around $9 (USD) per month for the most basic configuration (3 VPS instances: one for the web server and app, one for the api, one for the database).

To be able to scale (to add things like additional api nodes), you'll want to have at least 5 VPS instances: web server, web app, api, database, and routing/load-balancing. At a minimum, that's ~$30/mo. You may be able to skimp a little bit on some of the functions, but you really don't want to go below 1 GB of ram and 1 vCPU is a constraint. $30/mo will get you enough power to serve 5-10 concurrent requests.

If you're looking to run this on-premise, then there's the initial cost of the server (off-lease servers on ebay are a good way to get started), as well as the cost of putting it in a datacenter. Perhaps around $500 for the server, and I wouldn't expect less than $400/mo to host it in a datacenter. You could skip the datacenter and run it out of your home, but you'd need to pay for electricity (between 2.8 kWH and 8.4 kWH per day. ~$28-$85 a month in Germany, ~$14-$43 a month in the US) and for a business-class plan from your ISP (most residential plans don't allow you to run a server) which seems to range from $50/mo to $160/mo.

If you need mass storage, then on-premise starts to become more appealing. 1TB of cloud object-storage is going to be >= $20/mo