1.1 Постановка проблемы и решение
Строительная отрасль — это обширная область с сотнями различных инструментов, предметов и материалов, которыми необходимо эффективно управлять. Проблема, которая часто возникает, заключается в поддержании инвентаря этих инструментов и предметов. Ручное управление запасами может быть утомительным и подверженным ошибкам. Следовательно, приложение для управления запасами может обеспечить эффективное и автоматизированное решение этой проблемы.
Ссылка на текущий проект 👉 (выберите ветку): Sinet2000/ConstructGO: создание приложения для управления строительными запасами с использованием React, Go и MongoDB (github.com)
1.2 Обоснование технического стека
Мы выбрали набор технологий для этого приложения: React с Typescript во внешнем интерфейсе, Go во внутреннем и MongoDBдля базы данных. React в сочетании с Typescript обеспечивает надежный интерфейс с мощными функциями проверки типов. Go отлично подходит для серверной разработки благодаря своей простоте, эффективности и отличной поддержке параллельных операций. MongoDB, база данных NoSQL, выбрана за ее масштабируемость и гибкость при обработке различных типов данных.
1.3 Предварительные требования и настройка
Вам нужно будет установить:
- Базовые знания JavaScript/TypeScript, Go и MongoDB.
- GO установлен и настроен на вашем компьютере (Скачать и установить — Язык программирования Go)
- На вашей машине установлены Node.js и npm (Скачать | Node.js (nodejs.org)).
- Docker и Docker-Compose установлены на вашем компьютере. (Докер для рабочего стола | Документация по Docker)
- Редактор кода на ваш выбор (рекомендую VS Code) (Скачать Visual Studio Code — Mac, Linux, Windows).
- VS Code, настроенный для разработки GO (Настройка Visual Studio Code для разработки Go | Microsoft Learn)
- Git для контроля версий. (Git — Загрузки (git-scm.com))
Теперь давайте настроим нашу среду.
1.4 Настройка MongoDB с помощью Docker
Создайте новый каталог для проекта и назовите его ConstructGo
— это будет наша корневая папка!
Создайте файл docker-compose.yml
в корневом каталоге вашего проекта и вставьте следующий код:
version: '3' services: mongodb: image: mongo:latest environment: MONGO_INITDB_ROOT_USERNAME: root MONGO_INITDB_ROOT_PASSWORD: secret volumes: - mongodb_data_container:/data/db ports: - "27017:27017" volumes: mongodb_data_container:
Запустите файл компоновки Docker:
docker-compose up -d
1.5 Настройка Go Backend
Создайте новый каталог для бэкенда Go:
mkdir cgo_backend cd cgo_backend
Затем инициализируйте модуль Go:
go mod init github.com/yourusername/cgo_backend
Добавьте начальные инструменты проекта в VS Code:
- В Visual Studio Code откройте Справку палитры команд › Показать все команды. Или используйте сочетание клавиш (Ctrl+Shift+P)
- Найдите
Go: Install/Update tools
, затем запустите команду с поддона - При появлении запроса выберите все доступные инструменты Go и нажмите OK.
- Подождите, пока инструменты Go закончат обновление.
Эти шаги описаны там: Настройка кода Visual Studio для разработки Go | Обучение Майкрософт
Давайте создадим простую структуру каталогов для нашего бэкенда Go:
/cgo_backend /cmd /app main.go /internal /handler /repository /service /pkg /api /scripts /test
cmd
: основные приложения для этого проекта.internal
: код частного приложения и библиотеки.pkg
: код библиотеки, безопасный для использования внешними приложениями.api
: API, протоколы и схемы.scripts
: скрипты для выполнения различных задач.test
: дополнительные внешние тестовые приложения и тестовые данные.
В файле main.go
под cmd/app
напишите простое «Привет, мир!» программа для проверки что все работает:
package main import "fmt" func main() { fmt.Println("Hello, world!") }
Запустите программу с помощью (или Ctrl + Shift + D — Запустить и отладить в VSCode):
go run ./cmd/app
1.6 Настройка клиентского приложения React TypeScript
Во-первых, давайте создадим новый каталог для внешнего интерфейса из корневого каталога:
mkdir cgo_frontend cd cgo_frontend
Установить yarn:
npm install --global yarn
Далее мы создадим наше приложение React с помощью TypeScript:
npx create-react-app . --template typescript
Для отправки HTTP-запросов мы будем использовать пакет axios
. Для компонентов пользовательского интерфейса мы будем использовать Ant Design
. Установите их с помощью:
npm install axios antd
Структура вашего проекта будет выглядеть примерно так:
/cgo_frontend /public /src /components /services App.tsx index.tsx package.json
public
: содержит файл HTML и общедоступные ресурсы, которые отображаются на веб-странице.src
: содержит код React.components
: Содержит отдельные компоненты пользовательского интерфейса.services
: Обрабатывает вызовы API к серверной части.
Давайте создадим простое «Hello, world!» в нашем файле App.tsx
.
import React from 'react'; import { Typography } from 'antd'; const { Title } = Typography; const App: React.FC = () => { return ( <div className="App"> <Title>Hello, World!</Title> </div> ); } export default App;
Запустите приложение React с помощью:
npm start
Теперь приложение React должно работать на http://localhost:3000
.
* Настройка ESlint и Prettier
Я использовал это👉 «React Hero: Настройка ESlint для приложения TypeScript + React | Ти Тран | Крошка Со | Середина"
1.7 Настройка непрерывной интеграции с действиями GitHub
В репозитории GitHub создайте новый каталог .github/workflows
. В этом каталоге создайте новый файл build.yml
. Этот файл будет определять наш рабочий процесс GitHub Actions для запуска тестов каждый раз, когда код помещается в репозиторий.
Зафиксируйте и отправьте этот файл в репозиторий GitHub. Теперь GitHub будет автоматически запускать вашу сборку каждый раз, когда вы отправляете ее в репозиторий (ветки: основная, основная или разработка).
В следующих разделах мы начнем разработку нашего бэкэнда и внешнего интерфейса, написание кода, тестов и подробное описание процесса шаг за шагом. Следите за обновлениями!
Спасибо за внимание!
Вы можете получить полный доступ ко всем историям на Medium всего за 5 долларов в месяц, зарегистрировавшись по этой ссылке.
Повышение уровня кодирования
Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:
- 👏 Хлопайте за историю и подписывайтесь на автора 👉
- 📰 Смотрите больше контента в публикации Level Up Coding
- 💰 Бесплатный курс собеседования по программированию ⇒ Просмотреть курс
- 🔔 Подписывайтесь на нас: Twitter | ЛинкедИн | "Новостная рассылка"
🚀👉 Присоединяйтесь к коллективу талантов Level Up и найдите прекрасную работу