Автономна касова система з локальною базою даних SQLite.
- Backend: FastAPI + SQLAlchemy + SQLite
- Frontend: Flet
- Python: 3.11+
- Пакетний менеджер: uv (швидка альтернатива pip)
pos-standalone/
├── config/ # Конфігурація
├── backend/ # FastAPI API сервер
│ ├── api/v1/ # REST API endpoints
│ ├── database/ # Моделі БД
│ ├── schemas/ # Pydantic схеми
│ └── services/ # Бізнес-логіка
├── frontend/ # Flet UI додаток
│ ├── screens/ # Екрани інтерфейсу
│ └── api_client/ # HTTP клієнт
├── data/ # SQLite база даних
└── tests/ # Тести
Встановіть uv - швидкий пакетний менеджер для Python:
Windows (PowerShell):
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"Linux/Mac:
curl -LsSf https://astral.sh/uv/install.sh | shАбо через pip:
pip install uvuv автоматично створить віртуальне середовище та встановить всі залежності:
uv syncuv run python add_test_products.pyСкопіюйте .env.example в .env та налаштуйте параметри:
Windows:
copy .env.example .envLinux/Mac:
cp .env.example .envВаріант 1: Окремі процеси (рекомендовано для розробки)
У першому терміналі запустіть Backend API:
uv run python run_backend.pyУ другому терміналі запустіть Frontend:
uv run python run_frontend.pyВаріант 2: Прямі команди
Backend API:
uv run uvicorn backend.main:app --reload --host 127.0.0.1 --port 8000Frontend:
uv run python run_frontend.pyВаріант 3: Через головний файл
uv run python main.py- API: http://127.0.0.1:8000
- Swagger документація: http://127.0.0.1:8000/docs
- Frontend: Автоматично відкривається після запуску
uv sync --extra devuv run pytestuv run black .
uv run ruff check .uv add package-name # Додати залежність
uv add --dev package-name # Додати dev-залежність
uv remove package-name # Видалити залежністьБаза даних SQLite створюється автоматично при першому запуску.
uv sync # Синхронізувати залежності
uv lock # Оновити uv.lock
uv run <command> # Виконати команду у віртуальному середовищі
uv pip list # Показати встановлені пакетиПісля запуску add_test_products.py будуть доступні тестові товари:
| Штрих-код | Товар | Ціна |
|---|---|---|
| 4820000000017 | Хліб білий | 25.50 грн |
| 4820000000024 | Молоко 1л | 35.00 грн |
| 4820000000031 | Яйця 10шт | 48.00 грн |
| 4820000000048 | Масло вершкове 200г | 85.00 грн |
| 4820000000055 | Цукор 1кг | 32.00 грн |
| 4820000000062 | Сіль 1кг | 12.00 грн |
| 4820000000079 | Олія соняшникова 1л | 65.00 грн |
| 4820000000086 | Макарони 400г | 28.00 грн |
| 4820000000093 | Рис 1кг | 45.00 грн |
| 4820000000109 | Кава розчинна 100г | 125.00 грн |
GET /api/v1/products- список товарів (з пагінацією)GET /api/v1/products/{id}- отримати товар за IDGET /api/v1/products/barcode/{barcode}- пошук за штрих-кодомPOST /api/v1/products- створити товарPUT /api/v1/products/{id}- оновити товарDELETE /api/v1/products/{id}- видалити товар (м'яке видалення)
POST /api/v1/sales- створити продажGET /api/v1/sales- список продажів (з фільтрацією по датах)GET /api/v1/sales/{id}- отримати продаж за ID
MIT