Giter Club home page Giter Club logo

your_design's Introduction

Твой Дизайн

Проект "Твой Дизайн" — это веб-сервис на базе Flask, который принимает данные через Webhooks и генерирует изображения на основе ответов пользователя.

Квизы: Скандинавский https://mrqz.me/66377f58f77e650026c3c7c0

Лофт https://mrqz.me/66a75a6e18108a0026d95d74

Минимализм https://mrqz.me/66a75aa95ac9fb00268cf1f8

Неоклассик https://mrqz.me/66a75abd17df430026dbf6a3

Современный https://mrqz.me/66a75ad49f61830026a976a9

Структура проекта

your_design/
├── src/
│   ├── __init__.py
│   ├── app.py
│   ├── auth.py
│   ├── forms.py
│   ├── image_generator.py
│   └── models/
│       ├── __init__.py
│       ├── image.py
│       ├── quiz.py
│       └── user.py
├── tests/
│   ├── __init__.py
│   ├── test_app.py
│   └── test_image_generator.py
├── test_data.json
├── generated_images/
├── source_images/
│   ├── <quiz_id>/
│   │   ├── background/
│   │   │   └── 1.png  # Пример фонового изображения
│   │   └── (другие папки с изображениями)
├── requirements.txt
└── venv/

Установка

Настройка Ubuntu

  1. Обновите пакеты и установите необходимые зависимости:

    sudo apt update
    sudo apt install -y python3 python3-venv python3-pip git tmux
  2. Создайте нового пользователя (например, webuser):

    sudo adduser webuser
    sudo usermod -aG sudo webuser
  3. Выйдите и войдите под новым пользователем:

    su - webuser

Шаг 1: Клонирование репозитория

git clone https://github.com/sergeychernyakov/your_design.git
cd your_design

Шаг 2: Создание виртуального окружения

python3 -m venv venv

Шаг 3: Активация виртуального окружения

  • На macOS и Linux:
    source venv/bin/activate

Шаг 4: Установка зависимостей

pip install -r requirements.txt

Запуск приложения с использованием tmux

Шаг 1: Запуск Flask приложения

  1. Создайте новый сеанс tmux:

    tmux new -s flasksession
  2. Внутри сеанса tmux запустите Flask приложение:

    cd ~/your_design
    source venv/bin/activate
    python src/app.py
  3. Отсоединитесь от сеанса tmux, нажав Ctrl + B, затем D.

Шаг 2: Запуск ngrok

  1. В другом терминале подключитесь к серверу и создайте новый сеанс tmux:

    ssh [email protected]
    tmux new -s ngroksession
  2. Внутри сеанса tmux запустите ngrok:

    ngrok http 5002
  3. Отсоединитесь от сеанса tmux, нажав Ctrl + B, затем D.

Шаг 3: Проверка статуса приложения

Взять активную ссылку можно здесь: https://dashboard.ngrok.com/cloud-edge/endpoints Откройте браузер и перейдите по адресу, например, https://fb96-89-111-175-202.ngrok-free.app. Вы должны увидеть JSON сообщение:

{
  "status": "Ok"
}

Шаг 4: Настройка Webhook в квизе

  1. Заходим в редактирование квиза из личного кабинета.
  2. Заходим во вкладку «Интеграции» и выбираем Webhooks.
  3. Добавляем хук и вписываем URL, предоставленный ngrok, добавив путь /webhook, например, https://fb96-89-111-175-202.ngrok-free.app/webhook.

Доступ к админке

  1. Запустите Flask приложение, как описано выше в разделе "Запуск Flask приложения".
  2. Откройте браузер и перейдите по адресу http://127.0.0.1:5002/admin.
  3. Введите имя пользователя и пароль, указанные в функции check_auth (например, admin и secret).

Управление сеансами tmux

Подключение к сеансу tmux

Чтобы подключиться к уже запущенному сеансу tmux, выполните:

tmux attach -t flasksession  # для Flask приложения
tmux attach -t ngroksession  # для ngrok

Список активных сеансов tmux

Чтобы увидеть список активных сеансов tmux, выполните:

tmux ls

Завершение сеанса tmux

Чтобы завершить сеанс tmux, подключитесь к нему и завершите все запущенные процессы внутри сеанса, затем закройте сеанс:

tmux attach -t <session_name>
# внутри сеанса остановите процессы, затем закройте сеанс:
exit

Тестирование

Шаг 1: Запуск тестов с помощью unittest

python -m unittest discover tests

Шаг 2: Отладка генерации изображения

Для отладки класса ImageGenerator используйте следующий шаг:

python -m src.image_generator

Это создаст изображение на основе данных в test_data.json и сохранит его в папке generated_images.

Очистка папки с генерированными картинками на сервере

Шаг 1: Подключение к серверу

Шаг 2: Очистка папки

Перейдите в директорию с проектом и выполните команду для удаления всех файлов в папке generated_images:

cd ~/your_design/generated_images
rm -f *

Обновление картинок коллажа в source_images

Шаг 1: Подготовка новых изображений

Подготовьте новые изображения и сохраните их в соответствующие папки в source_images. Каждая категория изображений должна быть в отдельной папке, например cabinet.

Шаг 2: Замена изображений

Переместите новые изображения в нужные папки, заменяя старые:

cd ~/your_design/source_images/<категория>
# Замените существующие изображения новыми  (1-4).png (jpg)
cp /path/to/new/image.png 1.png

Шаг 3: Перезапуск приложения

После обновления изображений перезапустите Flask приложение:

  1. Подключитесь к сеансу tmux для Flask приложения:

    tmux attach -t flasksession
  2. Остановите текущее приложение (если оно запущено) и перезапустите его:

    Ctrl + C  # остановка приложения
    source venv/bin/activate
    python app.py

Скачивание получившегося изображения

После генерации изображения вы можете скачать его, следуя этим шагам:

  1. Получите URL изображения, который возвращается в ответе на Webhook запрос. Например, если URL https://fb96-89-111-175-202.ngrok-free.app/images/<phone number>_1(2,3,4,5...).png, например, https://fb96-89-111-175-202.ngrok-free.app/images/79111234567_1.png.

  2. Откройте этот URL в браузере. Изображение откроется в новом окне.

  3. Нажмите правой кнопкой мыши на изображение и выберите "Сохранить изображение как..." для скачивания изображения на ваш локальный компьютер.

Структура кода

src/app.py — Основной файл приложения Flask. Обрабатывает Webhook запросы и генерирует изображения на основе данных.

src/image_generator.py — Класс для генерации изображений на основе данных пользователя. Включает режим отладки.

src/init.py — Пустой файл для обозначения пакета.

src/models/init.py — Инициализация базы данных SQLAlchemy и импорт моделей.

src/models/user.py — Модель для хранения информации о пользователях.

src/models/quiz.py — Модель для хранения информации о квизах.

src/models/image.py — Модель для хранения информации о сгенерированных изображениях.

src/auth.py — Middleware для HTTP Basic Authentication.

tests/test_app.py — Файл с тестами для приложения. Включает тест

ы для проверки обработки Webhook запросов и генерации изображений.

tests/test_image_generator.py — Файл с тестами для класса ImageGenerator.

test_data.json — Файл с тестовыми данными для отладки класса ImageGenerator.

generated_images/ — Папка для сохранения сгенерированных изображений.

source_images/ — Папка для хранения фоновых изображений и других изображений.

your_design's People

Contributors

sergeychernyakov avatar bananafoxme avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.