._.
4
.gitignore
vendored
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
# dependencies
|
# dependencies
|
||||||
/node_modules
|
/node_modules
|
||||||
|
node_modules/
|
||||||
/.pnp
|
/.pnp
|
||||||
.pnp.js
|
.pnp.js
|
||||||
|
|
||||||
@ -10,6 +11,7 @@
|
|||||||
|
|
||||||
# production
|
# production
|
||||||
/build
|
/build
|
||||||
|
build/
|
||||||
|
|
||||||
# misc
|
# misc
|
||||||
.DS_Store
|
.DS_Store
|
||||||
@ -21,5 +23,3 @@
|
|||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
|
|
||||||
.env
|
|
||||||
2
app/.env
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
REACT_APP_LOGISTICS_API_URL=https://api.logistics.numerum.site/api
|
||||||
|
REACT_APP_API_KEY=d101001e-49f5-4a17-ac39-2d67f64b3f9b
|
||||||
0
package-lock.json → app/package-lock.json
generated
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 168 KiB After Width: | Height: | Size: 168 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 484 KiB After Width: | Height: | Size: 484 KiB |
|
Before Width: | Height: | Size: 646 B After Width: | Height: | Size: 646 B |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
0
src/App.jsx → app/src/App.jsx
Executable file → Normal file
0
src/AppRouter.jsx → app/src/AppRouter.jsx
Executable file → Normal file
0
src/api.jsx → app/src/api.jsx
Executable file → Normal file
0
src/index.jsx → app/src/index.jsx
Executable file → Normal file
13
docker-compose.yaml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
react-app:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
ports:
|
||||||
|
- "5003:3000"
|
||||||
|
environment:
|
||||||
|
- CHOKIDAR_USEPOLLING=true
|
||||||
|
- REACT_APP_LOGISTICS_API_URL=your_api_url
|
||||||
|
- REACT_APP_API_KEY=your_react_app_api_key
|
||||||
120
readme.md
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
# P.S.
|
||||||
|
|
||||||
|
Это WEB часть проекта, разработанный командой Numerum для хакатона [кодиндустрии.рф](кодиндустрии.рф).
|
||||||
|
|
||||||
|
# ВНИМАНИЕ
|
||||||
|
|
||||||
|
Проект запущен на сервере и доступен по адресу:
|
||||||
|
https://logistics.numerum.team
|
||||||
|
Данные для авторизации представлены ниже.
|
||||||
|
|
||||||
|
API проекта также развернуто на сервере, документация доступна
|
||||||
|
по адресу:
|
||||||
|
https://api.logistics.numerum.team/docs
|
||||||
|
|
||||||
|
# Инструкция по запуску API и веб-приложения
|
||||||
|
|
||||||
|
## Описание
|
||||||
|
|
||||||
|
Этот проект состоит из двух основных компонентов: API, написанного на FastAPI, и веб-приложения, разработанного с
|
||||||
|
использованием React.
|
||||||
|
|
||||||
|
### API
|
||||||
|
|
||||||
|
Структура API выглядит следующим образом:
|
||||||
|
|
||||||
|
```
|
||||||
|
.
|
||||||
|
├── core
|
||||||
|
│ ├── entities
|
||||||
|
│ └── usecases
|
||||||
|
├── infrastructure
|
||||||
|
│ ├── database
|
||||||
|
│ └── fastapi
|
||||||
|
├── __init__.py
|
||||||
|
└── main.py
|
||||||
|
```
|
||||||
|
|
||||||
|
* core: содержит бизнес-логику и сущности.
|
||||||
|
* infrastructure: отвечает за взаимодействие с базой данных и определение маршрутов FastAPI.
|
||||||
|
* main.py: основной файл для запуска приложения.
|
||||||
|
|
||||||
|
## Веб-приложение
|
||||||
|
|
||||||
|
```
|
||||||
|
.
|
||||||
|
├── package.json
|
||||||
|
├── public
|
||||||
|
│ └── index.html
|
||||||
|
└── src
|
||||||
|
├── api.jsx
|
||||||
|
├── App.jsx
|
||||||
|
├── AuthContext.jsx
|
||||||
|
└── components
|
||||||
|
└── pages
|
||||||
|
```
|
||||||
|
|
||||||
|
* src: содержит код приложения, включая компоненты и страницы.
|
||||||
|
* api.jsx: файл для определения API-запросов.
|
||||||
|
* App.jsx: главный компонент приложения.
|
||||||
|
|
||||||
|
## Запуск API
|
||||||
|
|
||||||
|
1. Убедитесь, что у вас установлен Python 3.12 или выше.
|
||||||
|
2. Установите необходимые зависимости с помощью pip:
|
||||||
|
```pip install -r requirements.txt```
|
||||||
|
3. Запустите API с помощью следующей команды:
|
||||||
|
```uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload```
|
||||||
|
|
||||||
|
Это запустит API на http://localhost:8000.
|
||||||
|
|
||||||
|
### ВНИМАНИЕ!!!
|
||||||
|
|
||||||
|
[Файл](API/.env) с данными для подключения к моей базе на сервере должен лежать внутри папки [app](API/app).
|
||||||
|
Если библиотеки скачаны правильно и виртуальное окружение настроено, АПИ подключится к базе самостоятельно.
|
||||||
|
|
||||||
|
# Запуск веб-приложения
|
||||||
|
|
||||||
|
1. Убедитесь, что у вас установлен Node.js и npm.
|
||||||
|
2. Перейдите в папку веб-приложения и установите зависимости:
|
||||||
|
|
||||||
|
```
|
||||||
|
cd <путь_к_вашему_веб_приложению>
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Запустите веб-приложение с помощью команды:
|
||||||
|
|
||||||
|
```
|
||||||
|
npm start
|
||||||
|
```
|
||||||
|
|
||||||
|
Это запустит приложение на http://localhost:3000.
|
||||||
|
|
||||||
|
# Использование
|
||||||
|
|
||||||
|
После запуска обеих частей проекта, вы сможете взаимодействовать с API через веб-приложение. Просто откройте ваш браузер
|
||||||
|
и перейдите по адресу http://localhost:3000.
|
||||||
|
|
||||||
|
# Данные для авторизации
|
||||||
|
|
||||||
|
Login: ivan.petrov - администратор
|
||||||
|
Password: password123
|
||||||
|
|
||||||
|
Login: olga.ivanova
|
||||||
|
Password: securepass
|
||||||
|
|
||||||
|
Login: anton.sidorov
|
||||||
|
Password: mypassword
|
||||||
|
|
||||||
|
Login: maria.smirnova
|
||||||
|
Password: pass321
|
||||||
|
|
||||||
|
Login: dmitry.vasilev
|
||||||
|
Password: strongpass
|
||||||
|
|
||||||
|
# Демонстрация запуска и установки
|
||||||
|
|
||||||
|
Скачайте видео для просмотра демонстрации:
|
||||||
|
[Установка и запуск.mp4](%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0%20%D0%B8%20%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA.mp4)
|
||||||
|
|
||||||