Compare commits

..

6 Commits

8 changed files with 5074 additions and 5128 deletions

27
Dockerfile Normal file
View File

@@ -0,0 +1,27 @@
FROM node:22-alpine AS build
WORKDIR /web
COPY package.json ./
RUN npm install
COPY . .
RUN npm run build
FROM node:22-alpine AS runtime
WORKDIR /app
# Copiar archivos generados y dependencias necesarias
COPY --from=build /web/dist ./dist
COPY --from=build /web/node_modules ./node_modules
COPY --from=build /web/package.json ./package.json
# Configuración de red interna de Docker
ENV HOST=0.0.0.0
ENV PORT=4321
EXPOSE 4321
CMD ["node", "./dist/server/entry.mjs"]

View File

@@ -1,5 +1,13 @@
// @ts-check
import { defineConfig } from 'astro/config';
import { defineConfig } from "astro/config";
import node from "@astrojs/node";
// https://astro.build/config
export default defineConfig({});
export default defineConfig({
output: "server",
adapter: node({
mode: "standalone",
}),
});

7
docker-compose.yaml Normal file
View File

@@ -0,0 +1,7 @@
services:
web:
build:
context: .
dockerfile: Dockerfile
ports:
- "4321:4321"

15
nginx.conf Normal file
View File

@@ -0,0 +1,15 @@
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

10039
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,19 +1,20 @@
{
"name": "naliia-website",
"type": "module",
"version": "0.0.1",
"scripts": {
"dev": "astro dev",
"build": "astro build",
"preview": "astro preview",
"astro": "astro"
},
"dependencies": {
"astro": "^5.17.1",
"lenis": "^1.3.17",
"nodemailer": "^8.0.1"
},
"devDependencies": {
"@types/nodemailer": "^7.0.11"
}
"name": "naliia-website",
"type": "module",
"version": "0.0.1",
"scripts": {
"dev": "astro dev",
"build": "astro build",
"preview": "astro preview",
"astro": "astro"
},
"dependencies": {
"@astrojs/node": "^10.0.4",
"astro": "^6.1.3",
"lenis": "^1.3.17",
"nodemailer": "^8.0.1"
},
"devDependencies": {
"@types/nodemailer": "^7.0.11"
}
}

View File

@@ -24,6 +24,11 @@ const { pageTitle } = Astro.props;
<link rel="icon" href="/favicon.ico" />
<meta name="generator" content={Astro.generator} />
<title>{pageTitle ? `Naliia | ${pageTitle}` : "Naliia"}</title>
<link
rel="stylesheet"
href="https://unpkg.com/lenis@1.3.17/dist/lenis.css"
/>
</head>
<body>
@@ -86,6 +91,22 @@ const { pageTitle } = Astro.props;
<footer class="footer">
<Footer />
</footer>
<script>
import Lenis from "lenis";
const lenis = new Lenis({
touchMultiplier: 2,
infinite: false,
});
function raf(time: number) {
lenis.raf(time);
requestAnimationFrame(raf);
}
requestAnimationFrame(raf);
</script>
</body>
</html>
@@ -100,47 +121,7 @@ const { pageTitle } = Astro.props;
}
</script>
<script>
import Lenis from "lenis";
// Inicialización de Lenis
const lenis = new Lenis({
duration: 1.2,
easing: (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)),
direction: "vertical",
gestureDirection: "vertical",
smoothHover: true,
// En móviles a veces es mejor dejarlo en false para no interferir con el scroll nativo
smoothTouch: false,
});
// Función de actualización (Raf)
function raf(time: number) {
lenis.raf(time);
requestAnimationFrame(raf);
}
requestAnimationFrame(raf);
</script>
<style>
/* Estilos base para Lenis */
html.lenis {
height: auto;
}
.lenis.lenis-smooth {
scroll-behavior: auto !important;
}
.lenis.lenis-smooth [data-lenis-prevent] {
overscroll-behavior: contain;
}
.lenis.lenis-stopped {
overflow: hidden;
}
/* Estilos globales */
html {
margin: 0;
@@ -161,10 +142,6 @@ const { pageTitle } = Astro.props;
display: flex;
flex-direction: column;
overflow-x: clip;
/* background-image: url("/src/assets/imgs/n-naliia-rosada-fondo.webp");
background-repeat: no-repeat;
background-position: top right; */
}
body::before {

View File

@@ -116,8 +116,6 @@ const videosList = Object.keys(videoFiles).map((key) => {
const name = item.getAttribute("data-name");
const matches = name && name.includes(query);
// Usamos toggle: si matches es true, hidden es false (se muestra)
// Si matches es false, hidden es true (se oculta)
item.classList.toggle("hidden", !matches);
if (matches) {