diff --git a/frontend/.dockerignore b/frontend/.dockerignore index e8ecee8..af50d2b 100644 --- a/frontend/.dockerignore +++ b/frontend/.dockerignore @@ -2,5 +2,6 @@ node_modules/ .git .gitignore *.log -dist +.output +.vinxi Dockerfile \ No newline at end of file diff --git a/frontend/@dasig/images/logo.avif b/frontend/@dasig/images/logo.avif deleted file mode 100644 index 2597894..0000000 Binary files a/frontend/@dasig/images/logo.avif and /dev/null differ diff --git a/frontend/@dasig/images/logo.webp b/frontend/@dasig/images/logo.webp deleted file mode 100644 index 8fb02ce..0000000 Binary files a/frontend/@dasig/images/logo.webp and /dev/null differ diff --git a/frontend/@dasig/images/ocbologo2.avif b/frontend/@dasig/images/ocbologo2.avif deleted file mode 100644 index 1c093b7..0000000 Binary files a/frontend/@dasig/images/ocbologo2.avif and /dev/null differ diff --git a/frontend/@dasig/images/ocbologo2.webp b/frontend/@dasig/images/ocbologo2.webp deleted file mode 100644 index 63e4ec1..0000000 Binary files a/frontend/@dasig/images/ocbologo2.webp and /dev/null differ diff --git a/frontend/@dasig/scripts/node/generateFavicon.js b/frontend/@dasig/scripts/node/generateFavicon.js deleted file mode 100644 index 6a75e0f..0000000 --- a/frontend/@dasig/scripts/node/generateFavicon.js +++ /dev/null @@ -1,23 +0,0 @@ -import { consola } from 'consola'; -import * as fs from 'fs'; -import * as path from 'path'; -import sharp from 'sharp'; - -try { - const dirPath = path.resolve('./public') - - if (fs.existsSync(dirPath)) { - const inputSrc = './src/images/favicon.png' - const favicon = dirPath + '/favicon.png' - const faviconBuffer = await sharp(inputSrc).png({ quality: 90 }).resize(48).toBuffer() - await sharp(faviconBuffer).toFile(favicon) - consola.success('Favicon generated successfully') - } else { - consola.error('Directory does not exist:', dirPath) - } - -} catch (error) { - if (error.message.includes('missing')) { - consola.error('Source favicon does not exist') - } -} diff --git a/frontend/@dasig/scripts/node/generateFavicon.ts b/frontend/@dasig/scripts/node/generateFavicon.ts new file mode 100644 index 0000000..51d8642 --- /dev/null +++ b/frontend/@dasig/scripts/node/generateFavicon.ts @@ -0,0 +1,26 @@ +// deno-lint-ignore-file no-explicit-any +import { consola } from "consola"; +import * as fs from "node:fs"; +import * as path from "node:path"; +import sharp from "sharp"; + +try { + const dirPath = path.resolve("./public"); + + if (fs.existsSync(dirPath)) { + const inputSrc = "./src/images/favicon.png"; + const favicon = dirPath + "/favicon.png"; + const faviconBuffer = await sharp(inputSrc) + .png({ quality: 90 }) + .resize(48) + .toBuffer(); + await sharp(faviconBuffer).toFile(favicon); + consola.success("Favicon generated successfully"); + } else { + consola.error("Directory does not exist:", dirPath); + } +} catch (error: any) { + if (error.message.includes("missing")) { + consola.error("Source favicon does not exist"); + } +} diff --git a/frontend/@dasig/scripts/node/optimizeImage.js b/frontend/@dasig/scripts/node/optimizeImage.js deleted file mode 100644 index 439f907..0000000 --- a/frontend/@dasig/scripts/node/optimizeImage.js +++ /dev/null @@ -1,41 +0,0 @@ -import { consola } from 'consola'; -import sharp from 'sharp'; -import yargs from 'yargs'; -import { hideBin } from 'yargs/helpers'; - -(async () => { - const argv = yargs(hideBin(process.argv)) - .option('name', { - alias: 'n', - describe: 'Specify the name of the image', - type: 'string', - demandOption: true, - }) - .option('size', { - alias: 's', - describe: 'Specify the size of the image', - type: 'number', - demandOption: true, - }) - .argv; - - const name = argv.name; - const size = argv.size; - - try { - const avifOutputPath = `./src/@dasig/images/${name.toString().split('.').slice(0, -1).join('.')}.avif` - const webpOutputPath = `./src/@dasig/images/${name.toString().split('.').slice(0, -1).join('.')}.webp` - - const avifBuffer = await sharp(`./src/images/${name}`).avif({ quality: 60 }).resize(size).toBuffer() - await sharp(avifBuffer).toFile(avifOutputPath) - consola.success(`${name} successfully optimized in Avif`) - - const webpBuffer = await sharp(`./src/images/${name}`).webp({ quality: 75 }).resize(size).toBuffer() - await sharp(webpBuffer).toFile(webpOutputPath) - consola.success(`${name} successfully optimized in Webp`) - } catch (error) { - consola.error('Error optimizing image:', error) - if (error.message.includes('missing')) consola.error(`${name} could not be found on image folder`) - } -})() - diff --git a/frontend/@dasig/scripts/node/optimizeImage.ts b/frontend/@dasig/scripts/node/optimizeImage.ts new file mode 100644 index 0000000..9cca41d --- /dev/null +++ b/frontend/@dasig/scripts/node/optimizeImage.ts @@ -0,0 +1,49 @@ +// deno-lint-ignore-file no-explicit-any + +import { consola } from "consola"; +import process from "node:process"; +import sharp from "sharp"; +import yargs from "yargs"; +import { hideBin } from "yargs/helpers"; + +(async () => { + const argv = yargs(hideBin(process.argv)) + .option("name", { + alias: "n", + describe: "Specify the name of the image", + type: "string", + demandOption: true, + }) + .option("size", { + alias: "s", + describe: "Specify the size of the image", + type: "number", + demandOption: true, + }).argv; + + const name = argv.name; + const size = argv.size; + + try { + const avifOutputPath = `./@dasig/images/${name.toString().split(".").slice(0, -1).join(".")}.avif`; + const webpOutputPath = `./@dasig/images/${name.toString().split(".").slice(0, -1).join(".")}.webp`; + + const avifBuffer = await sharp(`./src/images/${name}`) + .avif({ quality: 60 }) + .resize(size) + .toBuffer(); + await sharp(avifBuffer).toFile(avifOutputPath); + consola.success(`${name} successfully optimized in Avif`); + + const webpBuffer = await sharp(`./src/images/${name}`) + .webp({ quality: 75 }) + .resize(size) + .toBuffer(); + await sharp(webpBuffer).toFile(webpOutputPath); + consola.success(`${name} successfully optimized in Webp`); + } catch (error: any) { + consola.error("Error optimizing image:", error); + if (error.message.includes("missing")) + consola.error(`${name} could not be found on image folder`); + } +})(); diff --git a/frontend/@dasig/scripts/node/optimizeLogo.js b/frontend/@dasig/scripts/node/optimizeLogo.js deleted file mode 100644 index 5a62dce..0000000 --- a/frontend/@dasig/scripts/node/optimizeLogo.js +++ /dev/null @@ -1,33 +0,0 @@ -import { consola } from 'consola'; -import sharp from 'sharp'; -import yargs from 'yargs'; -import { hideBin } from 'yargs/helpers'; - -(async () => { - const argv = yargs(hideBin(process.argv)) - .option('size', { - alias: 's', - describe: 'Specify the size of the logo', - type: 'number', - demandOption: true, - }) - .argv; - - const size = argv.size; - - try { - const webpImage = './src/@dasig/images/logo.webp' - const avifImage = './src/@dasig/images/logo.avif' - const inputSrc = './src/images/logo.png' - - const avifBuffer = await sharp(inputSrc).avif({ quality: 60 }).resize(size).toBuffer() - await sharp(avifBuffer).toFile(avifImage) - consola.success('Logo successfully optimized in Avif') - - const webpBuffer = await sharp(inputSrc).webp({ quality: 75 }).resize(size).toBuffer() - await sharp(webpBuffer).toFile(webpImage) - consola.success('Logo successfully optimized in Webp') - } catch (error) { - consola.error('Error generating favicon:', error) - } -})() diff --git a/frontend/@dasig/scripts/node/optimizeLogo.ts b/frontend/@dasig/scripts/node/optimizeLogo.ts new file mode 100644 index 0000000..c80c8f4 --- /dev/null +++ b/frontend/@dasig/scripts/node/optimizeLogo.ts @@ -0,0 +1,36 @@ +import { consola } from "consola"; +import process from "node:process"; +import sharp from "sharp"; +import yargs from "yargs"; +import { hideBin } from "yargs/helpers"; + +(async () => { + const size = yargs(hideBin(process.argv)).option("size", { + alias: "s", + describe: "Specify the size of the logo", + type: "number", + demandOption: true, + }).argv.size; + + try { + const webpImage = "./@dasig/images/logo.webp"; + const avifImage = "./@dasig/images/logo.avif"; + const inputSrc = "./src/images/logo.png"; + + const avifBuffer = await sharp(inputSrc) + .avif({ quality: 60 }) + .resize(size) + .toBuffer(); + await sharp(avifBuffer).toFile(avifImage); + consola.success("Logo successfully optimized in Avif"); + + const webpBuffer = await sharp(inputSrc) + .webp({ quality: 75 }) + .resize(size) + .toBuffer(); + await sharp(webpBuffer).toFile(webpImage); + consola.success("Logo successfully optimized in Webp"); + } catch (error) { + consola.error("Error generating favicon:", error); + } +})(); diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 5b75f16..0a616ef 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,12 +1,17 @@ -FROM node:22-alpine AS build +FROM denoland/deno:alpine AS build WORKDIR /app -COPY package*.json ./ -RUN corepack enable -RUN pnpm install +COPY package*.json deno.lock ./ +RUN deno install && deno install --allow-scripts=npm:sharp,npm:@parcel/watcher COPY . . -RUN pnpm build +ENV NODE_ENV=production +RUN deno task build -FROM nginx:alpine AS runtime -COPY ./nginx/nginx.conf /etc/nginx/nginx.conf -COPY --from=build /app/dist /usr/share/nginx/html -EXPOSE 8080 \ No newline at end of file +# FROM nginx:alpine AS runtime +# COPY ./nginx/nginx.conf /etc/nginx/nginx.conf +# COPY --from=build /app/.output/public /usr/share/nginx/html +# EXPOSE 8080 + +FROM denoland/deno:alpine +WORKDIR /app +COPY --from=build /app . +CMD ["deno", "run", "--allow-env", "--allow-net", "--allow-read", ".output/server/index.mjs"] \ No newline at end of file diff --git a/frontend/Makefile b/frontend/Makefile index 46f831e..33d9aaf 100644 --- a/frontend/Makefile +++ b/frontend/Makefile @@ -1,11 +1,13 @@ +.SILENT: + all: deno install && deno install --allow-scripts=npm:sharp,npm:@parcel/watcher dev: - deno run dev + deno task dev build: - deno run build + deno task build && PORT=9000 deno run --allow-env --allow-read --allow-net .output/server/index.mjs & update: deno update @@ -17,11 +19,11 @@ podman: podman-compose up -d favicon: - deno ./src/@dasig/scripts/node/generateFavicon.js + deno --allow-env --allow-read --allow-ffi ./@dasig/scripts/node/generateFavicon.ts logo: - deno ./src/@dasig/scripts/node/optimizeLogo.js --size $(size) + deno --allow-env --allow-read --allow-ffi ./@dasig/scripts/node/optimizeLogo.ts --size $(size) image: - deno ./src/@dasig/scripts/node/optimizeImage.js --name $(name) --size $(size) + deno --allow-env --allow-read --allow-ffi ./@dasig/scripts/node/optimizeImage.ts --name $(name) --size $(size) diff --git a/frontend/app.config.ts b/frontend/app.config.ts index da0289f..377e62d 100644 --- a/frontend/app.config.ts +++ b/frontend/app.config.ts @@ -1,11 +1,11 @@ import { defineConfig } from '@solidjs/start/config' export default defineConfig({ - ssr: false, - server: { - static: true, - prerender: { - crawlLinks: true, - }, - }, + ssr: true, + // server: { + // static: true, + // prerender: { + // crawlLinks: true, + // }, + // }, }) diff --git a/frontend/public/favicon.png b/frontend/public/favicon.png index 2fc620c..14bf930 100644 Binary files a/frontend/public/favicon.png and b/frontend/public/favicon.png differ