Какой должна быть структура проекта с ботом и сайтом?

Я разрабатываю бота и веб-сайт для него, поэтому меня интересует то, как бы вы реализовали структуру подобного проекта. Если коротко, то бот и сайт будут плотно связаны, друг без друга работать не смогут. Проект планирую делать не сложным.

По части бэкенда будет использован Python (FastAPI). Фронтент - CSS, HTML, JS, Angular (может дополняться). Так же планирую PostgreSQL (возможно MongoDB) или что-то попроще, если есть смысл. Конечно, это не итоговый вариант технологий, которые я буду использовать, но для формирования начально структуры - подойдёт.

Что конкретно меня интересует?

  • Как стоит разделить бота и вебсайт? Делать ли это под одной условной папкой "my_project" или вообще не стоит совмещать сайт и бота в одном месте?
  • Как лучше организовать папки, файлы?
  • Возможно, вы знаете какие-то типичные ошибки при проектировании подобных проектов?
  • Возможно, вы знаете полезные советы или литературу для проектирования чего-то подобного?

Помимо этого, я хотел бы услышать советы по технологиям, которые стоит использовать в подобном (довольно простом) проекте. Делать я его буду самостоятельно, в силу того, что хочу получить дополнительный опыт.

Дополнительно:

Ответы:

Для начала выберите фреймворк. Django, как самый популярный, или какой-то из других, может лучше подойдут.
Структуру файлов берите из выбранного фреймворка.
Где-то рядом, в отдельной папке - бот.
Может быть есть смысл делать его подмодулем, хотя если вы утверждаете, что отдельно от кодовой базы сайта он не работает, то просто в папку.
Структура самого бота - тут сложно подсказать. Некторые боты настолько просты, что умещаются в один файл. Бывают и очень сложные, но что будет у вас - отсюда не видно.

  • Да, забыл самое главное - фреймворк. Я хочу использовать FastAPI по ряду причин:
    • Подходит для небольших проектов;
    • Хорошо дружит с асинхронностью (что для меня важно);
    • Более прост в использовании, чем тот же Django.

    Именно этот фреймворк заставил меня написать вопрос на Хабр, ведь FastAPI не имеет строгой структуры (как Django, например). Что думаете по этому поводу?

  • john_does13, я никогда не работал с fastapi, но по запросу "fastapi file structure best practices" выдает результаты и в родной документации и и вот эту, с 3500 звезд https://github.com/zhanymkanov/fastapi-best-practices
  • Stalker_RED, отлично!
    Стоит ли в корне проекта создавать две отдельных директории под сайт и бот? По типу:

    Или всё же отталкиваться от этой концепции?

    Структуру файлов берите из выбранного фреймворка.
    Где-то рядом, в отдельной папке - бот.

 

Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.

 

    • Какой должна быть структура проекта с ботом и сайтом?Есть ответ
    • 07.04.2024
    Ответить

    Для создания проекта с ботом и сайтом, необходимо следовать определенной структуре, чтобы обеспечить удобство разработки, поддержки и масштабирования проекта. Вот пример структуры проекта с ботом и сайтом:


    project/

    ├── bot/
    │ ├── config/
    │ │ └── config.php
    │ ├── src/
    │ │ ├── Bot.php
    │ │ └── Handlers/
    │ │ └── MessageHandler.php
    │ └── vendor/
    │ └── (здесь находятся установленные зависимости)

    ├── site/
    │ ├── assets/
    │ │ ├── css/
    │ │ ├── js/
    │ │ └── images/
    │ ├── config/
    │ │ └── config.php
    │ ├── includes/
    │ │ ├── header.php
    │ │ └── footer.php
    │ ├── pages/
    │ │ ├── index.php
    │ │ └── about.php
    │ ├── vendor/
    │ │ └── (здесь находятся установленные зависимости)
    │ └── .htaccess

    └── composer.json

    В этой структуре проекта у нас есть две основные директории: bot и site. В директории bot находится весь код, относящийся к боту. В директории site содержится весь код для сайта.

    Каждая директория имеет свою структуру:
    - config/ - здесь хранятся файлы конфигурации, например, настройки базы данных или API ключи.
    - src/ - здесь находятся основные файлы кода. В случае с ботом, здесь могут быть классы для работы с ботом. В случае с сайтом, здесь могут быть контроллеры и модели.
    - Handlers/ - если в боте есть обработчики сообщений, лучше вынести их в отдельную директорию.
    - vendor/ - здесь хранятся установленные зависимости через Composer.

    Также в корне проекта находится файл composer.json, в котором указываются зависимости проекта.

    Для структуры сайта предусмотрены дополнительные директории:
    - assets/ - здесь хранятся статические файлы, такие как CSS, JS и изображения.
    - includes/ - здесь можно хранить общие части сайта, например, шапку и подвал.
    - pages/ - здесь находятся файлы с контентом страниц сайта.
    - .htaccess - файл для настройки URL-rewrite.

    Это лишь пример структуры проекта с ботом и сайтом, и ее можно изменять в зависимости от конкретных требований проекта. Важно поддерживать порядок и четкость в структуре проекта, чтобы облегчить совместную работу и дальнейшее развитие проекта.

Оставить комментарий