Compare commits

..

No commits in common. "main" and "v1.28.0" have entirely different histories.

11 changed files with 6336 additions and 7754 deletions

View File

@ -1,5 +1,5 @@
{ {
"_variables": { "_variables": {
"lastUpdateCheck": 1741386617926 "lastUpdateCheck": 1726089127618
} }
} }

2
.astro/types.d.ts vendored
View File

@ -1,2 +1,2 @@
/// <reference types="astro/client" /> /// <reference types="astro/client" />
/// <reference path="content.d.ts" /> /// <reference path="astro/content.d.ts" />

View File

@ -1,33 +1,3 @@
# [1.29.0](https://github.com/deployn/astro-deploy/compare/v1.28.0...v1.29.0) (2025-03-08)
### Features
* add 404 page ([04cba4f](https://github.com/deployn/astro-deploy/commit/04cba4fa051b1c8958aa4dfe99266c56d0e8cf0b))
* **blog:** add redirect to 404 page if entry is not found ([6cd32df](https://github.com/deployn/astro-deploy/commit/6cd32df0eeadad3094cc35724961a4bbd5541eb0))
* **Dockerfile:** use Alpine base image and add healthcheck ([02e218d](https://github.com/deployn/astro-deploy/commit/02e218d1853c3c06d48bb3f8811564d910c61837))
# [1.29.0-beta.3](https://github.com/deployn/astro-deploy/compare/v1.29.0-beta.2...v1.29.0-beta.3) (2024-10-05)
### Features
* **blog:** add redirect to 404 page if entry is not found ([6cd32df](https://github.com/deployn/astro-deploy/commit/6cd32df0eeadad3094cc35724961a4bbd5541eb0))
# [1.29.0-beta.2](https://github.com/deployn/astro-deploy/compare/v1.29.0-beta.1...v1.29.0-beta.2) (2024-10-05)
### Features
* add 404 page ([04cba4f](https://github.com/deployn/astro-deploy/commit/04cba4fa051b1c8958aa4dfe99266c56d0e8cf0b))
# [1.29.0-beta.1](https://github.com/deployn/astro-deploy/compare/v1.28.0...v1.29.0-beta.1) (2024-10-04)
### Features
* **Dockerfile:** use Alpine base image and add healthcheck ([02e218d](https://github.com/deployn/astro-deploy/commit/02e218d1853c3c06d48bb3f8811564d910c61837))
# [1.28.0](https://github.com/deployn/astro-deploy/compare/v1.27.0...v1.28.0) (2024-09-13) # [1.28.0](https://github.com/deployn/astro-deploy/compare/v1.27.0...v1.28.0) (2024-09-13)

View File

@ -1,15 +1,19 @@
# Build Stage FROM node:20-slim AS base
FROM node:22-slim AS build
ENV PNPM_HOME="/pnpm" ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH" ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable RUN corepack enable
WORKDIR /app WORKDIR /app
COPY package.json pnpm-lock.yaml ./ COPY package.json pnpm-lock.yaml ./
FROM base AS prod-deps
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile
FROM base AS build-deps
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
FROM build-deps AS build
COPY . . COPY . .
ARG SITE_URL ARG SITE_URL
ENV SITE_URL=${SITE_URL} ENV SITE_URL=${SITE_URL}
@ -17,21 +21,10 @@ ARG DIRECTUS_URL
ENV DIRECTUS_URL=${DIRECTUS_URL} ENV DIRECTUS_URL=${DIRECTUS_URL}
RUN pnpm run build RUN pnpm run build
# Runtime Stage
FROM nginx:1.25-alpine AS runtime FROM nginx:1.25-alpine AS runtime
# Copy custom nginx config
COPY nginx/nginx.conf /etc/nginx/nginx.conf COPY nginx/nginx.conf /etc/nginx/nginx.conf
# Copy built assets from build stage
COPY --from=build /app/dist /usr/share/nginx/html COPY --from=build /app/dist /usr/share/nginx/html
# Add curl for healthchecks
RUN apk add --no-cache curl
# Healthcheck
HEALTHCHECK --interval=30s --timeout=3s CMD curl -f http://localhost/ || exit 1
EXPOSE 80 EXPOSE 80
CMD ["nginx", "-g", "daemon off;"] CMD ["nginx", "-g", "daemon off;"]

View File

@ -6,7 +6,7 @@ A custom Astro.js template
## Features ## Features
- 🚀 Astro.js 5 for modern web development. - 🚀 Astro.js 4 for modern web development.
- 🐳 Docker integration for consistent environments and easy deployment. - 🐳 Docker integration for consistent environments and easy deployment.
- 🍃 Tailwind CSS for utility-first styling and rapid UI development. - 🍃 Tailwind CSS for utility-first styling and rapid UI development.
- ⚛️ React.js integration, enabling complex UI construction with ease. - ⚛️ React.js integration, enabling complex UI construction with ease.

View File

@ -1,7 +1,7 @@
user nginx; user nginx;
worker_processes auto; worker_processes auto;
error_log /var/log/nginx/error.log warn; error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid; pid /var/run/nginx.pid;
events { events {
@ -19,10 +19,8 @@ http {
access_log /var/log/nginx/access.log main; access_log /var/log/nginx/access.log main;
sendfile on; sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65; keepalive_timeout 65;
types_hash_max_size 2048;
gzip on; gzip on;
gzip_vary on; gzip_vary on;
@ -34,33 +32,26 @@ http {
listen 80; listen 80;
listen [::]:80; listen [::]:80;
server_name localhost; server_name localhost;
port_in_redirect off;
root /usr/share/nginx/html; root /usr/share/nginx/html;
index index.html index.htm; index index.html index.htm;
rewrite ^([^.]*[^/])$ $1/ permanent;
try_files $uri $uri/ $uri/index.html =404;
location / { location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|webp)$ {
try_files $uri $uri/ /index.html; expires 60d;
}
location ~* \.(?:ico|css|js|gif|jpe?g|png|svg|woff|woff2|eot|ttf|webp)$ {
expires 30d;
add_header Cache-Control "public, no-transform"; add_header Cache-Control "public, no-transform";
} }
error_page 404 /404.html;
location = /404.html {
internal;
}
error_page 500 502 503 504 /50x.html; error_page 500 502 503 504 /50x.html;
location = /50x.html { location = /50x.html {
internal; root /usr/share/nginx/html;
} }
add_header X-Frame-Options "SAMEORIGIN"; add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff"; add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block"; add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()";
} }
} }

View File

@ -1,7 +1,7 @@
{ {
"name": "astro-deploy", "name": "astro-deploy",
"type": "module", "type": "module",
"version": "1.29.0", "version": "1.28.0",
"description": "A custom Astro.js template", "description": "A custom Astro.js template",
"private": true, "private": true,
"scripts": { "scripts": {
@ -15,50 +15,49 @@
"upgrade": "pnpm update --interactive --latest", "upgrade": "pnpm update --interactive --latest",
"commit": "cz" "commit": "cz"
}, },
"packageManager": "pnpm@9.8.0",
"dependencies": { "dependencies": {
"@astrojs/alpinejs": "^0.4.0", "@astrojs/alpinejs": "^0.4.0",
"@astrojs/check": "^0.9.4", "@astrojs/check": "^0.9.3",
"@astrojs/mdx": "^4.1.0", "@astrojs/mdx": "^3.1.5",
"@astrojs/react": "^4.2.1", "@astrojs/react": "^3.6.2",
"@astrojs/sitemap": "^3.2.1", "@astrojs/sitemap": "^3.1.6",
"@astrojs/tailwind": "^5.1.2", "@astrojs/tailwind": "^5.1.0",
"@radix-ui/react-dropdown-menu": "^2.1.2", "@radix-ui/react-dropdown-menu": "^2.1.1",
"@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-slot": "^1.1.0",
"astro": "^5.4.2", "astro": "^4.15.4",
"astro-expressive-code": "^0.40.2", "astro-expressive-code": "^0.36.1",
"astro-icon": "^1.1.1" "astro-icon": "^1.1.1"
}, },
"devDependencies": { "devDependencies": {
"@commitlint/cli": "^19.5.0", "@commitlint/cli": "^19.5.0",
"@commitlint/config-conventional": "^19.5.0", "@commitlint/config-conventional": "^19.5.0",
"@commitlint/cz-commitlint": "^19.5.0", "@commitlint/cz-commitlint": "^19.5.0",
"@directus/sdk": "^19.0.1", "@directus/sdk": "^17.0.1",
"@iconify-json/line-md": "^1.2.1", "@iconify-json/line-md": "^1.2.1",
"@pagefind/default-ui": "^1.1.1", "@pagefind/default-ui": "^1.1.1",
"@semantic-release/changelog": "^6.0.3", "@semantic-release/changelog": "^6.0.3",
"@semantic-release/git": "^10.0.1", "@semantic-release/git": "^10.0.1",
"@tailwindcss/typography": "^0.5.15", "@tailwindcss/typography": "^0.5.15",
"@types/alpinejs": "^3.13.10", "@types/alpinejs": "^3.13.10",
"@types/react": "^19.0.10", "@types/react": "^18.3.5",
"@types/react-dom": "^19.0.4", "@types/react-dom": "^18.3.0",
"@vite-pwa/assets-generator": "^0.2.6", "@vite-pwa/assets-generator": "^0.2.6",
"alpinejs": "^3.14.1", "alpinejs": "^3.14.1",
"class-variance-authority": "^0.7.0", "class-variance-authority": "^0.7.0",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"commitizen": "^4.3.1", "commitizen": "^4.3.0",
"cz-conventional-changelog": "^3.3.0", "cz-conventional-changelog": "^3.3.0",
"lucide-react": "^0.479.0", "lucide-react": "^0.439.0",
"pagefind": "^1.1.1", "pagefind": "^1.1.1",
"prettier": "^3.3.3", "prettier": "^3.3.3",
"prettier-plugin-astro": "^0.14.1", "prettier-plugin-astro": "^0.14.1",
"prettier-plugin-tailwindcss": "^0.6.8", "prettier-plugin-tailwindcss": "^0.6.6",
"pwa-asset-generator": "^6.3.2", "pwa-asset-generator": "^6.3.2",
"react": "^19.0.0", "react": "^18.3.1",
"react-dom": "^19.0.0", "react-dom": "^18.3.1",
"semantic-release": "^24.1.1", "semantic-release": "^24.1.1",
"sharp": "0.32.6", "sharp": "0.32.6",
"tailwind-merge": "^3.0.2", "tailwind-merge": "^2.5.2",
"tailwindcss": "^3.4.11", "tailwindcss": "^3.4.11",
"tailwindcss-animate": "^1.0.7", "tailwindcss-animate": "^1.0.7",
"typescript": "^5.6.2" "typescript": "^5.6.2"

13781
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +0,0 @@
---
import BaseLayout from '@/layouts/BaseLayout.astro';
---
<BaseLayout title="Astro Deploy 404" description="404: Page not found.">
<header class="mx-auto px-4 pb-20 pt-28 sm:px-6 lg:px-8">
<h1 class="text-center text-zinc-900 dark:text-zinc-200">404: Page Not Found</h1>
<p class="mx-auto mt-6 max-w-3xl text-center text-lg text-zinc-900/70 dark:text-zinc-400">
The page you are looking for does not exist. Please check the URL or return to the home page.
</p>
</header>
</BaseLayout>

View File

@ -110,11 +110,14 @@ const {
{author.url ? ( {author.url ? (
<a <a
href={author.url} href={author.url}
class="font-medium text-primary-600 underline hover:text-primary-500 dark:text-primary-400 dark:hover:text-primary-300"> class="font-medium text-primary-600 underline
hover:text-primary-500 dark:text-primary-400 dark:hover:text-primary-300">
{author.name} {author.name}
</a> </a>
) : ( ) : (
<span class="font-medium text-primary-600 dark:text-primary-400"> <span
class="font-medium text-primary-600
dark:text-primary-400 ">
{author.name} {author.name}
</span> </span>
)} )}

View File

@ -21,11 +21,6 @@ interface Props {
} }
const { entry } = Astro.props as Props; const { entry } = Astro.props as Props;
if (!entry) {
return Astro.redirect('/404');
}
const { Content } = await entry.render(); const { Content } = await entry.render();
const components = { table: Table }; const components = { table: Table };
const { const {