ваше сообщение коммита

This commit is contained in:
2025-04-21 10:40:57 +03:00
parent f371521511
commit 16c3534239
22 changed files with 637 additions and 84 deletions

3
frontend/.env.example Normal file
View File

@@ -0,0 +1,3 @@
VITE_APP_ETHEREUM_NETWORK_URL=https://your-ethereum-network-url
VITE_API_URL=http://localhost:8000

63
frontend/.gitignore vendored
View File

@@ -1,23 +1,7 @@
# Зависимости
node_modules/
yarn-error.log
# Переменные окружения
.env
.env.local
.env.development
.env.test
.env.production
# Сборка
dist/
dist-ssr/
build/
# Кэш
.cache/
.temp/
.vite/
/.pnp
.pnp.js
# Логи
logs/
@@ -25,21 +9,36 @@ logs/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Файлы IDE
.idea/
.vscode/*
!.vscode/extensions.json
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# Файлы окружения
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
# Системные файлы
# Кэши и временные файлы
.cache/
.temp/
.DS_Store
Thumbs.db
.idea/
.vscode/
*.swp
*.swo
# Локальные файлы
*.local
# Файлы сборки
/dist
/dist-ssr
/build
*.local
# Тесты
/coverage
# Приватные ключи и сертификаты
*.pem
*.key
# Локальные настройки
.prettierrc.local
.eslintrc.local

21
frontend/Dockerfile Normal file
View File

@@ -0,0 +1,21 @@
FROM node:20-alpine
WORKDIR /app
# Устанавливаем дополнительные зависимости
RUN apk add --no-cache python3 make g++
# Копируем package.json и yarn.lock для установки зависимостей
COPY package.json yarn.lock ./
# Устанавливаем зависимости
RUN yarn install --frozen-lockfile
# Копируем остальные файлы проекта
COPY . .
# Экспозим порт
EXPOSE 5173
# Команда запуска по умолчанию
CMD ["yarn", "run", "dev"]

28
frontend/nginx.conf Normal file
View File

@@ -0,0 +1,28 @@
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html;
# Поддержка SPA (Single Page Application)
location / {
try_files $uri $uri/ /index.html;
}
# Настройка кеширования для статических файлов
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
# Настройка для API запросов на бэкенд
location /api/ {
proxy_pass http://backend:8000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

View File

@@ -1,8 +1,18 @@
import axios from 'axios';
// Определяем baseURL в зависимости от окружения
const getBaseUrl = () => {
// В браузере используем localhost
if (typeof window !== 'undefined' && window.location.hostname === 'localhost') {
return 'http://localhost:8000';
}
// В других случаях используем переменную окружения
return import.meta.env.VITE_API_URL || '';
};
// Создаем экземпляр axios с базовым URL
const api = axios.create({
baseURL: import.meta.env.VITE_API_URL || '',
baseURL: getBaseUrl(),
withCredentials: true,
headers: {
'Content-Type': 'application/json'

View File

@@ -7,7 +7,9 @@ import router from './router';
import axios from 'axios';
// Настройка axios
axios.defaults.baseURL = import.meta.env.VITE_API_URL || '';
// В Docker контейнере localhost:8000 не работает, поэтому используем явное значение
const apiUrl = window.location.hostname === 'localhost' ? 'http://localhost:8000' : import.meta.env.VITE_API_URL;
axios.defaults.baseURL = apiUrl;
axios.defaults.withCredentials = true;
// Создаем и монтируем приложение Vue
@@ -25,7 +27,7 @@ app.use(router);
// ]).catch(err => console.error('Failed to load API mocks:', err));
// }
console.log('API URL:', import.meta.env.VITE_API_URL);
console.log('API URL:', apiUrl);
console.log('main.js: Starting application with router');
app.mount('#app');