Compare commits

..

2 Commits

Author SHA1 Message Date
valere
33a19090c6 templates: add features
All checks were successful
Deploy App / build (push) Successful in 28s
Deploy App / deploy (push) Successful in 14s
2025-10-11 21:38:47 +02:00
valere
04ebe02a05 NUXT: add build stage 2025-10-05 09:48:40 +02:00
10 changed files with 117 additions and 14 deletions

View File

@@ -2,14 +2,14 @@ name: Deploy App
on: [push] on: [push]
jobs: jobs:
deploy: build:
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
container: container:
volumes: volumes:
- /var/docker-web:/var/docker-web - /var/docker-web:/var/docker-web
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Deploy with docker-web - name: Prepare and build app
run: | run: |
REPO_NAME="${GITHUB_REPOSITORY##*/}" REPO_NAME="${GITHUB_REPOSITORY##*/}"
APP_DIR="/var/docker-web/apps/${REPO_NAME}" APP_DIR="/var/docker-web/apps/${REPO_NAME}"
@@ -19,4 +19,17 @@ jobs:
cp -a $(find . -mindepth 1 -maxdepth 1 ! -name '.git' ! -name 'node_modules') "$APP_DIR/" cp -a $(find . -mindepth 1 -maxdepth 1 ! -name '.git' ! -name 'node_modules') "$APP_DIR/"
export COMPOSE_BAKE=false export COMPOSE_BAKE=false
docker rmi "local/${REPO_NAME}" 2>/dev/null || true docker rmi "local/${REPO_NAME}" 2>/dev/null || true
bash /var/docker-web/src/cli.sh build "${REPO_NAME}"
deploy:
runs-on: ubuntu-22.04
needs: build
container:
volumes:
- /var/docker-web:/var/docker-web
steps:
- uses: actions/checkout@v4
- name: Deploy with docker-web
run: |
REPO_NAME="${GITHUB_REPOSITORY##*/}"
bash /var/docker-web/src/cli.sh up "${REPO_NAME}" bash /var/docker-web/src/cli.sh up "${REPO_NAME}"

8
.prettierrc Normal file
View File

@@ -0,0 +1,8 @@
{
"semi": false,
"singleQuote": true,
"tabWidth": 2,
"trailingComma": "none",
"printWidth": 100
}

View File

@@ -1,5 +1,7 @@
{ {
"editor.codeActionsOnSave": { "editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit" "source.fixAll.eslint": "explicit"
} },
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
} }

View File

@@ -1,6 +1,6 @@
<template> <template>
<h1 class="flex flex-col gap-y-4 items-center justify-center flex items-center justify-center min-h-screen"> <h1 class="flex flex-col gap-y-4 items-center justify-center flex items-center justify-center min-h-screen">
<img src="/logo.svg"> <img src="/logo.svg" />
<div class="absolute top-4 right-4"> <div class="absolute top-4 right-4">
<button class="block p-4 bg-black text-slate-400" @click="store.addData()">add to 🍍</button> <button class="block p-4 bg-black text-slate-400" @click="store.addData()">add to 🍍</button>
<pre> <pre>

View File

@@ -1,4 +0,0 @@
export REPO_NAME="app-name"
export DOMAIN="app-name.$MAIN_DOMAIN"
export PORT="7903"
export PORT_EXPOSED="3000"

View File

@@ -9,8 +9,6 @@ services:
working_dir: /app working_dir: /app
ports: ports:
- "${PORT}:${PORT_EXPOSED}" - "${PORT}:${PORT_EXPOSED}"
volumes:
- "${MEDIA_DIR}:/mnt/media"
environment: environment:
VIRTUAL_HOST: "${DOMAIN}" VIRTUAL_HOST: "${DOMAIN}"
LETSENCRYPT_HOST: "${DOMAIN}" LETSENCRYPT_HOST: "${DOMAIN}"

View File

@@ -1,6 +1,7 @@
// @ts-check // @ts-check
import withNuxt from './.nuxt/eslint.config.mjs' import withNuxt from './.nuxt/eslint.config.mjs'
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'
export default withNuxt( export default withNuxt(
// Your custom configs here [eslintPluginPrettierRecommended]
) )

View File

@@ -6,4 +6,4 @@ export default defineNuxtConfig({
pinia: { pinia: {
storesDirs: ['./stores/**'], storesDirs: ['./stores/**'],
}, },
}) })

View File

@@ -8,7 +8,10 @@
"generate": "nuxt generate", "generate": "nuxt generate",
"preview": "nuxt preview", "preview": "nuxt preview",
"postinstall": "nuxt prepare", "postinstall": "nuxt prepare",
"test": "vitest run" "lint": "eslint .",
"lint:fix": "eslint . --fix",
"format": "prettier --check .",
"format:fix": "prettier --write ."
}, },
"dependencies": { "dependencies": {
"@nuxt/eslint": "1.9.0", "@nuxt/eslint": "1.9.0",
@@ -23,5 +26,10 @@
"engines": { "engines": {
"pnpm": ">=10 <11" "pnpm": ">=10 <11"
}, },
"packageManager": "pnpm@10.14.0+sha512.ad27a79641b49c3e481a16a805baa71817a04bbe06a38d17e60e2eaee83f6a146c6a688125f5792e48dd5ba30e7da52a5cda4c3992b9ccf333f9ce223af84748" "packageManager": "pnpm@10.14.0+sha512.ad27a79641b49c3e481a16a805baa71817a04bbe06a38d17e60e2eaee83f6a146c6a688125f5792e48dd5ba30e7da52a5cda4c3992b9ccf333f9ce223af84748",
"devDependencies": {
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.5.4",
"prettier": "3.6.2"
}
} }

77
pnpm-lock.yaml generated
View File

@@ -32,6 +32,16 @@ importers:
vue-router: vue-router:
specifier: ^4.5.1 specifier: ^4.5.1
version: 4.5.1(vue@3.5.18(typescript@5.9.2)) version: 4.5.1(vue@3.5.18(typescript@5.9.2))
devDependencies:
eslint-config-prettier:
specifier: ^10.1.8
version: 10.1.8(eslint@9.33.0(jiti@2.5.1))
eslint-plugin-prettier:
specifier: ^5.5.4
version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.33.0(jiti@2.5.1)))(eslint@9.33.0(jiti@2.5.1))(prettier@3.6.2)
prettier:
specifier: 3.6.2
version: 3.6.2
packages: packages:
@@ -1154,6 +1164,10 @@ packages:
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'} engines: {node: '>=14'}
'@pkgr/core@0.2.9':
resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==}
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
'@polka/url@1.0.0-next.29': '@polka/url@1.0.0-next.29':
resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
@@ -2431,6 +2445,12 @@ packages:
peerDependencies: peerDependencies:
eslint: ^9.5.0 eslint: ^9.5.0
eslint-config-prettier@10.1.8:
resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==}
hasBin: true
peerDependencies:
eslint: '>=7.0.0'
eslint-flat-config-utils@2.1.1: eslint-flat-config-utils@2.1.1:
resolution: {integrity: sha512-K8eaPkBemHkfbYsZH7z4lZ/tt6gNSsVh535Wh9W9gQBS2WjvfUbbVr2NZR3L1yiRCLuOEimYfPxCxODczD4Opg==} resolution: {integrity: sha512-K8eaPkBemHkfbYsZH7z4lZ/tt6gNSsVh535Wh9W9gQBS2WjvfUbbVr2NZR3L1yiRCLuOEimYfPxCxODczD4Opg==}
@@ -2477,6 +2497,20 @@ packages:
peerDependencies: peerDependencies:
eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 eslint: ^7.0.0 || ^8.0.0 || ^9.0.0
eslint-plugin-prettier@5.5.4:
resolution: {integrity: sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
'@types/eslint': '>=8.0.0'
eslint: '>=8.0.0'
eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0'
prettier: '>=3.0.0'
peerDependenciesMeta:
'@types/eslint':
optional: true
eslint-config-prettier:
optional: true
eslint-plugin-regexp@2.10.0: eslint-plugin-regexp@2.10.0:
resolution: {integrity: sha512-ovzQT8ESVn5oOe5a7gIDPD5v9bCSjIFJu57sVPDqgPRXicQzOnYfFN21WoQBQF18vrhT5o7UMKFwJQVVjyJ0ng==} resolution: {integrity: sha512-ovzQT8ESVn5oOe5a7gIDPD5v9bCSjIFJu57sVPDqgPRXicQzOnYfFN21WoQBQF18vrhT5o7UMKFwJQVVjyJ0ng==}
engines: {node: ^18 || >=20} engines: {node: ^18 || >=20}
@@ -2591,6 +2625,9 @@ packages:
fast-deep-equal@3.1.3: fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
fast-diff@1.3.0:
resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
fast-fifo@1.3.2: fast-fifo@1.3.2:
resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
@@ -3952,6 +3989,15 @@ packages:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'} engines: {node: '>= 0.8.0'}
prettier-linter-helpers@1.0.0:
resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
engines: {node: '>=6.0.0'}
prettier@3.6.2:
resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==}
engines: {node: '>=14'}
hasBin: true
pretty-bytes@6.1.1: pretty-bytes@6.1.1:
resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==}
engines: {node: ^14.13.1 || >=16.0.0} engines: {node: ^14.13.1 || >=16.0.0}
@@ -4370,6 +4416,10 @@ packages:
engines: {node: '>=16'} engines: {node: '>=16'}
hasBin: true hasBin: true
synckit@0.11.11:
resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==}
engines: {node: ^14.18.0 || >=16.0.0}
system-architecture@0.1.0: system-architecture@0.1.0:
resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==}
engines: {node: '>=18'} engines: {node: '>=18'}
@@ -6132,6 +6182,8 @@ snapshots:
'@pkgjs/parseargs@0.11.0': '@pkgjs/parseargs@0.11.0':
optional: true optional: true
'@pkgr/core@0.2.9': {}
'@polka/url@1.0.0-next.29': {} '@polka/url@1.0.0-next.29': {}
'@poppinss/colors@4.1.5': '@poppinss/colors@4.1.5':
@@ -7424,6 +7476,10 @@ snapshots:
'@eslint/compat': 1.3.2(eslint@9.33.0(jiti@2.5.1)) '@eslint/compat': 1.3.2(eslint@9.33.0(jiti@2.5.1))
eslint: 9.33.0(jiti@2.5.1) eslint: 9.33.0(jiti@2.5.1)
eslint-config-prettier@10.1.8(eslint@9.33.0(jiti@2.5.1)):
dependencies:
eslint: 9.33.0(jiti@2.5.1)
eslint-flat-config-utils@2.1.1: eslint-flat-config-utils@2.1.1:
dependencies: dependencies:
pathe: 2.0.3 pathe: 2.0.3
@@ -7480,6 +7536,15 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.33.0(jiti@2.5.1)))(eslint@9.33.0(jiti@2.5.1))(prettier@3.6.2):
dependencies:
eslint: 9.33.0(jiti@2.5.1)
prettier: 3.6.2
prettier-linter-helpers: 1.0.0
synckit: 0.11.11
optionalDependencies:
eslint-config-prettier: 10.1.8(eslint@9.33.0(jiti@2.5.1))
eslint-plugin-regexp@2.10.0(eslint@9.33.0(jiti@2.5.1)): eslint-plugin-regexp@2.10.0(eslint@9.33.0(jiti@2.5.1)):
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.5.1)) '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.5.1))
@@ -7646,6 +7711,8 @@ snapshots:
fast-deep-equal@3.1.3: {} fast-deep-equal@3.1.3: {}
fast-diff@1.3.0: {}
fast-fifo@1.3.2: {} fast-fifo@1.3.2: {}
fast-glob@3.3.3: fast-glob@3.3.3:
@@ -9205,6 +9272,12 @@ snapshots:
prelude-ls@1.2.1: {} prelude-ls@1.2.1: {}
prettier-linter-helpers@1.0.0:
dependencies:
fast-diff: 1.3.0
prettier@3.6.2: {}
pretty-bytes@6.1.1: {} pretty-bytes@6.1.1: {}
process-nextick-args@2.0.1: {} process-nextick-args@2.0.1: {}
@@ -9659,6 +9732,10 @@ snapshots:
picocolors: 1.1.1 picocolors: 1.1.1
sax: 1.4.1 sax: 1.4.1
synckit@0.11.11:
dependencies:
'@pkgr/core': 0.2.9
system-architecture@0.1.0: {} system-architecture@0.1.0: {}
tailwind-config-viewer@2.0.4(tailwindcss@3.4.17): tailwind-config-viewer@2.0.4(tailwindcss@3.4.17):