Content database for Minetest mods, games, and more
Go to file
2020-09-01 14:57:03 +01:00
.github Add issue templates 2019-11-12 22:49:47 +00:00
app Fix screenshot form not validating length 2020-08-19 13:06:21 +01:00
migrations Fix migration error when migrating from scratch 2020-09-01 14:57:03 +01:00
utils Replace "Content DB" with "ContentDB" 2020-07-12 16:34:25 +01:00
.dockerignore Add data* to docker ignore 2020-01-22 22:11:01 +00:00
.gitignore Add Gitlab CI support 2020-01-19 18:15:18 +00:00
.gitlab-ci.yml Add API tests 2020-01-19 19:09:04 +00:00
babel.cfg Add translation support 2019-07-29 21:44:39 +01:00
config.example.cfg Fix migration error when migrating from scratch 2020-09-01 14:57:03 +01:00
docker-compose.yml Add celery exporter 2020-04-24 00:49:40 +01:00
Dockerfile Add requirements lock file 2020-07-16 14:26:26 +01:00
LICENSE.txt Update README 2018-03-24 19:12:02 +00:00
README.md Fix migration error when migrating from scratch 2020-09-01 14:57:03 +01:00
requirements.lock.txt Add requirements lock file 2020-07-16 14:26:26 +01:00
requirements.txt Add requirements lock file 2020-07-16 14:26:26 +01:00

Content Database

Build status

Content database for Minetest mods, games, and more.
Developed by rubenwardy, license GPLv3.0+.

Getting started (debug/dev)

Docker is the recommended way to develop and deploy ContentDB.

  1. Install docker and docker-compose.

     sudo apt install docker-ce docker-compose
    
  2. Copy config.example.cfg to config.cfg.

  3. Fill out config.cfg

    1. Set SQLALCHEMY_DATABASE_URI = "postgres://contentdb:password@db:5432/contentdb"
    2. Optionally, set the MAIL settings.
  4. (Optional) Set up GitHub integration

    1. Make a Github OAuth Client at https://github.com/settings/developers:
    2. Homepage URL - http://localhost:5123/
    3. Authorization callback URL - http://localhost:5123/user/github/callback/
    4. Put client id and client secret in GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRET in config.cfg.
  5. Create config.env:

     POSTGRES_USER=contentdb
     POSTGRES_PASSWORD=password
     POSTGRES_DB=contentdb
     FLASK_DEBUG=1
    
  6. Start docker images:

     docker-compose up --build
    
  7. Setup database:

     ./utils/run_migrations.sh
    
  8. (Optional) create initial data

    1. ./utils/bash.sh
    2. Either python setup.py -o or python setup.py -t
      1. -o creates just the admin, and static data like tags, and licenses.
      2. -t will create test pacakges.
  9. View at http://localhost:5123. The admin username is rubenwardy and the password is tuckfrump.

In the future, starting CDB is as simple as:

docker-compose up --build

To hot/live update CDB whilst it is running, use:

./utils/reload.sh

This will only work with python code and templates, it won't update tasks or config.

How-tos

# Hot/live reload (only works with FLASK_DEBUG=1)
./utils/reload.sh

# Cold update a running version of CDB with minimal downtime (production)
./utils/update.sh

# Enter docker
./utils/bash.sh

# Run migrations
./utils/run_migrations.sh

# Create new migration
./utils/create_migration.sh

Database

classDiagram

User "1" --> "*" Package
User --> UserEmailVerification
User "1" --> "*" Notification
Package "1" --> "*" Release
Package "1" --> "*" Dependency
Package "1" --> "*" Tag
Package "1" --> "*" MetaPackage : provides
Release --> MinetestVersion
Package --> License
Dependency --> Package
Dependency --> MetaPackage
MetaPackage "1" --> "*" Package
Package "1" --> "*" Screenshot
Package "1" --> "*" Thread
Thread "1" --> "*" Reply
Thread "1" --> "*" User : watchers
User "1" --> "*" Thread
User "1" --> "*" Reply
User "1" --> "*" ForumTopic

User --> "0..1" EmailPreferences
User "1" --> "*" APIToken
APIToken --> Package