This repository stores code for the public website presenting the community project Voices of Wynn – a mod for Minecraft that allows all players listen to NPC dialogue on the MMORPG server Wynncraft instead of reading it.
To run the website locally you need to make sure you have your Docker engine with docker-compose running. An easy way of doing this is downloading Rancher Desktop and simply running the application. Once you have that simply run:
docker-compose -f docker-compose.dev.yml upto force it to build the web container you can add the --build flag:
docker-compose -f docker-compose.dev.yml up --buildafter having run it once you do not need to include the --build in future startups which will make starting it faster
this will create all the containers (databases and everything) for you.
Once the containers are running, you can access the following services:
-
Website: http://localhost:8000 or http://127.0.0.1:8000
The main Voices of Wynn website will be available here. -
phpMyAdmin: http://localhost:8080
Use this interface to manage and inspect the MySQL database. -
API Documentation (Swagger UI): http://localhost:8090
Explore and test the API endpoints using Swagger UI.
If you have some weird issues or want to reset everything do the command:
docker system prune -a --volumesafter which you will have to run the docker-compose command again with --build.
We use liquibase as a database schema change management tool. It allows you to manage and track database schema changes in a version-controlled manner, making it easier to deploy and maintain database changes across different environments.
To change anything about the database structure you need to create a new changeset and add it at the bottom of the changelog found in the liquibase directory. The changset name should get a title such as:
-- changeset <name>:<yourChangesetNum> so if your name is kmaxi and this is the first change YOU are making it should look like this:
-- changeset kmaxi:1.
For more information on how to use Liquibase, refer to the official documentation.
The application supports two storage backends for dynamic files (recordings, avatars, etc.):
Files are stored in the ./dynamic/ directory on the server filesystem.
Configuration:
STORAGE_TYPE=localThis is the recommended option for local development.
Files are stored in Azure Blob Storage, which is recommended for production deployments.
Setup Instructions:
- Create an Azure Storage Account at https://portal.azure.com
- Create a container named "vow" with "Blob" public access level
- Get your connection string from: Storage Account > Access Keys > Connection String
- In your
.envfile, set:STORAGE_TYPE=azure AZURE_STORAGE_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net
- Comment out the
dynamic_datavolume mount indocker-compose.yml - Restart containers:
docker-compose -f docker-compose.dev.yml restart web
Note: For local development, use STORAGE_TYPE=local. For production, use STORAGE_TYPE=azure.
🔲 Index page with basic information about the project
🔲 Downloads page with clear download links
🔲 Contributors page with list of all contributors and detailed information about their contributions
🔲 Recordings page with all recordings
🔲 Upvote/downvote system for all recordings
🔲 Login system for all contributors, allowing them to change their displayed profile picture, name and other information
🔳 Suggest other features in Issues