Compare commits

...

9 Commits

Author SHA1 Message Date
kolaente 8013138118
chore(ci): sign drone config 2025-03-02 16:08:01 +01:00
Marc e20ca4654f cleanup netlify.toml + add logging 2025-03-02 11:17:26 +01:00
jyte e62a0b720b header change 2025-03-02 10:54:04 +01:00
jyte 3d5a8bd31b debug header 2025-03-02 10:54:04 +01:00
jyte bdf5143165 test new netlify config 2025-03-02 10:54:04 +01:00
jyte 5f8f640588 use demo backend by default 2025-03-02 10:54:04 +01:00
jyte 9be6924216 Do not return 200 all the time 2025-03-02 10:54:04 +01:00
jyte 21f4fb8d99 fix ci&cd 2025-03-02 10:54:04 +01:00
Marc 8d1383cdaa better dev setup 2025-03-02 10:54:04 +01:00
6 changed files with 50 additions and 13 deletions

View File

@ -458,8 +458,6 @@ steps:
commands: commands:
- cd frontend - cd frontend
- cp -r dist-test dist-preview - cp -r dist-test dist-preview
# Override the default api url used for preview
- sed -i 's|http://localhost:3456|https://try.vikunja.io|g' dist-preview/index.html
# create via: # create via:
# `shasum -a 384 ./scripts/deploy-preview-netlify.mjs > ./scripts/deploy-preview-netlify.mjs.sha384` # `shasum -a 384 ./scripts/deploy-preview-netlify.mjs > ./scripts/deploy-preview-netlify.mjs.sha384`
- shasum -a 384 -c ./scripts/deploy-preview-netlify.mjs.sha384 - shasum -a 384 -c ./scripts/deploy-preview-netlify.mjs.sha384
@ -961,7 +959,6 @@ steps:
- pnpm install --fetch-timeout 100000 --frozen-lockfile - pnpm install --fetch-timeout 100000 --frozen-lockfile
- pnpm run lint - pnpm run lint
- pnpm run build - pnpm run build
- sed -i 's/http\:\\/\\/localhost\\:3456\\/api\\/v1/\\/api\\/v1/g' dist/index.html # Override the default api url used for developing
- name: static - name: static
image: kolaente/zip image: kolaente/zip
@ -1020,7 +1017,6 @@ steps:
- npm install -g corepack && corepack enable && pnpm config set store-dir .cache/pnpm - npm install -g corepack && corepack enable && pnpm config set store-dir .cache/pnpm
- pnpm install --fetch-timeout 100000 --frozen-lockfile - pnpm install --fetch-timeout 100000 --frozen-lockfile
- pnpm run build - pnpm run build
- sed -i 's/http\:\\/\\/localhost\\:3456\\/api\\/v1/\\/api\\/v1/g' dist/index.html # Override the default api url used for developing
- name: static - name: static
image: kolaente/zip image: kolaente/zip
@ -1189,6 +1185,6 @@ steps:
--- ---
kind: signature kind: signature
hmac: df9858e2b37dfddccd4892f007bbe69a61321352e94ebcf6adf82fa6560665bb hmac: fa5f7e841a6a53e16c02c9f1d677c9828e03c5672525221324d43c688a0a2b21
... ...

View File

@ -10,3 +10,5 @@
# SENTRY_ORG=vikunja # SENTRY_ORG=vikunja
# SENTRY_PROJECT=frontend-oss # SENTRY_PROJECT=frontend-oss
# VIKUNJA_FRONTEND_BASE=/custom-subpath # VIKUNJA_FRONTEND_BASE=/custom-subpath
# DEV_PROXY=http://vikunja-backend.domain.tld

View File

@ -22,7 +22,7 @@
// This variable points the frontend to the api. // This variable points the frontend to the api.
// It has to be the full url, including the last /api/v1 part and port. // It has to be the full url, including the last /api/v1 part and port.
// You can change this if your api is not reachable on the same port as the frontend. // You can change this if your api is not reachable on the same port as the frontend.
window.API_URL = 'http://localhost:3456/api/v1' window.API_URL = '/api/v1'
</script> </script>
</body> </body>
</html> </html>

View File

@ -2,6 +2,12 @@
command = "pnpm run build" command = "pnpm run build"
publish = "dist-preview" publish = "dist-preview"
[[redirects]]
from = "/api/*"
to = "https://try.vikunja.io/api/:splat"
status = 200
force = true
[[redirects]] [[redirects]]
from = "/*" from = "/*"
to = "/index.html" to = "/index.html"
@ -10,6 +16,6 @@
[[headers]] [[headers]]
for = "/*" for = "/*"
[headers.values] [headers.values]
X-Frame-Options = "DENY" X-Frame-Options = "DENY"
X-XSS-Protection = "1; mode=block" X-XSS-Protection = "1; mode=block"
X-Robots-Tag = "noindex" X-Robots-Tag = "noindex"

View File

@ -20,7 +20,8 @@ export class InvalidApiUrlProvidedError extends Error {
} }
} }
export const checkAndSetApiUrl = (url: string | undefined | null): Promise<string> => { export const checkAndSetApiUrl = (pUrl: string | undefined | null): Promise<string> => {
let url = pUrl
if (url === '' || url === null || typeof url === 'undefined') { if (url === '' || url === null || typeof url === 'undefined') {
throw new NoApiUrlProvidedError() throw new NoApiUrlProvidedError()
} }
@ -55,6 +56,7 @@ export const checkAndSetApiUrl = (url: string | undefined | null): Promise<strin
// Check if the api is reachable at the provided url // Check if the api is reachable at the provided url
return configStore.update() return configStore.update()
.catch(e => { .catch(e => {
console.warn(`Could not fetch 'info' from the provided endpoint ${pUrl} on ${window.API_URL}/info. Some automatic fallback will be tried.`)
// Check if it is reachable at /api/v1 and http // Check if it is reachable at /api/v1 and http
if ( if (
!urlToCheck.pathname.endsWith('/api/v1') && !urlToCheck.pathname.endsWith('/api/v1') &&

View File

@ -66,12 +66,24 @@ function createFontMatcher(fontNames: string[]) {
} }
// https://vitejs.dev/config/ // https://vitejs.dev/config/
export default defineConfig(({mode}) => { export default defineConfig(({command, mode}) => {
// Load env file based on `mode` in the current working directory. // Load env file based on `mode` in the current working directory.
// Set the third parameter to '' to load all env regardless of the `VITE_` prefix. // Set the third parameter to '' to load all env regardless of the `VITE_` prefix.
// https://vitejs.dev/config/#environment-variables // https://vitejs.dev/config/#environment-variables
const env = loadEnv(mode, process.cwd(), '') const env = loadEnv(mode, process.cwd(), '')
switch (command) {
case 'serve':
// this is DEV mode
return getServeConfig(env)
// return getBuildConfig(env)
case 'build':
// build for prodution
return getBuildConfig(env)
}
})
function getBuildConfig(env: Record<string, string>) {
return { return {
base: env.VIKUNJA_FRONTEND_BASE, base: env.VIKUNJA_FRONTEND_BASE,
// https://vitest.dev/config/ // https://vitest.dev/config/
@ -220,4 +232,23 @@ export default defineConfig(({mode}) => {
}, },
}, },
} }
}) }
function getServeConfig(env: Record<string, string>) {
// get some default settings from prod mod
const buildConfig = getBuildConfig(env)
// override prod settings with dev settings
return {
...buildConfig,
server: {
...buildConfig.server,
...(env.DEV_PROXY && { proxy: {
'/api': {
target: env.DEV_PROXY,
changeOrigin: true,
secure: false,
},
}}),
},
}
}