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

Blogsphere — это простой блог-сайт, созданный с использованием веб-фреймворка Flask. Веб-сайт позволяет любому размещать блог, как и любая другая платформа для ведения блогов.

Недавно я завершил разработку этого проекта, и теперь он доступен по следующей ссылке: blogsphere.top.

Цель: я начал проект как хобби, чтобы улучшить свои навыки в веб-разработке и базах данных. Итак, Главной целью проекта было повышение моей квалификации.

💻Технологические стеки

Технологии: Flask, HTMX, PostgreSQL, Bootstrap 5

Облачная платформа: Цифровой океан ($200 бесплатно на 2 месяца)

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

Чтобы создать пользовательский интерфейс для веб-сайта, я использовал Bootstrap 5, который предоставил мне отзывчивый и чистый макет, что сделало веб-сайт доступным на различных устройствах. Кроме того, я использовал HTMX, библиотеку Javascript, которая позволяет обновлять веб-сайт в режиме реального времени, не требуя обновления страницы. Это позволило обеспечить плавный и отзывчивый пользовательский интерфейс.

Для хранения и управления данными веб-сайта я использовал базу данных SQL с именем PostgreSQL. Это позволило мне легко создавать и управлять базой данных для хранения информации о блогах и пользователях.

Для запуска сайта в производстве я использовал веб-сервер Gunicorn, который может обслуживать веб-страницы в процессе производства.

Используемые модули Python:

  • Authlib#для интеграции входа через Google
  • bs4#Для удаления страниц
  • Flask-Admin #Для панели администратора
  • Flask-Migrate #Внесение изменений в базу данных
  • Flask-Session #Сохранить информацию для входа и использовать файлы cookie
  • Flask-SQLAlchemy #SQL ORM
  • Flask-WTF #Веб-формы
  • gunicorn# Основной веб-сервер для запуска веб-сайта
  • Markdown#generate markdown to HTML
  • markdownify#генерировать HTML для уценки
  • psycopg2-двоичный файл #Postgres
  • python-dotenv #используя env
  • время чтения#рассчитать время чтения для блога
  • время назад#отображает дату публикации, как в социальных сетях

💥Мой опыт

Как разработчик, я получил невероятный опыт создания проекта Blogsphere. Путь создания полнофункционального веб-приложения с нуля был одновременно сложным и полезным.

Процесс начался с четкого понимания того, чего должен достичь проект, и плана того, как это реализовать. Это включало в себя выбор подходящего стека технологий, которым в моем случае были Flask, HTMLX, SQL и Bootstrap 5.

Я начал с настройки серверного компонента с помощью Flask. Это включало создание необходимых маршрутов и функций для веб-сайта, таких как обработка регистрации и входа пользователей, а также создание и управление сообщениями в блогах. Я обнаружил, что Flask — отличный фреймворк для работы, поскольку он легкий, простой в освоении и имеет обширную библиотеку ресурсов и учебных пособий. Я использовал библиотеки flask для расширения функциональности по мере необходимости, такие как Flask-Admin, Flask-Migrate, Flask-Session, Flask-SQLAlchemy и Flask-WTF.

Когда серверный компонент был готов, я сосредоточился на создании пользовательского интерфейса. Я использовал Bootstrap 5 для создания отзывчивого и чистого макета и HTMLX, что позволило мне создавать обновления для веб-сайта в режиме реального времени. Это обеспечило плавный и отзывчивый пользовательский интерфейс для посетителей.

Я также использовал SQL для создания и управления базой данных для хранения информации о блогах и пользователях. Было приятно видеть, как база данных оживала по мере того, как я добавлял в нее больше данных, а также сложно было убедиться, что структура базы данных подходит для масштаба приложения.

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

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

😟Вызовы, с которыми я столкнулся

Работа над проектом полного стека Flask поставила передо мной несколько задач. Одной из самых сложных задач было сбалансировать сложность между клиентской и серверной сторонами, что необходимо для любого приложения с полным стеком. Кроме того, я должен был обеспечить надлежащую структуру каждого уровня для обеспечения масштабируемости приложения. Кроме того, отладка и устранение любых ошибок быстро становились сложной задачей, поскольку определенные проблемы могли возникать как во фронтальной, так и во внутренней части. Наконец, я обнаружил, что синхронизация данных между моей локальной средой и облачными средами требует дополнительных усилий, поскольку были несоответствия, которые необходимо было выявить, чтобы не отставать от разработки функций. Особенно мне приходится преодолевать трудности, баги и ошибки в Flask с маршрутами, моделями, формами, шаблонами и эффективностью.

Одной из основных проблем, с которыми я столкнулся при создании Blogsphere, была работа с базой данных SQL и реляционными моделями. Это требовало тщательного планирования и организации, а также глубокого понимания того, как различные таблицы в базе данных будут взаимодействовать друг с другом. Следующая система и раздел комментариев были особенно сложными для реализации, так как они требовали много работы на стороне SQL.

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

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

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

Гораздо проще проиллюстрировать решения перед их кодированием.

Помимо технических проблем, при создании Blogsphere мне также приходилось учитывать пользовательский опыт. Я хотел создать веб-сайт, который был бы прост в использовании и навигации, с чистым и современным дизайном. Я использовал Bootstrap 5 для создания визуально привлекательного и отзывчивого веб-сайта, что позволило мне создать удобный интерфейс для пользователя.

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

🎯Навыки, которым я научился

Работа над полнофункциональным проектом Flask позволила мне приобрести ряд ценных навыков и знаний. Я научился создавать профессиональные пользовательские интерфейсы с помощью HTML, CSS и JavaScript, а также создавать базу данных PostgreSQL, связанную с моим приложением через ORM. Я научился профессионально работать с Flask SQL ORM для операций CRUD. Кроме того, я преодолел различные трудности, используя схемы Flask для структурирования моделей, форм, контроллеров и представлений моего приложения. Я применил свои знания в интеграции аутентификации OAuth2.0, настройке запросов jQuery Ajax и процедурах развертывания с платформой приложений DigitalOcean.

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

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

🥜В двух словах

Работая над проектом, я узнал:

  1. Важность планирования и организации при работе с реляционными базами данных.
  2. Важность тестирования заключается в том, чтобы выявить баги и ошибки на ранней стадии.
  3. Методы создания и управления сложными базами данных SQL для конкретных функций, таких как системы подписки и комментариев.
  4. Влияние пользовательского опыта и дизайна на общий успех веб-сайта.
  5. Важность тайм-менеджмента и расстановки приоритетов при работе над проектом со строгими сроками.
  6. Решение проблем, иллюстрируя решения или разделяя их на маленькие части
  7. Не расстраивайтесь из-за ошибок или багов
  8. Не теряйте терпения
  9. Неважно, любят люди ваш проект или нет, но вы должны верить в себя и свой проект.
  10. Преодолейте проблемы, с которыми вы столкнулись, с помощью ресурсов, доступных в Интернете, и используйте решение по мере необходимости.

🏁Заключение

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