aboutsummaryrefslogtreecommitdiffstats
path: root/www/expense-tracker
diff options
context:
space:
mode:
authorJan T <jan@jantuomi.fi>2026-07-23 19:24:22 +0300
committerJan Tuomi <jan@jantuomi.fi>2026-07-23 19:26:00 +0300
commitd57b5cd7830a5b4ed1437b1b648dca62a9b6eea3 (patch)
tree85c5e69424dd2fe4c07be9dbb1b4267ee1503c3d /www/expense-tracker
*/*: initial commit
Diffstat (limited to 'www/expense-tracker')
-rw-r--r--www/expense-tracker/Makefile36
-rw-r--r--www/expense-tracker/files/expense_tracker.in56
-rw-r--r--www/expense-tracker/pkg-descr2
3 files changed, 94 insertions, 0 deletions
diff --git a/www/expense-tracker/Makefile b/www/expense-tracker/Makefile
new file mode 100644
index 0000000..98532cd
--- /dev/null
+++ b/www/expense-tracker/Makefile
@@ -0,0 +1,36 @@
+PORTNAME= expense-tracker
+PORTVERSION= 1.0.1
+CATEGORIES= www
+
+MAINTAINER= jan@jantuomi.fi
+COMMENT= Minimal personal expense tracker
+
+LICENSE= AGPLv3
+
+USE_GITHUB= yes
+GH_ACCOUNT= jantuomi
+GH_PROJECT= expense-tracker
+GH_TAGNAME= main
+
+NO_CHECKSUM= yes
+NO_ARCH= yes
+NO_BUILD= yes
+
+USES= python:3.11+
+RUN_DEPENDS= ${PYTHON_CMD}:lang/python${PYTHON_SUFFIX}
+
+SUB_LIST= PYTHON_CMD=${PYTHON_CMD}
+
+USE_RC_SUBR= expense_tracker
+
+do-install:
+ ${MKDIR} ${STAGEDIR}${PREFIX}/expense-tracker
+ ${INSTALL_SCRIPT} ${WRKSRC}/app.py ${STAGEDIR}${PREFIX}/expense-tracker/
+ ${INSTALL_DATA} ${WRKSRC}/favicon.png ${STAGEDIR}${PREFIX}/expense-tracker/
+
+post-install:
+ @echo "expense-tracker/app.py" >> ${TMPPLIST}
+ @echo "expense-tracker/favicon.png" >> ${TMPPLIST}
+ @echo "@dir expense-tracker" >> ${TMPPLIST}
+
+.include <bsd.port.mk>
diff --git a/www/expense-tracker/files/expense_tracker.in b/www/expense-tracker/files/expense_tracker.in
new file mode 100644
index 0000000..b0ff573
--- /dev/null
+++ b/www/expense-tracker/files/expense_tracker.in
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+# PROVIDE: expense_tracker
+# REQUIRE: NETWORKING
+# KEYWORD: shutdown
+
+. /etc/rc.subr
+
+name="expense_tracker"
+rcvar="expense_tracker_enable"
+pidfile="/var/run/${name}.pid"
+
+load_rc_config "$name"
+
+: ${expense_tracker_enable:="NO"}
+: ${expense_tracker_host:="0.0.0.0"}
+: ${expense_tracker_port:="80"}
+: ${expense_tracker_base_url:="http://localhost"}
+: ${expense_tracker_db:="/var/db/expense-tracker/expenses.db"}
+
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+status_cmd="${name}_status"
+
+expense_tracker_start()
+{
+ echo "Starting ${name}..."
+ daemon -p "${pidfile}" -o /var/log/expense-tracker.log env \
+ PATH=%%PREFIX%%/bin:/usr/bin:/bin \
+ HOST="${expense_tracker_host}" \
+ PORT="${expense_tracker_port}" \
+ BASE_URL="${expense_tracker_base_url}" \
+ DB="${expense_tracker_db}" \
+ %%PYTHON_CMD%% %%PREFIX%%/expense-tracker/app.py
+}
+
+expense_tracker_stop()
+{
+ if [ -f "${pidfile}" ]; then
+ echo "Stopping ${name}..."
+ kill "$(cat "${pidfile}")" 2>/dev/null
+ rm -f "${pidfile}"
+ fi
+}
+
+expense_tracker_status()
+{
+ if [ -f "${pidfile}" ] && kill -0 "$(cat "${pidfile}")" 2>/dev/null; then
+ echo "${name} is running as pid $(cat "${pidfile}")"
+ else
+ echo "${name} is not running"
+ return 1
+ fi
+}
+
+run_rc_command "$1"
diff --git a/www/expense-tracker/pkg-descr b/www/expense-tracker/pkg-descr
new file mode 100644
index 0000000..f2acbe6
--- /dev/null
+++ b/www/expense-tracker/pkg-descr
@@ -0,0 +1,2 @@
+Minimal personal expense tracker with group support.
+Python stdlib only, no dependencies.