# Aplikacja List Zakupów Aplikacja webowa do zarządzania listami zakupów z obsługą użytkowników, OCR paragonów, statystykami i trybem współdzielenia. ## Wymagania - Docker ## Instalacja 1. Sklonuj repozytorium: ```bash git pull https://git.linuxiarz.pl/gru/lista_zakupowa_live.git cd lista_zakupowa_live ``` 1. Skonfiguruj `.env` z pliku `.env.example` 2.1 Uruchom: (pgsql) ```bash bash deploy_docker.sh pgsql ``` 2.2 Uruchom: (mysql) ```bash bash deploy_docker.sh mysql ``` 2.3 Uruchom: (sqlite) ```bash bash deploy_docker.sh sqlite ``` 2.3 Restart: ```bash bash deploy_docker.sh pgsql restart lub bash deploy_docker.sh sqlite restart ``` Aplikacja będzie dostępna pod `http://localhost:8000`. ## Domyślne dane logowania - konfigurowane z pliku `.env` - Główne hasło systemowe: `admin` - Admin: `admin` / `admin123` ## Konfiguracja bazy danych Obsługiwane silniki: `sqlite`, `pgsql`, `mysql`. Ustaw `DB_ENGINE` oraz odpowiednie zmienne w `.env`: Przykład dla PostgreSQL: ```bash DB_ENGINE=pgsql DB_HOST=db DB_PORT=5432 DB_NAME=myapp DB_USER=user DB_PASSWORD=pass ``` ## CLI Opis komend administracyjnych znajduje sie w pliku `KOMENDY_CLI.txt`. Komendy CLI uruchamiamy wewnatrz kontenera aplikacji. Najwygodniej wejsc do katalogu projektu i wykonac polecenie przez `docker compose exec app`. Przykladowe: ```bash cd /opt/lista_zakupowa_live docker compose -f docker/compose.yml exec app sh -c 'flask lists copy-schedule --source-list-id 393 --when "2026-03-22 11:30" --owner admin' ``` Dodatkowe przyklady: ```bash docker compose -f docker/compose.yml exec app sh -c 'flask lists move --list-id 393 --when "2026-03-23 08:00"' docker compose -f docker/compose.yml exec app sh -c 'flask lists rename --list-id 393 --title "Zakupy na poniedzialek"' docker compose -f docker/compose.yml exec app sh -c 'flask lists create-from-template --template-id 7 --owner admin --when "2026-03-24 09:15" --title "Poranna lista"' ``` ## Uproszczenie UI i skalowanie Interfejs korzysta z jednokolorowych, konturowych ikon SVG zapisanych lokalnie w `shopping_app/static/icons/tabler/`. Ikony są wykorzystywane także przez JavaScript (`shopping_app/static/js/ui_icons.js`). Nie wymagają CDN. W `.env` można ustawić: ```dotenv UI_SCALE=100 ``` Obsługiwane wartości: `100` (domyślnie), `90`, `80`, `70`. Pozostałe wartości są traktowane jako `100`. Zmiana wymaga ponownego uruchomienia procesu Flask (np. odtworzenia kontenera aplikacji). Przy `100` globalne skalowanie nie jest włączane. Niższe wartości pomniejszają również tekst i obszary dotykowe, dlatego na telefonach rekomendowane jest `100`. **Opcjonalnie:** aby zastąpić dołączone konturowe SVG oryginalnymi plikami projektu [Tabler Icons](https://github.com/tabler/tabler-icons) (licencja MIT), wykonaj przy dostępie do Internetu: ```bash python _tools/sync_tabler_icons.py ``` Skrypt pobierze komplet oryginalnych ikon z repozytorium Tabler, odtworzy lokalny `sprite.svg`, bez wprowadzania zależności sieciowej w czasie działania aplikacji. Dołączone SVG mają spójny styl Tabler, ale bez uruchomienia tego skryptu nie należy traktować ich jako zweryfikowanych oryginalnych plików Tabler Icons. Aktualizacja istniejącej instalacji: skopiuj zmodyfikowane pliki do katalogu projektu, zachowaj lokalne `.env`, a następnie odtwórz kontener `app` np.: ```bash docker compose --env-file .env -f docker/compose.yml up -d --force-recreate app ``` Nie używaj trybu `deploy` skryptu `deploy_docker.sh` do wdrażania zmian tylko z rozpakowanego ZIP-a, ponieważ uruchamia on `git pull` i może nadpisać lokalny kod. Skalowanie przetestowano w Chromium; na innych silnikach oraz na fizycznych telefonach należy dodatkowo zweryfikować działanie modali i układ.