Skip to content

KarelWintersky/FreshTracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FreshTracker 🍎

Система учета продуктов питания с контролем сроков годности

FreshTracker PHP SQLite

Производство - deepseek. Нет, мне не стыдно делать микроутилиту для личных нужд нейросетью.

📋 О проекте

FreshTracker - это простое и удобное веб-приложение для учета продуктов питания с автоматическим контролем сроков годности. Приложение помогает следить за запасами на кухне и вовремя использовать продукты до истечения их срока годности.

✨ Возможности

  • Добавление продуктов с указанием типа, веса и срока годности
  • 🗑️ Удаление продуктов из базы данных
  • 🎨 Цветовая индикация статусов:
    • 🔴 Красный - просроченные продукты
    • 🟡 Желтый - скоро истекает (в пределах порога)
    • 🟢 Зеленый - нормальный срок
  • Умные сроки годности - автоматические настройки по типам продуктов
  • 📱 Адаптивный интерфейс - работает на любых устройствах
  • 🔒 Защита данных - запрет прямого доступа к базе данных

🚀 Быстрый старт

Требования

  • PHP 8.0 или выше
  • SQLite3
  • Веб-сервер (Apache/Nginx) с поддержкой PHP
  • Браузер с поддержкой JavaScript

Установка

  1. Скачайте файлы проекта в папку веб-сервера:
cd /var/www/html/
git clone <repository-url> freshtracker
  1. Настройте права доступа:
chmod 755 freshtracker/
chmod 644 freshtracker.sqlite
  1. Настройте веб-сервер (пример для Nginx):
server {
    listen 80;
    server_name your-domain.com;
    root /var/www/freshtracker;
    index index.php;

    # Защита базы данных
    location ~* \.sqlite$ {
        return 404;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
    
    access_log /var/log/nginx/freshtracker_access.log;
    error_log /var/log/nginx/freshtracker_error.log;
}
  1. Откройте в браузере:
http://your-domain.com/

🛠️ Настройка

Конфигурация кнопки добавления

В файле index.php в начале кода можно изменить положение кнопки:

$config = [
    'button_position' => 'right', // 'center' или 'right'
];

Умные настройки по типам продуктов

Приложение автоматически подставляет рекомендуемые значения:

Тип продукта Вес по умолчанию Срок годности
🍚 Крупы 0.9 кг 1 год
🍝 Макароны 0.5 кг 6 месяцев
🥫 Консервы 0.4 кг 1 год
🫒 Масло 0.9 кг 1 месяц
🌾 Мука 1.0 кг 1 год
🌶️ Специи 0.1 кг 6 месяцев
☕ Чай/Кофе 0.25 кг 6 месяцев
📦 Разное 1.0 кг 30 дней

🎯 Использование

Добавление продукта

  1. Нажмите кнопку "➕ Добавить продукт"
  2. Заполните форму:
    • Наименование - название продукта
    • Тип - выберите категорию (автоматически подставит вес и срок)
    • Вес - укажите количество в кг
    • Срок годности - используйте кнопки быстрого ввода или календарь
    • Порог предупреждения - за сколько дней предупреждать о истечении срока

Быстрый ввод дат

  • Кнопки: +3 дн, +7 дн, +14 дн, +30 дн, +60 дн
  • По умолчанию - устанавливает рекомендуемый срок для выбранного типа
  • Календарь - для точного выбора даты

Просмотр списка

  • Сортировка по дате истечения срока (от ближайших к дальним)
  • Цветовая индикация статуса
  • Возможность удаления продуктов

🔧 Технические детали

Структура базы данных

CREATE TABLE products (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL,
    weight REAL NOT NULL,
    expiry_date TEXT NOT NULL,
    type TEXT NOT NULL,
    threshold_days INTEGER DEFAULT 7
);

Технологии

  • Backend: PHP 8.0+ с PDO
  • Database: SQLite3
  • Frontend: Vanilla JavaScript, CSS3, HTML5
  • Date Picker: Flatpickr
  • Styling: Custom CSS с градиентами

Безопасность

  • Защита от XSS инъекций
  • Валидация входных данных
  • Запрет прямого доступа к .sqlite файлам
  • Подготовленные SQL запросы

🐛 Решение проблем

База данных не создается

  • Проверьте права на запись в папке
  • Убедитесь, что включено расширение SQLite3 в PHP

Не работает добавление продуктов

  • Проверьте ошибки PHP в логах
  • Убедитесь, что включен JavaScript в браузере

Не отображается календарь

  • Проверьте подключение к интернету (CDN для flatpickr)
  • Или загрузите flatpickr локально

📄 Лицензия

MIT License - свободное использование и модификация.

🤝 Разработка

Для внесения изменений:

  1. Клонируйте репозиторий
  2. Внесите изменения в index.php
  3. Протестируйте функциональность
  4. Создайте pull request

Свежие продукты - здоровое питание! 🥗

About

Трекер запасов продуктов по свежести

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors