wrongmove/frontend
Viktor Barzin 9bb5320e2b wrongmove: write VITE_MAPBOX_TOKEN to .env.production in CI (replaces broken build_args)
The previous attempt passed the Mapbox token via `--build-arg`, but
the docker-buildx plugin's KEY=VALUE list-parser mangled the value
(the rendered command was `--build-arg *=VITE_MAPBOX_TOKEN=********`,
key got lost). Inspecting `viktorbarzin/immoweb:45` confirmed
`pk.eyJ...` was nowhere in the bundle.

Switching to the idiomatic Vite path: a new `prepare-frontend-env`
commands step writes `frontend/.env.production` from the
`wrongmove-mapbox-token` Woodpecker secret. `COPY . .` in the
Dockerfile pulls the file into the build context, and Vite
auto-loads `.env.production` during `npx vite build`.

Net diff:
- `.woodpecker/frontend.yml`: new prepare step, build step now
  depends on it, dropped the build_args line.
- `frontend/Dockerfile`: dropped the ARG/ENV lines (no longer needed,
  also silences `SecretsUsedInArgOrEnv` linter warning).
- `frontend/.gitignore`: ignore `.env.production` / `.env.local` so
  the CI-written file never gets accidentally committed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-15 22:10:25 +00:00
..
public Move hexgrid heatmap computation to Web Worker 2026-02-22 15:04:37 +00:00
src wrongmove: round-3 fix sweep — scrape pipeline, BUY tab, filter URL state, render hygiene, map polish 2026-05-10 22:27:29 +00:00
.dockerignore Expand frontend .dockerignore to exclude build artifacts 2026-02-21 19:51:04 +00:00
.env.sample Flatten repo structure: move crawler/ to root, remove vqa/ and immoweb/ 2026-02-07 23:01:20 +00:00
.gitignore wrongmove: write VITE_MAPBOX_TOKEN to .env.production in CI (replaces broken build_args) 2026-05-15 22:10:25 +00:00
Caddyfile.dev Flatten repo structure: move crawler/ to root, remove vqa/ and immoweb/ 2026-02-07 23:01:20 +00:00
components.json Flatten repo structure: move crawler/ to root, remove vqa/ and immoweb/ 2026-02-07 23:01:20 +00:00
Dockerfile wrongmove: write VITE_MAPBOX_TOKEN to .env.production in CI (replaces broken build_args) 2026-05-15 22:10:25 +00:00
eslint.config.js Flatten repo structure: move crawler/ to root, remove vqa/ and immoweb/ 2026-02-07 23:01:20 +00:00
index.html Move hexgrid heatmap computation to Web Worker 2026-02-22 15:04:37 +00:00
nginx.conf Fix stale browser cache after redeployment with proper nginx cache headers 2026-02-08 22:51:11 +00:00
package-lock.json chore: add react-router-dom dependency for URL-based navigation 2026-02-28 15:58:39 +00:00
package.json chore: add react-router-dom dependency for URL-based navigation 2026-02-28 15:58:39 +00:00
README.md Flatten repo structure: move crawler/ to root, remove vqa/ and immoweb/ 2026-02-07 23:01:20 +00:00
start.sh Flatten repo structure: move crawler/ to root, remove vqa/ and immoweb/ 2026-02-07 23:01:20 +00:00
tsconfig.app.json Move hexgrid heatmap computation to Web Worker 2026-02-22 15:04:37 +00:00
tsconfig.app.tsbuildinfo wrongmove: guard property cards against null backend fields (fix BUY crash) 2026-05-10 21:17:41 +00:00
tsconfig.json Flatten repo structure: move crawler/ to root, remove vqa/ and immoweb/ 2026-02-07 23:01:20 +00:00
tsconfig.node.json Remove JS obfuscator that broke Mapbox GL map rendering 2026-02-08 22:47:01 +00:00
tsconfig.node.tsbuildinfo Flatten repo structure: move crawler/ to root, remove vqa/ and immoweb/ 2026-02-07 23:01:20 +00:00
vite.config.ts Remove JS obfuscator that broke Mapbox GL map rendering 2026-02-08 22:47:01 +00:00
vitest.config.ts Fix frontend CI pipeline OOM kills and test timeouts 2026-02-17 21:46:29 +00:00

React + TypeScript + Vite

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.

Currently, two official plugins are available:

Expanding the ESLint configuration

If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:

export default tseslint.config({
  extends: [
    // Remove ...tseslint.configs.recommended and replace with this
    ...tseslint.configs.recommendedTypeChecked,
    // Alternatively, use this for stricter rules
    ...tseslint.configs.strictTypeChecked,
    // Optionally, add this for stylistic rules
    ...tseslint.configs.stylisticTypeChecked,
  ],
  languageOptions: {
    // other options...
    parserOptions: {
      project: ['./tsconfig.node.json', './tsconfig.app.json'],
      tsconfigRootDir: import.meta.dirname,
    },
  },
})

You can also install eslint-plugin-react-x and eslint-plugin-react-dom for React-specific lint rules:

// eslint.config.js
import reactX from 'eslint-plugin-react-x'
import reactDom from 'eslint-plugin-react-dom'

export default tseslint.config({
  plugins: {
    // Add the react-x and react-dom plugins
    'react-x': reactX,
    'react-dom': reactDom,
  },
  rules: {
    // other rules...
    // Enable its recommended typescript rules
    ...reactX.configs['recommended-typescript'].rules,
    ...reactDom.configs.recommended.rules,
  },
})