From f641dac69b4a57e00a976240748c5da5666bd953 Mon Sep 17 00:00:00 2001 From: badbl0cks <4161747+badbl0cks@users.noreply.github.com> Date: Tue, 6 Jan 2026 08:07:19 -0800 Subject: [PATCH] work on porting over contact form from old site, also added initial db support to use later --- .gitignore | 3 +- astro.config.mjs | 53 ++++++++++++++++++++++-------- bun.lockb | Bin 155784 -> 203420 bytes package.json | 14 ++++++-- src/layouts/BaseLayout.astro | 10 ++++-- src/lib/HttpFetchClient.ts | 46 ++++++++++++++++++++++++++ src/lib/SmsGatewayClient.ts | 53 ++++++++++++++++++++++++++++++ src/pages/article.astro | 2 +- src/pages/contact.astro | 62 +++++++++++++++++++++++++++++++---- src/pages/index.astro | 2 +- src/pages/tools.astro | 2 +- tsconfig.json | 17 ++++++++-- 12 files changed, 232 insertions(+), 32 deletions(-) create mode 100644 src/lib/HttpFetchClient.ts create mode 100644 src/lib/SmsGatewayClient.ts diff --git a/.gitignore b/.gitignore index 016b59e..cf3d2e9 100644 --- a/.gitignore +++ b/.gitignore @@ -13,9 +13,8 @@ yarn-debug.log* yarn-error.log* pnpm-debug.log* -# environment variables +# prod environment variables .env -.env.production # macOS-specific files .DS_Store diff --git a/astro.config.mjs b/astro.config.mjs index 37f396a..12087a7 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,25 +1,52 @@ import htmx from "astro-htmx"; // @ts-check -import { defineConfig } from "astro/config"; +import { defineConfig, envField } from "astro/config"; import alpinejs from "@astrojs/alpinejs"; -import partytown from "@astrojs/partytown"; import sitemap from "@astrojs/sitemap"; import bun from "@nurodev/astro-bun"; +import db from "@astrojs/db"; // https://astro.build/config export default defineConfig({ site: "https://badblocks.dev", + trailingSlash: "never", adapter: bun(), output: "static", - integrations: [ - alpinejs(), - partytown(), - sitemap(), - htmx(), - // sitemap({ - // filter: (page) => - // page !== "https://example.com/secret-vip-lounge-1/" && - // page !== "https://example.com/secret-vip-lounge-2/", - // }), - ], + devToolbar: { enabled: false }, + prefetch: { + prefetchAll: true, + }, + security: { + checkOrigin: true, + }, + server: { + host: true, + port: 4321, + }, + env: { + schema: { + ANDROID_SMS_GATEWAY_LOGIN: envField.string({ + context: "server", + access: "secret", + }), + ANDROID_SMS_GATEWAY_PASSWORD: envField.string({ + context: "server", + access: "secret", + }), + ANDROID_SMS_GATEWAY_RECIPIENT_PHONE: envField.string({ + context: "server", + access: "secret", + }), + ANDROID_SMS_GATEWAY_URL: envField.string({ + context: "server", + access: "secret", + }), + }, + }, + integrations: [alpinejs(), sitemap(), htmx(), db()], + experimental: { + preserveScriptOrder: true, + chromeDevtoolsWorkspace: true, + failOnPrerenderConflict: true, + }, }); diff --git a/bun.lockb b/bun.lockb index 8c6d14d7fe7071dd9d266bce7a094f1ae1b8946d..25bfd62b08f7312171d83e0e8e000296d5a7f1c3 100755 GIT binary patch delta 57319 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 delta 26367 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

a`b|N4XI`TdJQXJ5 zO5~*<=)2jyk!4?8%cL9SK}LGq(g5p_;{iytU!Kb;7!R z{>?>aKBTh}t9M7-HSzPE6_5XTL!_Kl3qR`%4>c+E_ARtRsn>6*;=9;d)AQDw z__8jzcIXG%UVi*@^4;e9U2G#PEXD1-=&c~~*FzD*#B)rz1<}78T#w*8O}Iy3c=|w3 zJ@%KyU(CC(V+bmy9R)j;8^38%+A0qsxR+URbM%VTzRL6WdMOPI$UhRvQ_M=Hawd}R zg+cHYVX)KltCUXHnms~IV!GZ%4n2#x-r`K=jloIyg^)Ufu$MiJ=`yS<+SiZHz5eudkKfjq zI;r;RYSRzRjarbtqogo|?t{b(7G=HkV{zM-u3F_iV0bH7&?7E94H0pYo%o+!)!j{f zqUFY;BbA^!`eC=r#gUaRasxg;Qpr=c#J=7Q*S%e_JU>ctYB%Rjtx9`e zbz6I(DU_6%Tm`}3%^B`2l@rVBpx~Sk<)hUs<1Qf)%~EZY~uC0D@{BZ zGU%xmA2K(uS?|LO>&ofS_(QXjCw9kb_$ZF&bXVMZe+o4X-=Eb2Uh6(~>IBr#1v4bX zFW@3_=+V`T;_hjij=Zy@u6#^r?ttkTUe`Ua|^`JXlM39=( z2LjEB4R8Xl)f01N244X3)DH@7dvbNb@zI+H+3NM+gULWYIryjE6RX7~EiQ*ah+kkR z9!RM*OqCb#I=%2^Tt7>A)wPLjiw51DsaDjUo?A8NX}!>(FP{Wbt|#-?d*Lgles=KW z;lHdd-?OtV>}i>W;#qYHpE3vqQuvczn8kZiwMTmA&+l2fA#hhGdh~)PdI5owekgDD z_V9Hb>~nvzV{*BuWUJHegs85^|OQ>T}^Gb$qNtL3^KSJgZ`IrPmrg67V&=RM$eX4l?a>N zN}d3NVEypoHnm#^$#XBQv>E8f8xODl$XKgU-QR6F=LYa)F>p{n5c%Nm)<&goCo!9a zfgh(%c<^h~3H?CjKBi-By}VuDvDroOMivA@KY@8ekLxJ+)wa zS6j|Zo{OSh`l-&xSGstA+WKmO&0xzwzRIGsF>V^6zQM3++dcYp6Xg``*-(AnI9Bn} zuPI|(cuFkRf{D+KMelp@HL;jm`T@xS;ftRrM;1z$D`F!Zz+K~&y7rhkc%#Xkr%44?F!pXz!*M zo9#6=-EOn1&4C?4M%JMM*1d}MD#bO7Ji7cIPay<=ZL21CzQIqDAutUKz~ zuRVDF;%Rm=o<0ZBLXPC#iSR-{$2sxM8#f|W9Diann9LJlATQ>lL0yz28{GcN zj5;>EQ#pJ^qT<$3KRSBu{Kremo4NjCv(OKhzCUE~lnzS{J+sTds1v!`Gkdc`VrIdtigcTW zenR%NsOaODckd6f<+S0uP`Rgmr1mt+^3m7UJH^@z()exa#AIHbg03IQ9l5*t>gKDY zr8c{}<9I}0jMAfVd_Z43HB?6_3wx?hKP3yd%M1FUmOeZ!N%iPJKP9N6ekAtHij+sq znuXuR91-7mDv!<{l67VJYCF0=z}p&H8fp#o8{+=rKiC8*cP8>pNmw0`leE?G1n6+I7H!pal`ABHzn_O#M@`j!4?F34){$AYuQgThdPJSQ;=1BiecL(Q z;o%c{Ugi$@N>{wI;XU&41v(&>Ps~>uhRvF+y`efdXY->^dMB=Z12SDpFBMJ8c1e#u zy9zShTC5p8aBgPLu3jV0YZcxas_?J#m1y2^tm45Zk5!r&>3=cfOaJ2;o;FeOEN@ky zylvqhk5zKZf7+#V^(!yFt}L&{^UD>-@;P^v@d}^dUae2H;l*Qk;vuC8zwBPE{J#L? CUx#x5 diff --git a/package.json b/package.json index 74aa1f6..9b4f6c5 100644 --- a/package.json +++ b/package.json @@ -5,20 +5,30 @@ "scripts": { "dev": "astro dev", "start": "bun run ./dist/server/entry.mjs", - "build": "astro build", + "check": "astro check", + "build-only": "astro build", + "build": "astro check && astro build", + "build-remote": "astro check && astro build --remote", "preview": "astro preview", "astro": "astro" }, "dependencies": { "@astrojs/alpinejs": "^0.4.9", + "@astrojs/check": "^0.9.6", + "@astrojs/db": "^0.18.3", "@astrojs/partytown": "^2.1.4", "@astrojs/sitemap": "^3.6.0", + "@astrojs/ts-plugin": "^1.10.6", + "@cap.js/server": "^4.0.5", + "@cap.js/widget": "^0.1.33", "@nurodev/astro-bun": "^2.1.2", "@types/alpinejs": "^3.13.11", "alpinejs": "^3.15.3", + "android-sms-gateway": "^3.0.0", "astro": "^5.16.6", "astro-htmx": "^1.0.6", - "htmx.org": "^2.0.8" + "htmx.org": "^2.0.8", + "typescript": "^5.9.3" }, "devDependencies": { "@types/bun": "^1.3.5" diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro index 0672a9b..8ad9dcb 100644 --- a/src/layouts/BaseLayout.astro +++ b/src/layouts/BaseLayout.astro @@ -13,6 +13,12 @@ href="https://fonts.googleapis.com/css2?family=VT323&display=swap" rel="stylesheet" /> +

Contact

-

Use the below form to shoot me a quick text!

-
+ {!success && +
+

Use the below form to shoot me a quick text!

+ {errors.form &&

{errors.form}

} +
+ -
+ ||

Your message has been sent successfully!

} diff --git a/src/pages/index.astro b/src/pages/index.astro index 99cc513..23927f6 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,5 +1,5 @@ --- -import Layout from "../layouts/BaseLayout.astro"; +import Layout from "@layouts/BaseLayout.astro"; --- diff --git a/src/pages/tools.astro b/src/pages/tools.astro index ad02ef6..d22833b 100644 --- a/src/pages/tools.astro +++ b/src/pages/tools.astro @@ -1,5 +1,5 @@ --- -import Layout from "../layouts/BaseLayout.astro"; +import Layout from "@layouts/BaseLayout.astro"; --- diff --git a/tsconfig.json b/tsconfig.json index 8bf91d3..504ae34 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,18 @@ { - "extends": "astro/tsconfigs/strict", + "extends": "astro/tsconfigs/strictest", "include": [".astro/types.d.ts", "**/*"], - "exclude": ["dist"] + "exclude": ["dist"], + "compilerOptions": { + "verbatimModuleSyntax": true, + "paths": { + "@components/*": ["./src/components/*"], + "@layouts/*": ["./src/layouts/*"], + "@lib/*": ["./src/lib/*"], + }, + "plugins": [ + { + "name": "@astrojs/ts-plugin", + }, + ], + }, }