| Version: | 2.15.0 |
|---|---|
| Source: | https://github.com/modelbrouwers/modelbrouwers |
| Keywords: | scale modeling, phpBB3, forum, albums, community |
Modelbrouwers.nl is a scale modeling community. The website hosts a phpBB3 board, albums software and a webshop.
This repository contains the majority of software powering the modelbrouwers.nl domain.
The main parts are the phpBB3 board and various apps built in Django, such as:
- album software, tightly integrated in the phpBB3 board
- Kit database with reviews
- Member projects portfolio
- phpBB3 administration through the Django admin.
There are three major parts involved in the modelbrouwers.nl website, each backed by their own containers and/or databases and interacting with each other.
See docker-compose.yml to see how the services interact.
phpBB3 is an open-source forum built in PHP, and our choice or even origin story
for the community. See the Dockerfile-forum for more details.
The Django project implements the user accounts, album software and any extra additions that are not available in phpBB3. Generally we avoid extensions to phpBB3 due to the increase in maintenance and challenges in quality control.
The idea is rather to implement the necessary functionality in the Django backend, expose it through the API and consume it with (modern) Javascript in the phpBB3 pages.
The backend build is specified in Dockerfile.
The webshop is (for now) based on OpenCart. Modelbrouwers.nl does use some closed source
extensions which live in a private repository. This is orchestrated via the
opencart-extensions git submodule.
You need access to this repository to be able to build the Dockerfile-shop image,
which is only given to trusted people directly involved with the project.
Ensure you have the prerequisites installed on your system:
- PostgreSQL database server (django project)
- MySQL/MariaDB database server (phpBB3 and django project)
- Python 3.12
- NodeJS 20+/npm 8+
It is recommended to use a virtualenv.
Advanced users may also find inspiration in the Github CI configuration in
.github/workflows/ci.yml.
Install the backend dependencies using pip:
pip install -r requirements/dev.txtFrontend dependencies:
npm installConfiguration is mostly done through environment variables, which you can specify
in a .env file in the root of the project/repository.
For all available settings, check src/brouwers/conf/base.py and look for the
config function calls.
Run:
src/manage.py migrateYou should also create a superuser for local development:
src/manage.py createsuperuserFrontend
You can either build the frontend once:
npm run buildor have the dev server watch for file changes and rebuild the frontend on every change:
npm startBackend
Django comes with a development server included.
Start it by invoking:
src/manage.py runserverPoint your browser to http://127.0.0.1:8000. You should see a homepage.
For the frontend tooling, you can invoke npm start which will watch for file changes
and compile the bundles.
We're currently on the 3.0.x branch. The 3.1.x versions have major backwards incompatible changes that our code needs adoption for.
The easiest way is probably to run this through the docker setup:
docker-compose up phpbbRun all tests by executing:
src/manage.py test srcThe entire stack can be run with docker compose, recommended for local development of the Javascript/CSS bundles that are used outside of Django.
docker-compose -f docker-compose.yml -f docker-compose.dev.yml upThis setup uses your locally installed node_modules and has the Django dev server
handle static files/assets, while reloading Python code when it changes.
Point your browser at http://localhost/phpBB3/ to view the forum, for example.