diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml
index 71f5555..91202c7 100644
--- a/.gitea/workflows/deploy.yml
+++ b/.gitea/workflows/deploy.yml
@@ -1,4 +1,4 @@
-name: Deploy Application
+name: Deploy Nuxt App
on: [push]
jobs:
@@ -8,27 +8,37 @@ jobs:
- name: Checkout code
uses: actions/checkout@v3
with:
- token: 0406afe7de6547e850dd62c84976c6def23a5193
+ token: ${{ secrets.TOKEN }}
- - name: Install curl
+ - name: Setup Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version: '22'
+
+ - name: Install dependencies and build
run: |
- if command -v apt-get &> /dev/null; then
- apt-get update && apt-get install -y curl
- elif command -v apk &> /dev/null; then
- apk add --no-cache curl
- elif command -v yum &> /dev/null; then
- yum install -y curl
- fi
+ npm install
+ npm run build
- - name: Upload config files to server
+ - name: Prepare deployment files
+ run: |
+ tar -czf deploy.tar.gz dist Dockerfile docker-compose.yml
+
+ - name: Upload files via Gitea API
env:
- GITEA_API: "https://gitea.miduway.space/api/v1/repos/levis/ebook/raw/main"
- GITEA_TOKEN: "0406afe7de6547e850dd62c84976c6def23a5193"
+ GITEA_API: "https://gitea.miduway.space/api/v1/repos/levis/ebook/raw/production"
+ GITEA_TOKEN: ${{ secrets.TOKEN }}
run: |
- for file in docker-compose.yml Dockerfile; do
- echo "Uploading $file"
+ for file in Dockerfile docker-compose.yml; do
curl -X PUT \
- -H "Authorization: token $GITEA_TOKEN" \
+ -H "Authorization: token $TOKEN" \
+ -H "Content-Type: text/plain" \
-T "$file" \
- "$GITEA_API/$file"
+ "$GITEA_API/$file?branch=main"
done
+
+ curl -X PUT \
+ -H "Authorization: token $TOKEN" \
+ -H "Content-Type: application/gzip" \
+ -T "deploy.tar.gz" \
+ "$GITEA_API/deploy.tar.gz?branch=main"
diff --git a/.gitignore b/.gitignore
index 1b4d376..83c160e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -24,5 +24,5 @@ dist-ssr
*.sln
*.sw?
-
+.nuxt
frontend.env
diff --git a/.nuxt/nuxt.d.ts b/.nuxt/nuxt.d.ts
index f174378..67349e1 100644
--- a/.nuxt/nuxt.d.ts
+++ b/.nuxt/nuxt.d.ts
@@ -4,6 +4,7 @@
///
///
///
+///
///
///
///
@@ -25,4 +26,4 @@
///
///
-export {}
+export {};
diff --git a/.nuxt/tailwind/postcss.mjs b/.nuxt/tailwind/postcss.mjs
index 279ae52..5b8933a 100644
--- a/.nuxt/tailwind/postcss.mjs
+++ b/.nuxt/tailwind/postcss.mjs
@@ -1,14 +1,30 @@
-// generated by the @nuxtjs/tailwindcss module at 6/18/2025, 10:02:46 AM
-import "@nuxtjs/tailwindcss/config-ctx"
+// generated by the @nuxtjs/tailwindcss module at 6/19/2025, 4:53:06 PM
+import "@nuxtjs/tailwindcss/config-ctx";
import configMerger from "@nuxtjs/tailwindcss/merger";
import cfg2 from "./../../tailwind.config.ts";
const config = [
-{"content":{"files":["/Users/dkoziavin/code/sub-projects/e-book/components/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/components/global/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/components/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/layouts/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/plugins/**/*.{js,ts,mjs}","/Users/dkoziavin/code/sub-projects/e-book/composables/**/*.{js,ts,mjs}","/Users/dkoziavin/code/sub-projects/e-book/utils/**/*.{js,ts,mjs}","/Users/dkoziavin/code/sub-projects/e-book/pages/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/{A,a}pp.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/{E,e}rror.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/app.config.{js,ts,mjs}"]}},
-{},
-cfg2
+ {
+ content: {
+ files: [
+ "/home/levis/miduway/www/ebook.miduway.space/components/**/*.{vue,js,jsx,mjs,ts,tsx}",
+ "/home/levis/miduway/www/ebook.miduway.space/components/global/**/*.{vue,js,jsx,mjs,ts,tsx}",
+ "/home/levis/miduway/www/ebook.miduway.space/components/**/*.{vue,js,jsx,mjs,ts,tsx}",
+ "/home/levis/miduway/www/ebook.miduway.space/layouts/**/*.{vue,js,jsx,mjs,ts,tsx}",
+ "/home/levis/miduway/www/ebook.miduway.space/plugins/**/*.{js,ts,mjs}",
+ "/home/levis/miduway/www/ebook.miduway.space/composables/**/*.{js,ts,mjs}",
+ "/home/levis/miduway/www/ebook.miduway.space/utils/**/*.{js,ts,mjs}",
+ "/home/levis/miduway/www/ebook.miduway.space/pages/**/*.{vue,js,jsx,mjs,ts,tsx}",
+ "/home/levis/miduway/www/ebook.miduway.space/{A,a}pp.{vue,js,jsx,mjs,ts,tsx}",
+ "/home/levis/miduway/www/ebook.miduway.space/{E,e}rror.{vue,js,jsx,mjs,ts,tsx}",
+ "/home/levis/miduway/www/ebook.miduway.space/app.config.{js,ts,mjs}",
+ ],
+ },
+ },
+ {},
+ cfg2,
].reduce((acc, curr) => configMerger(acc, curr), {});
const resolvedConfig = config;
-export default resolvedConfig;
\ No newline at end of file
+export default resolvedConfig;
diff --git a/.nuxt/tsconfig.json b/.nuxt/tsconfig.json
index 5a7e45b..784e76c 100644
--- a/.nuxt/tsconfig.json
+++ b/.nuxt/tsconfig.json
@@ -1,135 +1,57 @@
{
"compilerOptions": {
"paths": {
- "nitropack/types": [
- "../node_modules/nitropack/types"
- ],
- "nitropack/runtime": [
- "../node_modules/nitropack/runtime"
- ],
- "nitropack": [
- "../node_modules/nitropack"
- ],
- "defu": [
- "../node_modules/defu"
- ],
- "h3": [
- "../node_modules/h3"
- ],
- "consola": [
- "../node_modules/consola"
- ],
- "ofetch": [
- "../node_modules/ofetch"
- ],
- "@unhead/vue": [
- "../node_modules/@unhead/vue"
- ],
- "@nuxt/devtools": [
- "../node_modules/@nuxt/devtools"
- ],
- "@vue/runtime-core": [
- "../node_modules/@vue/runtime-core"
- ],
- "@vue/compiler-sfc": [
- "../node_modules/@vue/compiler-sfc"
- ],
- "vue-router": [
- "../node_modules/vue-router"
- ],
+ "nitropack/types": ["../node_modules/nitropack/types"],
+ "nitropack/runtime": ["../node_modules/nitropack/runtime"],
+ "nitropack": ["../node_modules/nitropack"],
+ "defu": ["../node_modules/defu"],
+ "h3": ["../node_modules/h3"],
+ "consola": ["../node_modules/consola"],
+ "ofetch": ["../node_modules/ofetch"],
+ "@unhead/vue": ["../node_modules/@unhead/vue"],
+ "@nuxt/devtools": ["../node_modules/@nuxt/devtools"],
+ "@vue/runtime-core": ["../node_modules/@vue/runtime-core"],
+ "@vue/compiler-sfc": ["../node_modules/@vue/compiler-sfc"],
+ "vue-router": ["../node_modules/vue-router"],
"vue-router/auto-routes": [
"../node_modules/vue-router/vue-router-auto-routes"
],
"unplugin-vue-router/client": [
"../node_modules/unplugin-vue-router/client"
],
- "@nuxt/schema": [
- "../node_modules/@nuxt/schema"
- ],
- "nuxt": [
- "../node_modules/nuxt"
- ],
- "vite/client": [
- "../node_modules/vite/client"
- ],
- "~": [
- ".."
- ],
- "~/*": [
- "../*"
- ],
- "@": [
- ".."
- ],
- "@/*": [
- "../*"
- ],
- "~~": [
- ".."
- ],
- "~~/*": [
- "../*"
- ],
- "@@": [
- ".."
- ],
- "@@/*": [
- "../*"
- ],
- "#shared": [
- "../shared"
- ],
- "assets": [
- "../assets"
- ],
- "assets/*": [
- "../assets/*"
- ],
- "public": [
- "../public"
- ],
- "public/*": [
- "../public/*"
- ],
- "#app": [
- "../node_modules/nuxt/dist/app"
- ],
- "#app/*": [
- "../node_modules/nuxt/dist/app/*"
- ],
- "vue-demi": [
- "../node_modules/nuxt/dist/app/compat/vue-demi"
- ],
- "#image": [
- "../node_modules/@nuxt/image/dist/runtime"
- ],
- "#image/*": [
- "../node_modules/@nuxt/image/dist/runtime/*"
- ],
- "pinia": [
- "../node_modules/pinia/dist/pinia"
- ],
- "#vue-router": [
- "../node_modules/vue-router"
- ],
+ "@nuxt/schema": ["../node_modules/@nuxt/schema"],
+ "nuxt": ["../node_modules/nuxt"],
+ "vite/client": ["../node_modules/vite/client"],
+ "~": [".."],
+ "~/*": ["../*"],
+ "@": [".."],
+ "@/*": ["../*"],
+ "~~": [".."],
+ "~~/*": ["../*"],
+ "@@": [".."],
+ "@@/*": ["../*"],
+ "#shared": ["../shared"],
+ "assets": ["../assets"],
+ "assets/*": ["../assets/*"],
+ "public": ["../public"],
+ "public/*": ["../public/*"],
+ "#app": ["../node_modules/nuxt/dist/app"],
+ "#app/*": ["../node_modules/nuxt/dist/app/*"],
+ "vue-demi": ["../node_modules/nuxt/dist/app/compat/vue-demi"],
+ "#image": ["../node_modules/@nuxt/image/dist/runtime"],
+ "#image/*": ["../node_modules/@nuxt/image/dist/runtime/*"],
+ "pinia": ["../node_modules/pinia/dist/pinia"],
+ "#vue-router": ["../node_modules/vue-router"],
"#unhead/composables": [
"../node_modules/nuxt/dist/head/runtime/composables/v3"
],
- "#imports": [
- "./imports"
- ],
+ "#imports": ["./imports"],
"#app-manifest": [
- "./manifest/meta/33f39b41-9013-461e-9707-dde64ef0b3e6"
+ "./manifest/meta/f4dfbb73-66a7-4162-b534-4c8db9f3aa74.json"
],
- "#components": [
- "./components"
- ],
- "#build": [
- "."
- ],
- "#build/*": [
- "./*"
- ]
+ "#components": ["./components"],
+ "#build": ["."],
+ "#build/*": ["./*"]
},
"esModuleInterop": true,
"skipLibCheck": true,
@@ -145,12 +67,7 @@
"noImplicitOverride": true,
"module": "preserve",
"noEmit": true,
- "lib": [
- "ESNext",
- "dom",
- "dom.iterable",
- "webworker"
- ],
+ "lib": ["ESNext", "dom", "dom.iterable", "webworker"],
"jsx": "preserve",
"jsxImportSource": "vue",
"types": [],
@@ -206,4 +123,4 @@
"../node_modules/@nuxt/telemetry/runtime/server",
"../node_modules/@nuxt/telemetry/dist/runtime/server"
]
-}
\ No newline at end of file
+}
diff --git a/.nuxt/types/nitro-imports.d.ts b/.nuxt/types/nitro-imports.d.ts
index 0ea5be9..b78e405 100644
--- a/.nuxt/types/nitro-imports.d.ts
+++ b/.nuxt/types/nitro-imports.d.ts
@@ -137,5 +137,5 @@ export { useEvent } from 'nitropack/runtime/internal/context';
export { defineTask, runTask } from 'nitropack/runtime/internal/task';
export { defineNitroErrorHandler } from 'nitropack/runtime/internal/error/utils';
export { appendCorsHeaders, appendCorsPreflightHeaders, appendHeader, appendHeaders, appendResponseHeader, appendResponseHeaders, assertMethod, callNodeListener, clearResponseHeaders, clearSession, createApp, createAppEventHandler, createError, createEvent, createEventStream, createRouter, defaultContentType, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, defineRequestMiddleware, defineResponseMiddleware, defineWebSocket, defineWebSocketHandler, deleteCookie, dynamicEventHandler, eventHandler, fetchWithEvent, fromNodeMiddleware, fromPlainHandler, fromWebHandler, getCookie, getHeader, getHeaders, getMethod, getProxyRequestHeaders, getQuery, getRequestFingerprint, getRequestHeader, getRequestHeaders, getRequestHost, getRequestIP, getRequestPath, getRequestProtocol, getRequestURL, getRequestWebStream, getResponseHeader, getResponseHeaders, getResponseStatus, getResponseStatusText, getRouterParam, getRouterParams, getSession, getValidatedQuery, getValidatedRouterParams, handleCacheHeaders, handleCors, isCorsOriginAllowed, isError, isEvent, isEventHandler, isMethod, isPreflightRequest, isStream, isWebResponse, lazyEventHandler, parseCookies, promisifyNodeListener, proxyRequest, readBody, readFormData, readMultipartFormData, readRawBody, readValidatedBody, removeResponseHeader, sanitizeStatusCode, sanitizeStatusMessage, sealSession, send, sendError, sendIterable, sendNoContent, sendProxy, sendRedirect, sendStream, sendWebResponse, serveStatic, setCookie, setHeader, setHeaders, setResponseHeader, setResponseHeaders, setResponseStatus, splitCookiesString, toEventHandler, toNodeListener, toPlainHandler, toWebHandler, toWebRequest, unsealSession, updateSession, useBase, useSession, writeEarlyHints } from 'h3';
-export { buildAssetsURL as __buildAssetsURL, publicAssetsURL as __publicAssetsURL } from '/Users/dkoziavin/code/sub-projects/e-book/node_modules/nuxt/dist/core/runtime/nitro/utils/paths';
-export { defineAppConfig } from '/Users/dkoziavin/code/sub-projects/e-book/node_modules/nuxt/dist/core/runtime/nitro/utils/config';
\ No newline at end of file
+export { buildAssetsURL as __buildAssetsURL, publicAssetsURL as __publicAssetsURL } from '/home/levis/miduway/www/ebook.miduway.space/node_modules/nuxt/dist/core/runtime/nitro/utils/paths';
+export { defineAppConfig } from '/home/levis/miduway/www/ebook.miduway.space/node_modules/nuxt/dist/core/runtime/nitro/utils/config';
\ No newline at end of file
diff --git a/.nuxt/types/plugins.d.ts b/.nuxt/types/plugins.d.ts
index 1f38721..857307e 100644
--- a/.nuxt/types/plugins.d.ts
+++ b/.nuxt/types/plugins.d.ts
@@ -9,7 +9,6 @@ type NuxtAppInjections =
InjectionType &
InjectionType &
InjectionType &
- InjectionType &
InjectionType &
InjectionType &
InjectionType &
@@ -23,7 +22,7 @@ declare module '#app' {
interface NuxtApp extends NuxtAppInjections { }
interface NuxtAppLiterals {
- pluginName: 'nuxt:revive-payload:client' | 'nuxt:head' | 'nuxt:router' | 'nuxt:debug:hooks' | 'nuxt:payload' | 'nuxt:revive-payload:server' | 'nuxt:chunk-reload' | 'pinia' | 'nuxt:global-components' | 'nuxt:prefetch' | '@nuxt/icon'
+ pluginName: 'nuxt:revive-payload:client' | 'nuxt:head' | 'nuxt:router' | 'nuxt:payload' | 'nuxt:revive-payload:server' | 'nuxt:chunk-reload' | 'pinia' | 'nuxt:global-components' | 'nuxt:prefetch' | '@nuxt/icon'
}
}
diff --git a/Dockerfile b/Dockerfile
index 79f687f..b29ac53 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,13 +1,7 @@
-FROM node:20 as builder
-
-WORKDIR /app
+FROM node:22-alpine
+WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
-
-FROM nginx:alpine
-COPY --from=builder /app/dist /usr/share/nginx/html
-COPY ebook.conf /etc/nginx/conf.d/default.conf
-EXPOSE 80
-CMD ["nginx", "-g", "daemon off;"]
\ No newline at end of file
+CMD ["node", "dist/server/index.mjs"]