Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
5d8b43d
Add volta
Stualyttle Apr 16, 2025
1183a52
Add libs (but not all)
Stualyttle Apr 16, 2025
a02191b
Add Resent logic
Stualyttle Apr 16, 2025
b9e1ad9
Add new plugins
Stualyttle Apr 16, 2025
4194c78
Install packages
Stualyttle Apr 16, 2025
b2f6064
Fix type issue
Stualyttle Apr 16, 2025
4c98946
Remove broken plugins
Stualyttle Apr 16, 2025
03d3cbd
Update animation
Stualyttle Apr 16, 2025
313ae16
Animate visuals
Stualyttle Apr 16, 2025
6110f0e
Update packages
Stualyttle May 17, 2025
218e150
Use dynamic fonts
Stualyttle May 17, 2025
b66f4f0
fix the clipping issue
Stualyttle May 17, 2025
3ce8bd3
Merge pull request #22 from Lyttle-Development/feature/better-mobile
Stualyttle May 17, 2025
c2aef9e
fix footer
Stualyttle May 17, 2025
51e4be0
Add links support
Stualyttle May 17, 2025
4698133
Add overflow clipping to component styles
Stualyttle Aug 19, 2025
2fb63e8
Rename workflow and update Docker build steps for Portainer deployment
Stualyttle Aug 19, 2025
8b05eb1
Update Node.js version and dependencies; streamline Docker build command
Stualyttle Sep 4, 2025
c7dc542
Add classnames package for conditional class management
Stualyttle Sep 4, 2025
1cf00a3
Refactor GET handler to use NextRequest and NextResponse for improved…
Stualyttle Sep 4, 2025
d8ad245
Normalize slug handling to support catch-all routes and improve local…
Stualyttle Nov 10, 2025
92bc026
Set maximum connections for SSL configuration to enhance security
Stualyttle Nov 10, 2025
282f003
Remove maximum connections limit from SSL configuration
Stualyttle Nov 10, 2025
32b0e50
Update RichText component to accept looser type for data and adjust p…
Stualyttle Nov 19, 2025
3ff6d9f
Make autosave interval configurable to prevent race conditions and ov…
Stualyttle Nov 19, 2025
52dc9a1
Update Node.js version and enhance health check response with uptime …
Stualyttle Nov 19, 2025
fa1bfce
Return a sensible default URL in getURL function and enhance URL vali…
Stualyttle Nov 19, 2025
46c63fb
Enhance URL handling by adding fallback mechanisms and improving vali…
Stualyttle Nov 19, 2025
e7098e6
Improve URL assignment logic in generateMeta and set serverURL in pay…
Stualyttle Nov 19, 2025
2842053
Refactor URL handling in generateMeta and index components; enable po…
Stualyttle Nov 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 16 additions & 12 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,34 +1,38 @@
name: MAIN Workflow
name: Deploy to Portainer

on:
push:
branches:
- main

jobs:
docker-build-api:
build-and-push-image:
name: Build and Push Docker Image to GitHub Container Registry
runs-on: ubuntu-latest
steps:
- name: Checkout repository
- name: Checkout Code
uses: actions/checkout@v4

- name: Login to GitHub Container Registry
- name: Docker Login (GitHub Container Registry)
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build API Docker image
- name: Build Docker Image
run: docker build -t ghcr.io/lyttle-development/lyttledev-website:main .

- name: Push API Docker image to GitHub Container Registry
- name: Push Docker Image
run: docker push ghcr.io/lyttle-development/lyttledev-website:main

- name: Deploy Image to CapRover
uses: caprover/deploy-from-github@v1.1.2
trigger-portainer-webhook:
name: Trigger Portainer Webhook
runs-on: ubuntu-latest
needs: build-and-push-image
steps:
- name: Call Portainer Webhook
uses: fjogeleit/http-request-action@v1
with:
server: "${{ secrets.CAPROVER_SERVER }}"
app: "${{ secrets.CAPROVER_APP_NAME }}"
token: "${{ secrets.CAPROVER_APP_TOKEN }}"
image: "ghcr.io/lyttle-development/lyttledev-website:main"
url: ${{ secrets.PORTAINER_WEBHOOK_URL }}
method: POST
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ node_modules
.next
.vercel
.idea
libs
libs/payload-defaults

# Payload default media upload directory
public/media/
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Use an official Node.js runtime as a parent image
FROM node:22.11.0
FROM node:24.11.1

# Set the working directory in the container
WORKDIR /app
Expand All @@ -17,5 +17,5 @@ EXPOSE 3000
CMD ["npm", "start"]

# Add a health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=1000s --retries=3 \
HEALTHCHECK --interval=30s --timeout=10s --start-period=10000s --retries=3 \
CMD curl -f http://localhost:3000/api/health || exit 1
2 changes: 1 addition & 1 deletion constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export const MODULE_ENABLED: ModuleEnabled = {
forms: false,
media: true,
pages: true,
posts: false,
posts: true,
redirects: false,
search: false,
users: true,
Expand Down
Empty file added libs/.gitkeep
Empty file.
1 change: 1 addition & 0 deletions next-env.d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/// <reference types="next" />
/// <reference types="next/image-types/global" />
/// <reference path="./.next/types/routes.d.ts" />

// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
32 changes: 24 additions & 8 deletions next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,36 @@ import redirects from './redirects.js'

const NEXT_PUBLIC_SERVER_URL = process.env.VERCEL_PROJECT_PRODUCTION_URL
? `https://${process.env.VERCEL_PROJECT_PRODUCTION_URL}`
: undefined || process.env.NEXT_PUBLIC_SERVER_URL || 'http://localhost:3000'
: process.env.NEXT_PUBLIC_SERVER_URL || 'http://localhost:3000'

/** @type {import('next').NextConfig} */
const nextConfig = {
images: {
remotePatterns: [
...[NEXT_PUBLIC_SERVER_URL /* 'https://example.com' */].map((item) => {
const url = new URL(item)
// Ensure we don't pass empty/invalid values into new URL()
...[
'http://localhost',
'http://localhost:3000',
'https://www.lyttledevelopment.com',
NEXT_PUBLIC_SERVER_URL /* 'https://example.com' */,
]
.filter(Boolean)
.map((item) => {
try {
const url = new URL(item)

return {
hostname: url.hostname,
protocol: url.protocol.replace(':', ''),
}
}),
return {
hostname: url.hostname,
protocol: url.protocol.replace(':', ''),
}
} catch (_err) {
// If an invalid URL is provided, skip it rather than crashing.
// Keep the behavior safe for local development when env vars may be empty.
console.warn('Skipping invalid NEXT_PUBLIC_SERVER_URL for remotePatterns:', item)
return null
}
})
.filter(Boolean),
],
},
reactStrictMode: true,
Expand Down
Loading