panso.se/README.md

95 lines
2.2 KiB
Markdown

# panso.se
Price tracker for Swedish stores
# panso
Get notified when a new drop is available on Twitch
## TL;DR (Arch Linux + PostgreSQL)
Install and initialize Postgres, then start the service:
```bash
sudo pacman -S postgresql
sudo -u postgres initdb -D /var/lib/postgres/data
sudo systemctl enable --now postgresql
```
Create a local role and database:
```bash
sudo -u postgres createuser -P panso
sudo -u postgres createdb -O panso panso
```
Point Django at the unix socket used by Arch (`/run/postgresql`):
```bash
POSTGRES_USER=panso
POSTGRES_PASSWORD=your_password
POSTGRES_DB=panso
POSTGRES_HOST=/run/postgresql
POSTGRES_PORT=5432
```
### Linux (Systemd)
```bash
sudo useradd --create-home --home-dir /home/panso --shell /bin/fish panso
sudo passwd panso
# sudo usermod -aG wheel panso
su - panso
git clone https://git.lovinator.space/TheLovinator/panso.se.git
cd panso
uv sync --no-dev
# Modify .env with the correct database credentials and other settings, then run migrations:
uv run python manage.py migrate
```
Install the systemd service from the repo:
```bash
sudo install -m 0644 tools/systemd/panso.socket /etc/systemd/system/panso.socket
sudo install -m 0644 tools/systemd/panso.service /etc/systemd/system/panso.service
```
Enable and start the service:
```bash
sudo systemctl daemon-reload
sudo systemctl enable --now panso.socket
sudo systemctl enable --now panso.service
curl --unix-socket /run/panso/panso.sock https://panso.se
```
Install and enable timers:
```bash
sudo install -m 0644 tools/systemd/panso-backup.{service,timer} /etc/systemd/system/
sudo install -m 0644 tools/systemd/panso-import-drops.{service,timer} /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now panso-backup.timer panso-import-drops.timer
```
## Development
```bash
uv run python manage.py createsuperuser
uv run python manage.py makemigrations
uv run python manage.py migrate
uv run python manage.py collectstatic
uv run python manage.py runserver
uv run pytest
```
## Celery
Start a worker:
```bash
uv run celery -A config worker --loglevel=info
uv run celery -A config beat --loglevel=info --scheduler django_celery_beat.schedulers:DatabaseScheduler
```