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

Теперь цель EscenApp — предоставить художникам в Пуэрто-Рико место для продвижения. Для этого мы планировали добавить для них такие функции, как добавление события. Конечно, это не единственное. Есть настраиваемая регистрационная форма, логин, запрос/сброс пароля, обновление информации об учетной записи, изменение изображения профиля и так далее. Но дело в том, что есть много функций, которые мы хотим добавить для художников и пользователей в будущем, прежде чем мы сможем назвать это веб-приложение завершенным.

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

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

Чтобы было ясно, окончательный проект и первоначальная цель в его нынешнем виде — это не одно и то же. Идея заключалась в том, чтобы создать веб-приложение, которое буквально раскрывало бы все события, которые происходят рядом с каждым человеком, но о которых мы не знаем. Например, если вы с друзьями в баре или с семьей едите в ресторане, не зная, что делать дальше, то это приложение должно дать вам это. Например, проверка того, какие события проходят рядом с художниками, зарегистрированными в нашем приложении, которые могут варьироваться от выставки художника до музыканта, играющего музыку на улице поблизости. Это было то, что я тоже очень хотел сделать. Но конец веб-приложения — это далеко не то, о чем мы думали в первую очередь, и еще многое предстоит сделать.

Почему я выбираю этот проект?

Я буду честен. Я не мог выбрать. Не пытаюсь облить грязью кого-либо из моей команды, но дело в том, что это было забавно, потому что мы трое делились идеями. Дело в том, что я решил не ставить свою идею на голосование. Таким образом, единственными идеями, за которые можно было проголосовать, были Серджио (что-то связанное с образованием) и Яред с веб-приложением для художника. Итак, Яред проголосовал за себя, а Серджио проголосовал за Яреда. И я ничего не мог сделать. Но, тем не менее, я был просто мотивирован работать над идеей Yared, поскольку одна из моих целей как разработчика — предлагать решения любому сообществу, которое в них нуждается. И это то, что всегда будет приводить меня к проектам в будущем. Просто способ помочь тем, кто нуждается в помощи для роста, но не имеет ресурсов для этого.

Архитектура, технологии и функции

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

Итак, вот список наших технологий, используемых в бэкэнде и во внешнем интерфейсе:

Серверная часть

  • Python: базовый язык для всех наших конфигураций, таблиц базы данных, форм и конечных точек.
  • Flask: для всех конфигураций базы данных, входа в систему, чертежей и самого приложения.
  • Flask SQLAlchemy: для создания моделей всех таблиц с их атрибутами.
  • Супервизор: это клиент-серверная система для запуска вашего приложения в производство и регистрации всего, что происходит, пока оно работает.
  • Nginx: это веб-сервер, который мы решили использовать, поскольку мы знали о нем раньше, и настроить его было проще.

Внешний интерфейс

  • HTML5: для всех шаблонов конечных точек, которые нам нужны.
  • CSS + Bootstrap: для всех стилей интерфейса и форм.
  • Jinja2: Даже если это нечто среднее между бэкендом и внешним интерфейсом, он использовался в html-шаблонах, и мы использовали его, потому что его было легко реализовать и использовать.

Список возможностей:

  • Форма регистрации
  • Форма входа
  • Запрос/сброс пароля
  • Обновить информацию об учетной записи.
  • Создание, обновление и удаление событий

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

Технический вызов

Когда я делал регистрационную форму, я заранее сделал несколько таблиц в нашей базе данных. Этими таблицами были Artist и User. Но потом один из моих товарищей по команде сказал мне, что информация о жанре/инструментах должна быть статичной. Это означает, что художник будет выбирать между некоторыми доступными вариантами. Для этого я провел небольшое исследование и узнал о полях Drop Query Select. Это таблица со статическими данными, которые будут отображаться в форме регистрации в виде выпадающего списка.

Теперь одна из проблем, с которыми я столкнулся, заключается в том, что SQLAlchemy из flask ограничен, мне пришлось использовать что-то под названием «SQLAlchemy_binds», и это дает вам возможность добавить другую базу данных, чтобы это не повлияло ни на что, что происходит в другой столы. Я разделил две таблицы в основной базе данных и две другие в другой. Но, в конце концов, в этом даже не было необходимости, потому что в WTForm есть что-то, называемое «select_field», которое создаст поле с несколькими вариантами для выбора пользователем, а затем добавит этот выбор в таблицу в базе данных. . Тем не менее, изучение материала никогда не бывает плохим или достаточно хорошим.

Опыт обучения

Общее впечатление от этого проекта было отличным. Я имею в виду, что у нас было много неудач в процессе из-за общения, тайм-менеджмента, обязательств и так далее. Но в итоге я так много узнал о Flask, API, Forms, хостинге, ORM и немного о HTML, CSS, BOOTSTRAP и Jinja2. Дело в том, что я возьму это и узнаю больше в своем следующем проекте. Ох, и как сильно я недооценил микрофреймворк Flask. Я действительно хочу узнать об этом намного больше.

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

О себе

До пандемии я был просто сотрудником производственной компании. Еще до этого я работал в семейном бизнесе, и мне пришлось много бороться за рост. Поэтому, когда разразилась пандемия, мне очень захотелось перестроиться. Мне всегда нравились технологии, но я никогда не пробовал программировать. Поэтому, когда пришел Холбертон, я увидел хорошую возможность заняться этим. Это было нелегко, я многим пожертвовал, но теперь это в прошлом, и то, чем я хочу заниматься, осталось прежним. Помогайте малому бизнесу, сообществам, дайте что-то свое, чтобы этот мир стал лучше.

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

Проект EscenApp на Github:

https://github.com/KevinTMO/Escenapp

Развернутое приложение EscenApp + целевая страница

http://170.187.206.144/дом

Линкедин