Рубрики
Без рубрики

Как я впервые создал реальный мировой проект 🌈

Я изучаю веб -разработку в течение года, и я только что доставил свой самый первый MVP для CLI … Tagged с React, JavaScript, Node, Reactnative.

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

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

  1. Введение проекта
  2. Технологический стек
  3. Каркас и дизайн
  4. Моделирование данных
  5. Проектная организация
  6. Sprint 01: Frondend
  7. Спринт 02: Бэкэнд
  8. Спринт 03: Реализация функций
  9. Sprint 04: исправить и развернуть
  10. Вывод

Позвольте мне сначала представить проект. Мы должны создать MVP для мобильного приложения, которое работает на обоих Android и Ios Анкет Имя этого приложения Аллергио и стремится облегчить жизнь людей с пищевой аллергией.

Спасибо Аллергио Вы можете создать профиль для своих родственников, зарегистрировать их аллергию и поделиться своими профилями со своими контактами.

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

Чтобы выполнить эту миссию, я объединился с моим другом Валидом. Он талантливый растущий разработчик JavaScript, и приятно поделиться с ним этим опытом.

Чтобы построить это приложение, мы решили полагаться на очень популярную Mern стек, который включает в себя: ➡ MongodbЭкспрессРеагировать роднойУзел

Хотя это технологии, с которыми я знаком, я никогда не работал с Реагировать родной И я не знаю много о концепциях мобильного развития.

Мы рассматриваем AWS и Хероку Для размещения бэкэнд -детали и для управления файлами, но я предоставлю более подробную информацию в Исправить и развернуть раздел.

Это уже звучит как отличный и захватывающий вызов 🤩

Вот список инструментов, с которыми я обычно работаю, чтобы улучшить свой опыт программирования: ➡ OS: Macos ➡ терминал: iterm2 ➡ IDE: VSCODE ➡ Версия: Git ➡ Менеджер пакетов: Npm ➡ Эмулятор iOS: Xcode ➡ Эмулятор Android: Android Studio ➡ Коммуникация: Слаб ➡ Организация проекта: Трелло

Наш клиент Ксавье предоставил простые каркасы, и мы немного переработали их, чтобы сделать его «современным» и улучшить пользовательский интерфейс/ux.

Мы в основном работали с Figma Это отличный инструмент, который я на 100% рекомендую. Позвольте мне показать вам несколько примеров.

Заставка:

Экран входа в систему:

Конечно, мы перепроектировали приложение в соответствии с соглашениями о мобильной разработке 2020 года, и мы черпали вдохновение из известных приложений, таких как Юка , Шазам , Spotify , …

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

С какими данными мы играем:

Пользователи 👤

{
  email: { type: String, required: true, unique: true },
  password: { type: String, required: true },
  name: { type: String, required: true },
  lastName: { type: String, required: true },
  image: { type: String },
  profiles: [{ type: mongoose.Types.ObjectId, ref: 'Profile' }],
  allergens: [{ type: mongoose.Types.ObjectId, ref: 'Allergen' }],
  contacts: [{ type: mongoose.Types.ObjectId, ref: 'User' }],
}

Профили 👨‍👩‍👧‍👦 (созданные пользователем для его родственников)

{
  name: { type: String, required: true },
  image: { type: String, required: true },
  allergens: [{ type: mongoose.Types.ObjectId, ref: 'Allergen' }],
  readers: [{ type: mongoose.Types.ObjectId, ref: 'User' }],
  owner: { type: mongoose.Types.ObjectId, ref: 'User', required: true }
}

➡ аллергены 🥜

{
  name: { type: String, required: true },
  image: { type: String, required: true },
  description: { type: String, required: true },
  reaction: { type: String, required: true }
}

PS: Уникальные идентификаторы предоставляются MongoDB по умолчанию.

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

Вы, возможно, уже знаете, Экспресс Облегчает создание API REST, и это именно то, что мы собираемся сделать!

Если вы не знакомы с архитектурой API, я рекомендую вам пропустить этот раздел.

Маршруты API:

Пользователи 👤 ⏩/api/users/➡ (get/: uid) Получите пользователя по ID. ➡ (пост/регистрация) Создайте учетную запись пользователя. ➡ (post/login) Пользователь журнала. ➡ (путем/) Редактировать информацию пользователя.

Профили 👨‍👩‍👧‍👦 ⏩/API/Профили/➡ (get/: uid/all) Получить все профили пользователя. ➡ (get/: pid) Получите профиль от id. ➡ (post/) Создайте новый профиль. ➡ (Поместить/: PID) Редактировать информацию о профиле.

Контакты 👥 ⏩/api/contacts/➡ (get/: uid) Получите контакты пользователя. ➡ (post/search) Поиск новых контактов. ➡ (пост/поделиться) Поделиться профилями с контактом. ➡ (post/) Добавить контакт. ➡ (удалить/) Удалить контакт. ➡ (post/unbare) Непрерывные профили с контактом.

Аллергены 🥜 ⏩/API/аллергены/➡ (get/: помощь) Получите аллерген от id. ➡ (получить/) Получите все аллергены. ➡ (get/name/: имя) Получите аллерген по имени.

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

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

Вот проблема: как хранить изображения?

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

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

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

Killianfrappartdev/Image-Manager

Я никогда не расскажу об этом достаточно: организация – это ключ! 🔑

Организация полагается в основном на Agile Методология Потому что мы познакомились с этим во время нашего буткемпа кодирования.

Процесс строительства разделен на 4 спринта 5 дней (каждый спринт имеет свой собственный раздел), и каждый из них должен иметь четко определенные задачи.

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

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

Более того, мы пытались придерживаться ежедневной всталки с утренней и дневной ретроспективой около 17:30.

Есть еще один ключевой момент организации, когда вы начинаете новый проект, и это настройка рабочего процесса.

Мы работаем с GitHub Следуя рекомендациям GIT Flow как можно больше.

➡ Не знакомы с потоком GIT? Не беспокойтесь, посмотрите на мою статью! 🧐

Git flow введение 🌲

Killian Frappart ・ 23 сентября 20 ・ 3 мин читать

Наконец, позвольте мне показать вам структуру папок, с которой мы работали:

Аллергио 📂

  • Бэкэнд/ — Контроллеры/ — Модели/ ——– Маршруты/ ——– utils/ ——– Middlewares/

  • Frontend/ ——– Приложение/ ———– Активы/ ———– Компоненты/ ———– Экраны/ ———– Контекст/ ———– utils/ ———– Навигация/

Время наконец -то началось, чтобы начать кодирование! 🔥

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

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

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

Мы решили внедрить навигацию по вкладке для оптимального пользовательского опыта:

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

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

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

На этом этапе мы работаем с фиктивными жестко закодированными данными. Наши компоненты в основном являются функциональными компонентами, и их состояние управляется с React Hooks Анкет

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

Как я уже упоминал ранее, бэкэнд этого проекта – API узла/экспресс REST, связанный с облаком Mongodb база данных.

Чтобы заставить его работать, мы начинаем с установки таких зависимостей, как cors , Body-Parser , мангуста , Nodemon , …

Работая с MongoDB, я настоятельно рекомендую вам работать с Монгуз также. Это делает вашу жизнь намного проще. Определите модели Mongoose для ваших данных, подключитесь к базе данных, и вы готовы идти ✅

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

Поведение каждого контроллера должно быть проверено, и для этого вы можете дать Почтальон Попробуй.

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

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

Мы проводим всю неделю, подключая пользовательский интерфейс Frontend к контроллерам бэкэнд с помощью HTTP -запросов и обновлять базу данных в режиме реального времени.

HTTP -запрос выполняется с помощью Axios что является личным предпочтением.

На этой неделе есть много функций: ➡ Войдите в систему/регистрацию по электронной почте и пароля. ➡ Создать и обновить профили. ➡ Редактировать информацию пользователя. ➡ Добавить/удалить контакты. ➡ Поделиться профилями с контактами. ➡ Загрузите изображения из галереи телефона. ➡ Отправьте SMS, чтобы пригласить друзей. ➡ …

Нативная функциональность, такая как SMS, камера и фотогалерея, могут быть реализованы благодаря невероятному Док 🌟

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

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

AWS Имеет облачный сервис под названием EC2. Мы создаем экземпляр Ubuntu и подключаем через SSH. После небольшого настройки вещей наш сервер и диспетчер изображений работают в облаке.

Прямо сейчас приложение доступно только через хостинг Expo, но мы надеемся развернуть его в App Store и Play Store в ближайшее время.

Прошло четыре интенсивных недели, мы устали, проект все еще немного глюка, но клиент счастлив, и это то, что важно больше всего.

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

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

Большое спасибо за чтение!

Я хотел бы получить от вас отзывы, очень ценится любые советы по улучшению как разработчика или как блоггер 😇

Оригинал: “https://dev.to/killianfrappartdev/how-i-built-a-real-world-project-for-the-first-time-5gn5”