19
.github/workflows/deploy.yml
vendored
Normal file
19
.github/workflows/deploy.yml
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
name: Deploy App
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-22.04
|
||||
needs: test
|
||||
container:
|
||||
volumes:
|
||||
- /var/docker-web:/var/docker-web
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Deploy with docker-web
|
||||
run: |
|
||||
APP_DIR=/var/docker-web/apps/${GITHUB_REPOSITORY##*/}
|
||||
mkdir -p $APP_DIR
|
||||
cp -a $(find . -mindepth 1 -maxdepth 1 ! -name '.git' ! -name 'node_modules') "$APP_DIR/"
|
||||
export COMPOSE_BAKE=false
|
||||
bash /var/docker-web/src/cli.sh up ${GITHUB_REPOSITORY##*/}
|
||||
24
.gitignore
vendored
Normal file
24
.gitignore
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
# Nuxt dev/build outputs
|
||||
.output
|
||||
.data
|
||||
.nuxt
|
||||
.nitro
|
||||
.cache
|
||||
dist
|
||||
|
||||
# Node dependencies
|
||||
node_modules
|
||||
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
|
||||
# Misc
|
||||
.DS_Store
|
||||
.fleet
|
||||
.idea
|
||||
|
||||
# Local env files
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
5
.vscode/settings.json
vendored
Normal file
5
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.fixAll.eslint": "explicit"
|
||||
}
|
||||
}
|
||||
22
Dockerfile
Normal file
22
Dockerfile
Normal file
@@ -0,0 +1,22 @@
|
||||
# Stage de build
|
||||
FROM node:20-alpine AS build
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN npm install -g pnpm
|
||||
COPY package.json pnpm-lock.yaml* ./
|
||||
RUN pnpm install --frozen-lockfile
|
||||
COPY . .
|
||||
RUN pnpm build
|
||||
|
||||
# Stage production
|
||||
FROM node:20-alpine
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
COPY --from=build /app/.output .output
|
||||
COPY --from=build /app/package.json ./
|
||||
COPY --from=build /app/node_modules ./node_modules
|
||||
|
||||
EXPOSE 3000
|
||||
CMD ["node", ".output/server/index.mjs"]
|
||||
75
README.md
Normal file
75
README.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# Nuxt Minimal Starter
|
||||
|
||||
Look at the [Nuxt documentation](https://nuxt.com/docs/getting-started/introduction) to learn more.
|
||||
|
||||
## Setup
|
||||
|
||||
Make sure to install dependencies:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm install
|
||||
|
||||
# pnpm
|
||||
pnpm install
|
||||
|
||||
# yarn
|
||||
yarn install
|
||||
|
||||
# bun
|
||||
bun install
|
||||
```
|
||||
|
||||
## Development Server
|
||||
|
||||
Start the development server on `http://localhost:3000`:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm run dev
|
||||
|
||||
# pnpm
|
||||
pnpm dev
|
||||
|
||||
# yarn
|
||||
yarn dev
|
||||
|
||||
# bun
|
||||
bun run dev
|
||||
```
|
||||
|
||||
## Production
|
||||
|
||||
Build the application for production:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm run build
|
||||
|
||||
# pnpm
|
||||
pnpm build
|
||||
|
||||
# yarn
|
||||
yarn build
|
||||
|
||||
# bun
|
||||
bun run build
|
||||
```
|
||||
|
||||
Locally preview production build:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm run preview
|
||||
|
||||
# pnpm
|
||||
pnpm preview
|
||||
|
||||
# yarn
|
||||
yarn preview
|
||||
|
||||
# bun
|
||||
bun run preview
|
||||
```
|
||||
|
||||
Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.
|
||||
3
app/app.vue
Normal file
3
app/app.vue
Normal file
@@ -0,0 +1,3 @@
|
||||
<template>
|
||||
<NuxtPage />
|
||||
</template>
|
||||
5
app/components/nuxt-template.vue
Normal file
5
app/components/nuxt-template.vue
Normal file
@@ -0,0 +1,5 @@
|
||||
<template>
|
||||
<h1 class="flex gap-y-4 items-center justify-center flex items-center justify-center min-h-screen">
|
||||
<img src="/logo.svg" />
|
||||
</h1>
|
||||
</template>
|
||||
3
app/pages/index.vue
Normal file
3
app/pages/index.vue
Normal file
@@ -0,0 +1,3 @@
|
||||
<template>
|
||||
<NuxtTemplate />
|
||||
</template>
|
||||
4
config.sh
Executable file
4
config.sh
Executable file
@@ -0,0 +1,4 @@
|
||||
export REPO_NAME="nuxtci"
|
||||
export DOMAIN="nuxtci.$MAIN_DOMAIN"
|
||||
export PORT="7903"
|
||||
export PORT_EXPOSED="3000"
|
||||
23
docker-compose.yml
Executable file
23
docker-compose.yml
Executable file
@@ -0,0 +1,23 @@
|
||||
services:
|
||||
__APP_NAME__:
|
||||
image: local/__APP_NAME__
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
container_name: __APP_NAME__
|
||||
restart: unless-stopped
|
||||
working_dir: /app
|
||||
ports:
|
||||
- "${PORT}:${PORT_EXPOSED}"
|
||||
volumes:
|
||||
- "${MEDIA_DIR}:/mnt/media"
|
||||
environment:
|
||||
VIRTUAL_HOST: "${DOMAIN}"
|
||||
LETSENCRYPT_HOST: "${DOMAIN}"
|
||||
PUID: "${PUID}"
|
||||
PGID: "${PGID}"
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: dockerweb
|
||||
external: true
|
||||
6
eslint.config.mjs
Normal file
6
eslint.config.mjs
Normal file
@@ -0,0 +1,6 @@
|
||||
// @ts-check
|
||||
import withNuxt from './.nuxt/eslint.config.mjs'
|
||||
|
||||
export default withNuxt(
|
||||
// Your custom configs here
|
||||
)
|
||||
48
logo.svg
Normal file
48
logo.svg
Normal file
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="25.31884mm"
|
||||
height="16.87923mm"
|
||||
viewBox="0 0 25.31884 16.87923"
|
||||
version="1.1"
|
||||
id="svg1"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
sodipodi:docname="logo.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview1"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#505050"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:zoom="0.79375"
|
||||
inkscape:cx="396.85039"
|
||||
inkscape:cy="561.25984"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1132"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs1" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<path
|
||||
fill="#00dc82"
|
||||
d="m 14.20412,16.87923 h 9.41203 c 0.29902,0 0.59263,-0.078 0.85156,-0.22609 a 1.6963627,1.6963627 0 0 0 0.62327,-0.61787 1.6761077,1.6761077 0 0 0 0.22786,-0.84404 1.6761077,1.6761077 0 0 0 -0.22863,-0.8438 L 18.76936,3.4964503 a 1.6963627,1.6963627 0 0 0 -0.62318,-0.61778 1.713242,1.713242 0 0 0 -0.85139,-0.22609 c -0.29884,0 -0.59246,0.0781 -0.8513,0.22618 a 1.6963627,1.6963627 0 0 0 -0.62318,0.61778 l -1.61619,2.77629 -3.16004,-5.42903003 A 1.6963627,1.6963627 0 0 0 10.42064,0.22602027 1.713242,1.713242 0 0 0 9.5691703,2.6800251e-7 c -0.29893,0 -0.59263,0.0780000019975 -0.85156,0.22610000199749 a 1.6963627,1.6963627 0 0 0 -0.62343,0.6177 L 0.22862027,14.34735 A 1.6752637,1.6752637 0 0 0 2.7493408e-7,15.19123 C -1.6972507e-4,15.48754 0.07850027,15.77862 0.22787027,16.03527 a 1.6963627,1.6963627 0 0 0 0.62326,0.61787 1.713242,1.713242 0 0 0 0.85156003,0.22609 h 5.90807 c 2.34089,0 4.0672197,-1.01908 5.2550097,-3.00728 l 2.8839,-4.9500097 1.5447,-2.64911 4.63588,7.9572897 h -6.18058 z m -6.6896597,-2.65181 -4.12309,-7.9e-4 6.1805,-10.6091097 3.0839197,5.30456 -2.06484,3.5454797 c -0.7888497,1.28999 -1.6849597,1.76 -3.0764897,1.76"
|
||||
data-v-7503c9ae=""
|
||||
id="path1"
|
||||
style="stroke-width:0.0843963" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
6
nuxt.config.ts
Normal file
6
nuxt.config.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
// https://nuxt.com/docs/api/configuration/nuxt-config
|
||||
export default defineNuxtConfig({
|
||||
compatibilityDate: '2025-07-15',
|
||||
devtools: { enabled: true },
|
||||
modules: ['@nuxt/eslint', '@nuxtjs/tailwindcss']
|
||||
})
|
||||
24
package.json
Normal file
24
package.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "nuxt-app",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "nuxt build",
|
||||
"dev": "nuxt dev",
|
||||
"generate": "nuxt generate",
|
||||
"preview": "nuxt preview",
|
||||
"postinstall": "nuxt prepare"
|
||||
},
|
||||
"dependencies": {
|
||||
"@nuxt/eslint": "1.9.0",
|
||||
"@nuxtjs/tailwindcss": "6.14.0",
|
||||
"eslint": "^9.33.0",
|
||||
"nuxt": "^4.0.3",
|
||||
"vue": "^3.5.18",
|
||||
"vue-router": "^4.5.1"
|
||||
},
|
||||
"engines": {
|
||||
"pnpm": ">=10 <11"
|
||||
},
|
||||
"packageManager": "pnpm@10.14.0+sha512.ad27a79641b49c3e481a16a805baa71817a04bbe06a38d17e60e2eaee83f6a146c6a688125f5792e48dd5ba30e7da52a5cda4c3992b9ccf333f9ce223af84748"
|
||||
}
|
||||
10186
pnpm-lock.yaml
generated
Normal file
10186
pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
BIN
public/favicon.ico
Normal file
BIN
public/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
74
public/logo.svg
Normal file
74
public/logo.svg
Normal file
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
class="MuiBox-root css-15p9n5u"
|
||||
fill="#ffffff"
|
||||
data-darkreader-inline-fill=""
|
||||
version="1.1"
|
||||
viewBox="0 0 324.58591 324.58593"
|
||||
id="svg4"
|
||||
sodipodi:docname="logo.svg"
|
||||
width="324.58591"
|
||||
height="324.58591"
|
||||
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="namedview4"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#505050"
|
||||
showgrid="false"
|
||||
inkscape:zoom="1.3811869"
|
||||
inkscape:cx="65.88536"
|
||||
inkscape:cy="230.59876"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1132"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg4" />
|
||||
<g
|
||||
transform="matrix(15.993754,0,0,15.993754,202.02026,95.822752)"
|
||||
id="g4">
|
||||
<g
|
||||
transform="matrix(0.61413,0,0,0.61413,-46.767,1.3479)"
|
||||
fill="#0062f8"
|
||||
fill-opacity="0.4466"
|
||||
id="g3">
|
||||
<circle
|
||||
cx="72.107002"
|
||||
cy="4.5725002"
|
||||
r="9.6731005"
|
||||
id="circle1" />
|
||||
<circle
|
||||
cx="72.107002"
|
||||
cy="4.5725002"
|
||||
r="13.713"
|
||||
id="circle2" />
|
||||
<circle
|
||||
cx="72.107002"
|
||||
cy="4.5725002"
|
||||
r="16.523001"
|
||||
id="circle3" />
|
||||
</g>
|
||||
<path
|
||||
d="M 3.9199,3.7221 C 3.8917,3.69915 3.62818,3.50017 3.07291,3.50017 c -0.13871,0 -0.28565,0.013 -0.4378,0.0377 C 2.52762,2.79968 1.91947,2.43987 1.89129,2.42387 L 1.74175,2.33718 1.64335,2.47936 C 1.52037,2.66983 1.4308,2.8799 1.37851,3.10051 1.27881,3.52184 1.33951,3.91715 1.55319,4.25611 1.29485,4.39959 0.88306,4.4373 0.79723,4.43816 h -6.8517 c -0.17908,7.09e-4 -0.32415,0.14558 -0.3251,0.32467 0.12299,0.5694 0.12059,0.55303 0.31955,1.0758 0.23623,0.61985 0.58734,1.0763 1.0442,1.3567 0.51191,0.31426 1.3455,0.49415 2.2869,0.49415 0.4404,0 0.87993,-0.03991 1.27,-0.1153 0.61422,-0.11833 1.1725,-0.32162 1.6584,-0.60294 0.42468,-0.24615 0.80673,-0.5594 1.1313,-0.92761 0.54269,-0.61552 0.68368,-0.72492 1.087,-1.2223 0.0325,0.0015 0.0641,0.002 0.0958,0.002 0.59428,0 0.96012,-0.2384 1.1617,-0.43779 C 3.89418,4.16881 3.9722,3.95294 3.98044,3.9291 l 0.0421,-0.12484 z"
|
||||
fill="#ffffff"
|
||||
stroke-width="0.43346"
|
||||
id="path3" />
|
||||
</g>
|
||||
<path
|
||||
fill="#00dc82"
|
||||
d="m 168.1312,157.41035 h 35.57302 c 1.13014,0 2.23986,-0.29473 3.21848,-0.85454 a 6.4114498,6.4114498 0 0 0 2.35566,-2.33523 6.3348952,6.3348952 0 0 0 0.86123,-3.1901 6.3348952,6.3348952 0 0 0 -0.86411,-3.18914 l -23.88983,-41.01159 a 6.4114498,6.4114498 0 0 0 -2.35533,-2.33492 6.4752453,6.4752453 0 0 0 -3.21785,-0.85453 c -1.12949,0 -2.23922,0.29506 -3.21752,0.85486 a 6.4114498,6.4114498 0 0 0 -2.35533,2.33491 l -6.10842,10.49309 -11.94348,-20.519188 a 6.4114498,6.4114498 0 0 0 -2.35629,-2.33492 6.4752453,6.4752453 0 0 0 -3.21816,-0.85422 c -1.12982,0 -2.23986,0.29473 -3.21849,0.85454 a 6.4114498,6.4114498 0 0 0 -2.35628,2.3346 l -29.72808,51.037048 a 6.3317054,6.3317054 0 0 0 -0.86411,3.18946 c -6.4e-4,1.11993 0.29665,2.22008 0.86124,3.1901 a 6.4114498,6.4114498 0 0 0 2.35565,2.33523 6.4752453,6.4752453 0 0 0 3.21848,0.85454 h 22.32972 c 8.84748,0 15.37216,-3.85165 19.86145,-11.36613 l 10.89978,-18.70867 5.83825,-10.01239 17.52144,30.0748 h -23.35969 z m -25.28376,-10.0226 -15.58333,-0.003 23.35937,-40.0974 11.65575,20.0487 -7.8041,13.40025 c -2.98148,4.87557 -6.36838,6.65196 -11.62769,6.65196"
|
||||
data-v-7503c9ae=""
|
||||
id="path1"
|
||||
style="stroke-width:0.318978" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
2
public/robots.txt
Normal file
2
public/robots.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
User-Agent: *
|
||||
Disallow:
|
||||
11
tailwind.config.js
Normal file
11
tailwind.config.js
Normal file
@@ -0,0 +1,11 @@
|
||||
/** @type {import('tailwindcss').Config} */
|
||||
module.exports = {
|
||||
content: [
|
||||
"./components/**/*.{js,vue,ts}",
|
||||
"./layouts/**/*.vue",
|
||||
"./pages/**/*.vue",
|
||||
"./plugins/**/*.{js,ts}",
|
||||
"./app.vue",
|
||||
"./error.vue",
|
||||
],
|
||||
};
|
||||
18
tsconfig.json
Normal file
18
tsconfig.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
// https://nuxt.com/docs/guide/concepts/typescript
|
||||
"files": [],
|
||||
"references": [
|
||||
{
|
||||
"path": "./.nuxt/tsconfig.app.json"
|
||||
},
|
||||
{
|
||||
"path": "./.nuxt/tsconfig.server.json"
|
||||
},
|
||||
{
|
||||
"path": "./.nuxt/tsconfig.shared.json"
|
||||
},
|
||||
{
|
||||
"path": "./.nuxt/tsconfig.node.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user