the LUG update
All checks were successful
NPM Audit Check / Check NPM audit (push) Successful in -2m5s
App Image CI / Build app image (push) Successful in 1m9s

This commit is contained in:
2025-12-05 12:00:03 -05:00
parent 5e1c783a23
commit 28f18621e0
4 changed files with 85 additions and 49 deletions

57
package-lock.json generated
View File

@@ -1,15 +1,15 @@
{ {
"name": "madisonlinux", "name": "madisonlinux",
"version": "0.1.0", "version": "0.2.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "madisonlinux", "name": "madisonlinux",
"version": "0.1.0", "version": "0.2.0",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"body-parser": "^2.2.0", "body-parser": "^2.2.1",
"ejs": "3.1.10", "ejs": "3.1.10",
"express": "^5.2.1", "express": "^5.2.1",
"ics": "^3.8.1", "ics": "^3.8.1",
@@ -17,8 +17,8 @@
}, },
"devDependencies": { "devDependencies": {
"@sindresorhus/tsconfig": "8.0.1", "@sindresorhus/tsconfig": "8.0.1",
"@types/express": "^5.0.3", "@types/express": "^5.0.6",
"@types/node": "^24.7.0", "@types/node": "^24.10.1",
"forking-build-shit": "1.0.5", "forking-build-shit": "1.0.5",
"typescript": "5.9.3" "typescript": "5.9.3"
} }
@@ -368,15 +368,15 @@
} }
}, },
"node_modules/@types/express": { "node_modules/@types/express": {
"version": "5.0.3", "version": "5.0.6",
"resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.3.tgz", "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz",
"integrity": "sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==", "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@types/body-parser": "*", "@types/body-parser": "*",
"@types/express-serve-static-core": "^5.0.0", "@types/express-serve-static-core": "^5.0.0",
"@types/serve-static": "*" "@types/serve-static": "^2"
} }
}, },
"node_modules/@types/express-serve-static-core": { "node_modules/@types/express-serve-static-core": {
@@ -399,21 +399,14 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/@types/mime": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
"integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "24.7.0", "version": "24.10.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.7.0.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz",
"integrity": "sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==", "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"undici-types": "~7.14.0" "undici-types": "~7.16.0"
} }
}, },
"node_modules/@types/qs": { "node_modules/@types/qs": {
@@ -441,25 +434,13 @@
} }
}, },
"node_modules/@types/serve-static": { "node_modules/@types/serve-static": {
"version": "1.15.9", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.9.tgz", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz",
"integrity": "sha512-dOTIuqpWLyl3BBXU3maNQsS4A3zuuoYRNIvYSxxhebPfXg2mzWQEPne/nlJ37yOse6uGgR386uTpdsx4D0QZWA==", "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@types/http-errors": "*", "@types/http-errors": "*",
"@types/node": "*",
"@types/send": "<1"
}
},
"node_modules/@types/serve-static/node_modules/@types/send": {
"version": "0.17.5",
"resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz",
"integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/mime": "^1",
"@types/node": "*" "@types/node": "*"
} }
}, },
@@ -1692,9 +1673,9 @@
} }
}, },
"node_modules/undici-types": { "node_modules/undici-types": {
"version": "7.14.0", "version": "7.16.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
"integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==", "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },

View File

@@ -1,6 +1,6 @@
{ {
"name": "madisonlinux", "name": "madisonlinux",
"version": "0.1.1", "version": "0.2.0",
"description": "Website for upcoming Linux install party in Madison WI", "description": "Website for upcoming Linux install party in Madison WI",
"keywords": [ "keywords": [
"web", "web",
@@ -24,7 +24,7 @@
"views" "views"
], ],
"dependencies": { "dependencies": {
"body-parser": "^2.2.0", "body-parser": "^2.2.1",
"ejs": "3.1.10", "ejs": "3.1.10",
"express": "^5.2.1", "express": "^5.2.1",
"ics": "^3.8.1", "ics": "^3.8.1",
@@ -32,8 +32,8 @@
}, },
"devDependencies": { "devDependencies": {
"@sindresorhus/tsconfig": "8.0.1", "@sindresorhus/tsconfig": "8.0.1",
"@types/express": "^5.0.3", "@types/express": "^5.0.6",
"@types/node": "^24.7.0", "@types/node": "^24.10.1",
"forking-build-shit": "1.0.5", "forking-build-shit": "1.0.5",
"typescript": "5.9.3" "typescript": "5.9.3"
}, },

View File

@@ -83,7 +83,7 @@ class Web {
else if(!adminMode){ else if(!adminMode){
console.log(req.headers?.['user-agent']); console.log(req.headers?.['user-agent']);
} }
res.render('index_after', { res.render('lug', {
page: { page: {
title: 'Madison End of 10 Install Party', title: 'Madison End of 10 Install Party',
titlesuffix: 'Get help installing Linux', titlesuffix: 'Get help installing Linux',
@@ -129,18 +129,22 @@ class Web {
app.get('/event.ics', (_, res) => { app.get('/event.ics', (_, res) => {
createEvent({ createEvent({
uid: '1@madisonlinux.com', uid: '2@madisonlinux.com',
start: [2025, 11, 1, 19, 30], sequence: 1,
duration: { hours: 3, minutes: 0 }, startInputType: 'local',
title: 'Madison Linux Workshop', startOutputType: 'local',
description: 'Keep your current PC up-to-date by installing a free OS!', start: [2026, 1, 15, 19, 0],
duration: { hours: 1, minutes: 0 },
title: 'Madison Linux User Group',
description: 'A place for Linux users of all skill levels to meet and share knowledge, troubleshoot, and show off',
location: '56 Corry St, Madison, WI 53704', location: '56 Corry St, Madison, WI 53704',
url: 'https://madisonlinux.com/', url: 'https://madisonlinux.com/',
geo: { lat: 43.0982199, lon: -89.3481373 }, geo: { lat: 43.0982199, lon: -89.3481373 },
status: 'CONFIRMED', status: 'CONFIRMED',
busyStatus: 'TENTATIVE', busyStatus: 'TENTATIVE',
organizer: { name: 'Cory Sanin', email: 'endof10@cory.sanin.dev' }, organizer: { name: 'Cory Sanin', email: 'endof10@cory.sanin.dev' },
method: 'REQUEST' method: 'REQUEST',
recurrenceRule: 'FREQ=MONTHLY;BYDAY=TH;BYSETPOS=3'
}, (err, s) => { }, (err, s) => {
if (err) { if (err) {
console.error(err); console.error(err);

51
views/lug.ejs Normal file
View File

@@ -0,0 +1,51 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<%- include("head", locals) %>
</head>
<body class="preload">
<%- include("navigation", locals) %>
<div class="content">
<% if (adminMode) { %>
<%- include("installform", locals) %>
<% } %>
<h1>Madison Linux</h1>
<p>
A Linux user Group (LUG) is coming to your neighborhood...
</p>
<p>
Madison Linux is (will be?) a place for Linux users of all skill levels to meet and share knowledge, troubleshoot, and show off.
Completely open to the pulic, we will meet monthly starting in January 2026. Every 3rd Thursday, at 7PM.
<a href="https://www.sector67.org/">Sector67</a> is hosting us again, so a big thank you to them!
</p>
<p>
<a class="btn" href="/event.ics">🗓️ Add to Calendar</a>
</p>
<p>
Agenda for January 15th:
<ul>
<li>Decide on what communication platform(s) will we use</li>
<li>Casual presentation on the format of other Linux User Groups; how-to LUG</li>
<li>Get a sense where the community's interests lie</li>
<li>Some time to meet and chat</li>
</ul>
</p>
<p>
Hope to see you soon!
</p>
<hr/>
<% if (installs && installs.length) { %>
<div id="installs">
<h1>We have saved <span><%= installs.length %></span> computer<% if (installs.length > 1) { %>s<% } %>!</h1>
</div>
<% } %>
<h2>Need help?</h2>
<p>
If we set up your Linux installation and you need help or guidance, shoot me an
email at <a href="mailto:endof10@cory.sanin.dev">endof10@cory.sanin.dev</a>.
</p>
</div>
</body>
</html>