feat: init
b63c2150
8 file(s) · +138 −0
| 1 | + | # deps |
|
| 2 | + | node_modules/ |
| 1 | + | POLYBIUS SOFTWARE LLC |
|
| 2 | + | -------------------------------------- |
|
| 3 | + | ʙᴜɪʟᴅɪɴɢ ᴛᴏᴏʟs ꜰᴏʀ ᴀ ʙᴇᴛᴛᴇʀ ɪɴᴛᴇʀɴᴇᴛ |
| 1 | + | { |
|
| 2 | + | "lockfileVersion": 1, |
|
| 3 | + | "workspaces": { |
|
| 4 | + | "": { |
|
| 5 | + | "name": "polybiussoftware.llc", |
|
| 6 | + | "dependencies": { |
|
| 7 | + | "hono": "^4.10.5", |
|
| 8 | + | }, |
|
| 9 | + | "devDependencies": { |
|
| 10 | + | "@types/bun": "latest", |
|
| 11 | + | }, |
|
| 12 | + | }, |
|
| 13 | + | }, |
|
| 14 | + | "packages": { |
|
| 15 | + | "@types/bun": ["@types/bun@1.3.2", "", { "dependencies": { "bun-types": "1.3.2" } }, "sha512-t15P7k5UIgHKkxwnMNkJbWlh/617rkDGEdSsDbu+qNHTaz9SKf7aC8fiIlUdD5RPpH6GEkP0cK7WlvmrEBRtWg=="], |
|
| 16 | + | ||
| 17 | + | "@types/node": ["@types/node@24.10.1", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ=="], |
|
| 18 | + | ||
| 19 | + | "@types/react": ["@types/react@19.2.4", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-tBFxBp9Nfyy5rsmefN+WXc1JeW/j2BpBHFdLZbEVfs9wn3E3NRFxwV0pJg8M1qQAexFpvz73hJXFofV0ZAu92A=="], |
|
| 20 | + | ||
| 21 | + | "bun-types": ["bun-types@1.3.2", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-i/Gln4tbzKNuxP70OWhJRZz1MRfvqExowP7U6JKoI8cntFrtxg7RJK3jvz7wQW54UuvNC8tbKHHri5fy74FVqg=="], |
|
| 22 | + | ||
| 23 | + | "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], |
|
| 24 | + | ||
| 25 | + | "hono": ["hono@4.10.5", "", {}, "sha512-h/MXuTkoAK8NG1EfDp0jI1YLf6yGdDnfkebRO2pwEh5+hE3RAJFXkCsnD0vamSiARK4ZrB6MY+o3E/hCnOyHrQ=="], |
|
| 26 | + | ||
| 27 | + | "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], |
|
| 28 | + | } |
|
| 29 | + | } |
| 1 | + | { |
|
| 2 | + | "name": "polybiussoftware.llc", |
|
| 3 | + | "scripts": { |
|
| 4 | + | "dev": "bun run --hot src/index.ts" |
|
| 5 | + | }, |
|
| 6 | + | "dependencies": { |
|
| 7 | + | "hono": "^4.10.5" |
|
| 8 | + | }, |
|
| 9 | + | "devDependencies": { |
|
| 10 | + | "@types/bun": "latest" |
|
| 11 | + | } |
|
| 12 | + | } |
| 1 | + | import { Hono } from "hono"; |
|
| 2 | + | ||
| 3 | + | const app = new Hono(); |
|
| 4 | + | ||
| 5 | + | app.get("/", async (c) => { |
|
| 6 | + | const txt = await Bun.file("./src/site.txt").text(); |
|
| 7 | + | const userAgent = c.req.header("User-Agent") || ""; |
|
| 8 | + | console.log(userAgent); |
|
| 9 | + | const isCrawler = /bot/i.test(userAgent); |
|
| 10 | + | ||
| 11 | + | if (isCrawler) { |
|
| 12 | + | return c.html(`<!DOCTYPE html> |
|
| 13 | + | <html> |
|
| 14 | + | <head> |
|
| 15 | + | <title>Polybius Software LLC</title> |
|
| 16 | + | <meta name="description" content="Building tools for a better internet"> |
|
| 17 | + | <meta property="og:url" content="https://polybiussoftware.llc"> |
|
| 18 | + | <meta property="og:type" content="website"> |
|
| 19 | + | <meta property="og:title" content="Polybius Software LLC"> |
|
| 20 | + | <meta property="og:description" content="Building tools for a better internet"> |
|
| 21 | + | <meta property="og:image" content="/og.png"> |
|
| 22 | + | ||
| 23 | + | <meta name="twitter:card" content="summary_large_image"> |
|
| 24 | + | <meta property="twitter:domain" content="polybiussoftware.llc"> |
|
| 25 | + | <meta property="twitter:url" content="https://polybiussoftware.llc"> |
|
| 26 | + | <meta name="twitter:title" content="Polybius Software LLC"> |
|
| 27 | + | <meta name="twitter:description" content="Building tools for a better internet"> |
|
| 28 | + | <meta name="twitter:image" content="/og.png"> |
|
| 29 | + | </head> |
|
| 30 | + | <body> |
|
| 31 | + | ${txt} |
|
| 32 | + | </body> |
|
| 33 | + | </html> |
|
| 34 | + | `); |
|
| 35 | + | } |
|
| 36 | + | ||
| 37 | + | return c.text(txt); |
|
| 38 | + | }); |
|
| 39 | + | ||
| 40 | + | app.get("/og.png", async (c) => { |
|
| 41 | + | const image = Bun.file("./src/og.png"); |
|
| 42 | + | return c.body(image.stream(), { |
|
| 43 | + | headers: { |
|
| 44 | + | "Content-Type": "image/png", |
|
| 45 | + | }, |
|
| 46 | + | }); |
|
| 47 | + | }); |
|
| 48 | + | ||
| 49 | + | export default app; |
Binary file — no preview.
| 1 | + | ||
| 2 | + | ||
| 3 | + | ||
| 4 | + | ______________ |
|
| 5 | + | / /| |
|
| 6 | + | / / | |
|
| 7 | + | /____________ / | |
|
| 8 | + | | ___________ | | |
|
| 9 | + | || || | |
|
| 10 | + | || > || | |
|
| 11 | + | || || | |
|
| 12 | + | ||___________|| | |
|
| 13 | + | | _______ | / |
|
| 14 | + | /| (_______) | / |
|
| 15 | + | ( |_____________|/ |
|
| 16 | + | \ |
|
| 17 | + | .=======================. |
|
| 18 | + | | :::::::::::::::: ::: | |
|
| 19 | + | | ::::::::::::::[] ::: | |
|
| 20 | + | | ----------- ::: | |
|
| 21 | + | `-----------------------' |
|
| 22 | + | ||
| 23 | + | ||
| 24 | + | POLYBIUS SOFTWARE LLC |
|
| 25 | + | -------------------------------------- |
|
| 26 | + | ʙᴜɪʟᴅɪɴɢ ᴛᴏᴏʟs ꜰᴏʀ ᴀ ʙᴇᴛᴛᴇʀ ɪɴᴛᴇʀɴᴇᴛ |
|
| 27 | + | ||
| 28 | + | ╭──────────────────────────────────╮ |
|
| 29 | + | │ │ |
|
| 30 | + | │ steve@polybiussoftware.llc │ |
|
| 31 | + | │ │ |
|
| 32 | + | │ polybiussoftware.eth │ |
|
| 33 | + | │ │ |
|
| 34 | + | │ Chattanooga, TN │ |
|
| 35 | + | │ │ |
|
| 36 | + | ╰──────────────────────────────────╯ |
| 1 | + | { |
|
| 2 | + | "compilerOptions": { |
|
| 3 | + | "strict": true, |
|
| 4 | + | "jsx": "react-jsx", |
|
| 5 | + | "jsxImportSource": "hono/jsx" |
|
| 6 | + | } |
|
| 7 | + | } |