Self-hostable blog for developers built on Wagtail and Django, with webpack, Bootstrap, and CodeMirror.
blogbootstrapdjangodockerhandcodedpythonself-hostedwagtailwebpack
1# Django + Webpack Makefile
2
3
4.PHONY: run runserver webpack check clean push pull update
5.DEFAULT: run
6
7
8SERVER_URL = $(shell git config --get remote.server.url | cut -d ':' -f 1)
9PROJECT_NAME = $(shell basename $(PWD))
10
11
12run: check install
13 @echo "run ----------------------------------------------------------------"
14 ${MAKE} -j2 runserver webpack
15
16runserver:
17 uv run python manage.py runserver 0.0.0.0:8000
18
19webpack:
20 npx nodemon --watch webpack.config.js --exec \
21 'webpack --config webpack.config.js --mode development --watch --devtool source-map'
22
23
24check:
25 @echo "check --------------------------------------------------------------"
26 @if ! which uv > /dev/null; then\
27 echo "> uv not found in PATH, please install it: https://docs.astral.sh/uv/";\
28 exit 1;\
29 fi
30 @if ! which yarn > /dev/null; then\
31 echo "> yarn not found in PATH, please make sure it's installed along with node";\
32 exit 1;\
33 fi
34 @echo "> all checks passed"
35
36
37install: node_modules/touchfile .venv/touchfile db.sqlite3
38
39node_modules/touchfile: package.json
40 @echo "install node deps --------------------------------------------------"
41 yarn install
42 touch $@
43 @echo "> all node deps installed"
44
45.venv/touchfile: pyproject.toml
46 @echo "install python deps ------------------------------------------------"
47 uv sync
48 touch $@
49 @echo "> all python deps installed"
50
51db.sqlite3:
52 @echo "create database ----------------------------------------------------"
53 uv run python manage.py migrate
54 @echo "> database created"
55
56
57push:
58 @echo "push ---------------------------------------------------------------"
59 git remote | xargs -I R git push R master
60
61pull:
62 @echo "pull ---------------------------------------------------------------"
63 rsync -avz $(SERVER_URL):/srv/data/$(PROJECT_NAME)/db/db.sqlite3 db.sqlite3
64 rsync -avz $(SERVER_URL):/srv/data/$(PROJECT_NAME)/media/ media
65 @echo "> all files copied"
66
67
68update: install
69 @echo "update -------------------------------------------------------------"
70 uv lock --upgrade
71 yarn upgrade
72 @echo "> all deps updated"
73
74
75clean:
76 @echo "clean --------------------------------------------------------------"
77 rm -rf node_modules
78 rm -rf .venv
79 rm -rf db.sqlite3
80 rm -rf media
81 @echo "> all files removed"