Веб приложение чата с бэкендом на Go и фронтендом на React.
chat-1/
├── backend/ # Go-сервер (API, WebSocket)
│ ├── main.go # Точка входа
│ ├── handlers.go # HTTP-обработчики
│ ├── models.go # Модели данных
│ ├── storage.go # Хранилище сообщений
│ ├── go.mod
│ └── go.sum
├── frontend/ # React + Vite
│ ├── src/
│ │ ├── api/ # API-клиент
│ │ ├── components/
│ │ ├── App.jsx
│ │ └── main.jsx
│ ├── index.html
│ ├── package.json
│ └── vite.config.js
├── .github/workflows/ # CI (бэкенд и фронтенд)
├── package.json # Корневой: скрипты для запуска всего
└── README.md
- Go 1.23+
- Node.js 16+
- npm
-
Зависимости бэкенда:
cd backend && go mod download && cd ..
Если Go не установлен:
brew install go -
Зависимости фронтенда и корневые (для
dev:all):npm install cd frontend && npm install && cd ..
-
Запуск бэкенда и фронтенда одним скриптом:
npm run dev:all
- Бэкенд:
http://localhost:8080 - Фронтенд:
http://localhost:3000
- Бэкенд:
Откройте в браузере http://localhost:3000.
- Только бэкенд:
npm run dev:backendилиcd backend && go run . - Только фронтенд:
npm run dev:frontendилиcd frontend && npm run dev
- Фронтенд:
npm run buildилиcd frontend && npm run build - Бэкенд:
npm run build:backendилиcd backend && go build -o chat-backend .
Получить все сообщения.
Отправить сообщение. Тело: {"username": "...", "text": "..."}.
Получить сообщение по ID.
Удалить сообщение по ID.
Подключение к ws://localhost:8080/ws для сообщений в реальном времени. При подключении клиент получает все текущие сообщения; новые рассылаются автоматически.
GET /health — ответ {"status":"ok"}.
- Бэкенд: Go 1.23, net/http, gorilla/websocket
- Фронтенд: React 18, Vite 5, axios
- Сообщения хранятся в памяти и теряются при перезапуске сервера.
- В режиме разработки Vite проксирует
/apiи/wsна бэкенд (порт 8080).