add actions

This commit is contained in:
Alexander Medvedev 2026-03-21 19:28:47 +01:00
parent 84491ad413
commit 96b9c50dd0
5 changed files with 83 additions and 4 deletions

24
.gitignore vendored Normal file
View File

@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

View File

@ -16,7 +16,7 @@ export default defineConfig([
reactRefresh.configs.vite, reactRefresh.configs.vite,
], ],
languageOptions: { languageOptions: {
ecmaVersion: 2024, ecmaVersion: 2025,
globals: globals.browser, globals: globals.browser,
}, },
}, },

View File

@ -10,6 +10,18 @@
<title>Pumpkin Market</title> <title>Pumpkin Market</title>
</head> </head>
<body> <body>
<script
async
src="https://www.googletagmanager.com/gtag/js?id=G-QK7NXQQ2ZP"
></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag("js", new Date());
gtag("config", "G-QK7NXQQ2ZP");
</script>
<div id="root"></div> <div id="root"></div>
<script type="module" src="/src/main.tsx"></script> <script type="module" src="/src/main.tsx"></script>
</body> </body>

View File

@ -3,7 +3,7 @@ import { Link } from 'react-router-dom';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import api from '../api'; import api from '../api';
const API_URL = 'http://localhost:5000'; const ASSETS_URL = import.meta.env.VITE_ASSETS_BASE_URL || 'https://assets.pumpkinmc.org/icons';
const Home = () => { const Home = () => {
const { t, i18n } = useTranslation(); const { t, i18n } = useTranslation();
@ -243,17 +243,24 @@ const Home = () => {
const priceInfo = getEffectivePrice(plugin); const priceInfo = getEffectivePrice(plugin);
const isSale = plugin.type === 'paid' && priceInfo.isSale; const isSale = plugin.type === 'paid' && priceInfo.isSale;
const imageUrl = plugin.preview_path;
console.log(imageUrl);
return ( return (
<Link to={`/plugin/${plugin.id}`} key={plugin.id} className="plugin-card-link"> <Link to={`/plugin/${plugin.id}`} key={plugin.id} className="plugin-card-link">
<div className="plugin-card-v2"> <div className="plugin-card-v2">
{/* Preview image */} {/* Preview image */}
<div className="pcv2-preview"> <div className="pcv2-preview">
{plugin.preview_path ? ( {imageUrl ? (
<img <img
className="pcv2-preview-img" className="pcv2-preview-img"
src={plugin.preview_path} src={imageUrl}
alt={plugin.name} alt={plugin.name}
onError={(e) => {
// Fallback if image 404s
(e.target as HTMLImageElement).style.display = 'none';
}}
/> />
) : ( ) : (
<div <div

View File

@ -0,0 +1,36 @@
name: Deploy React Frontend
on:
push:
branches: [ master ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
cache: 'npm'
- name: Install Dependencies
run: npm install
- name: Build Project
run: npm run build
- name: Deploy Static Files to VPS
uses: appleboy/scp-action@v1.0.0
with:
host: ${{ secrets.VPS_IP }}
username: ${{ secrets.VPS_USER }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: ${{ secrets.VPS_PORT }}
source: "dist/*"
target: "/var/www/market/frontend/"
strip_components: 1
overwrite: true