# HS3 Baza zasobów Dashboard

Skrypt, który generuje podsumowanie [Bazy Wiedzy zasobów Hackerspace Trójmiasto](https://kb.hs3.pl/docs) w formie statycznej strony internetowej.

## Uruchomienie połączenia z drukarką etykiet

Potrzebne, by działał przycisk w kolumnie `print`. Po kliknięciu, nastąpi próba połączenia się z drukarką Brother PT-E550W, pod adresem IP zdefiniowanym w `PRINTER_IT`, w celu wydruku naklejki z kodem QR.

```bash
uv venv --python 3.11
source .venv.bin/activate
uv sync
fastapi dev --port 31337 labeler/adapter/fastapi_srv.py
export PRINTER_IT=192.168.0.147
```

W razie problemów, spróbuj alternatywnych komend: 
```bash
source .venv/Scripts/activate
uv run -- fastapi dev --port 31337 labeler/adapter/fastapi_srv.py
```

## Sposób działania

1. Baza Wiedzy znajduje się na Discourse Hackerspace Trójmiasto i jest dostępna publicznie. Projekt wykorzystuje Discourse REST API do pobrania listy zasobów.
1. Lista zasobów zapisana jest w pliku csv `zasoby.csv`.
1. Skrypt tworzy statyczną stronę internetową na podstawie pliku `.csv`.
1. Strona jest hostowana przy pomocy GitHub Pages.

## Możliwości generatora bazy zasobów csv

- pobieranie listy wszystkich zasobów z wybranej kategorii
- pobieranie ID, tagów i treści posta każdego zasobu
- wyłuskanie z treści posta informacji:
  - nazwa przedmiotu
  - miejsce zamieszkania
  - ilość
  - opiekunowie
- oto jak powinien wyglądać ostateczny wpis:

```
ID, nazwa, miejsce, ilość, opiekunowie, tagi
```

## Automatyczna aktualizacja

Żeby działały automatyczne aktualizacje przy użyciu GitHub Actions należy w sekretach dodać sekret o nazwie `PAT` którego wartością jest Personal Access Token z uprawnieniami do modyfikowania repozytorium.

## Możliwości dashboard'u

- filtrowanie bazy zasobów po tagach
- sortowanie alfabetyczne bazy zasobów po dowolnej kolumnie
- linki do zasobu na Discourse w ID zasobu
- łatwa zmiana ilości kolumn dashboardu

## Co chcę dodać w przyszłości

- wizualizacja statystyk z bazy zasobów
- generowanie drugiego pliku csv służącego do wygenerowania naklejek z kodem QR

## Dokumentacja

- [Discourse REST API](https://docs.discourse.org/)
- [hbrylkowski/labeling_bot](https://github.com/hbrylkowski/labeling_bot)
