Content database for Minetest mods, games, and more
Go to file
rubenwardy aeca6cbbdb QueryBuilder: Update noindex 2024-06-11 21:45:17 +01:00
.github Add liberapay to FUNDING.yml 2024-05-24 16:31:25 +01:00
app QueryBuilder: Update noindex 2024-06-11 21:45:17 +01:00
docs Update docs: uploads owner and deleting datbases 2023-12-15 16:08:12 +00:00
migrations Add language to reviews 2024-06-08 11:12:42 +01:00
translations Translated using Weblate (Russian) 2024-06-09 16:24:24 +02:00
utils Add gettext context to tags and warnings, update translations 2024-06-09 13:48:00 +01:00
.dockerignore Delete inactive user accounts after 12 hours 2021-11-24 17:58:03 +00:00
.gitignore Enable translation support 2022-01-07 19:42:52 +00:00
Dockerfile Pin Python to 3.10.11 2023-09-02 21:33:16 +01:00
LICENSE.md Update copyrights 2021-01-30 17:00:58 +00:00
README.md Update docs: uploads owner and deleting datbases 2023-12-15 16:08:12 +00:00
babel.cfg Update translations 2023-04-30 01:44:12 +01:00
config.example.cfg Use Sentry instead of emailing errors 2024-04-28 12:35:16 +01:00
docker-compose.yml Use latest version of Postgres 14 2024-05-16 16:56:07 +01:00
requirements.lock.txt Add user_agent is_bot tests 2024-05-24 16:24:38 +01:00
requirements.txt Update Flask dependencies 2024-05-24 16:24:38 +01:00

ContentDB

Build Status

A content database for Minetest mods, games, and more.
Developed by rubenwardy, license AGPLv3.0+.

See Getting Started for setting up a development/prodiction environment.

See Developer Intro for an overview of the code organisation.

Credits

  • app/public/static/placeholder.png: erlehmann, Warr1024. License: CC BY-SA 3.0

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

# Delete database
docker-compose down && sudo rm -rf data/db

VSCode: Setting up Linting

  • (optional) Install the Docker extension
  • Install the Python extension
    • Click no to installing pylint (we don't want it to be installed outside a virtual env)
  • Set up a virtual env
    • Replace psycopg2 with psycopg2_binary in requirements.txt (because postgresql won't be installed on the system)
    • python3 -m venv env
    • Click yes to prompt to select virtual env for workspace
    • Click yes to any prompts about installing pylint
    • source env/bin/activate
    • pip install -r requirements
    • pip install pylint (if a prompt didn't appear)
    • Undo changes to requirements.txt

VSCode: Material Icon Folder Designations

"material-icon-theme.folders.associations": {
	"packages": "",
	"tasks": "",
	"api": "",
	"meta": "",
	"blueprints": "routes",
	"scss": "sass",
	"flatpages": "markdown",
	"data": "temp",
	"migrations": "archive",
	"textures": "images",
	"sounds": "audio"
}

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