Self-hostable website analytics on Django: a straightforward collector API, dashboards, a world map, and PDF reports.
analyticsdjangodockerhandcodedpythonself-hostedsqliteviteweb-analytics
1# Django + Vite Makefile
2# v. 2022.07.13
3
4
5.PHONY: run runserver vite clean push pull update
6.DEFAULT: run
7
8
9SERVER_URL = $(shell git config --get remote.server.url | sed 's|ssh://||' | cut -d ':' -f 1 | cut -d '/' -f 1)
10PROJECT_NAME = $(shell basename $(PWD))
11
12
13run: install
14 @echo "run ----------------------------------------------------------------"
15 ${MAKE} -j2 runserver vite
16
17runserver:
18 uv run python manage.py runserver 0.0.0.0:8000
19
20vite:
21 bun run dev
22
23
24install: node_modules/touchfile .venv/touchfile db.sqlite3
25
26node_modules/touchfile: package.json
27 @echo "install node deps --------------------------------------------------"
28 bun install
29 touch $@
30 @echo "> all node deps installed"
31
32.venv/touchfile: pyproject.toml
33 @echo "install python deps ------------------------------------------------"
34 uv sync
35 touch $@
36 @echo "> all python deps installed"
37
38db.sqlite3:
39 @echo "create database ----------------------------------------------------"
40 uv run python manage.py migrate
41 @echo "> database created"
42
43
44push:
45 @echo "push ---------------------------------------------------------------"
46 git remote | xargs -I R git push R master
47
48pull:
49 @echo "pull ---------------------------------------------------------------"
50 rsync -avz $(SERVER_URL):/srv/data/$(PROJECT_NAME)/db/db.sqlite3 db.sqlite3
51 rsync -avz $(SERVER_URL):/srv/data/$(PROJECT_NAME)/db.mmdb db.mmdb
52 rsync -avz $(SERVER_URL):/srv/data/$(PROJECT_NAME)/media/ media
53 @echo "> all files copied"
54
55
56update: install
57 @echo "update -------------------------------------------------------------"
58 uv lock --upgrade
59 bun update --latest
60 @echo "> all deps updated"
61
62
63clean:
64 @echo "clean --------------------------------------------------------------"
65 rm -rf node_modules
66 rm -rf .venv
67 rm -rf db.sqlite3
68 rm -rf db.mmdb
69 rm -rf media
70 @echo "> all files removed"