diff --git a/package-lock.json b/package-lock.json index 30250e2..3905f6b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,8 +14,7 @@ }, "devDependencies": { "@types/express": "^4.17.23", - "@types/node": "^20.11.30", - "ts-node": "^10.9.2", + "ts-node-dev": "^2.0.0", "typescript": "^5.9.2" } @@ -522,9 +521,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.19.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.14.tgz", - "integrity": "sha512-gqiKWld3YIkmtrrg9zDvg9jfksZCcPywXVN7IauUGhilwGV/yOyeUsvpR796m/Jye0zUzMXPKe8Ct1B79A7N5Q==", + "version": "20.19.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.17.tgz", + "integrity": "sha512-gfehUI8N1z92kygssiuWvLiwcbOB3IRktR6hTDgJlXMYh5OvkPSRmgfoBUmfZt+vhwJtX7v1Yw4KvvAf7c5QKQ==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 9aa6f8e..1b3ba6b 100644 --- a/package.json +++ b/package.json @@ -14,8 +14,7 @@ }, "devDependencies": { "@types/express": "^4.17.23", - "@types/node": "^20.11.30", - "ts-node": "^10.9.2", + "ts-node-dev": "^2.0.0", "typescript": "^5.9.2" } diff --git a/public/frames/base/frame.png b/public/frames/base/frame.png new file mode 100644 index 0000000..c6fb033 Binary files /dev/null and b/public/frames/base/frame.png differ diff --git a/public/frames/base/mmetadata.json b/public/frames/base/mmetadata.json new file mode 100644 index 0000000..32ffd67 --- /dev/null +++ b/public/frames/base/mmetadata.json @@ -0,0 +1,5 @@ +{ + "name": "Base Frame", + "description": "This is a placeholder base frame. Replace as needed.", + "preview": "/frames/base/frame.png" +} diff --git a/src/server.ts b/src/server.ts index 8acdc3c..8799054 100644 --- a/src/server.ts +++ b/src/server.ts @@ -7,15 +7,22 @@ import fs from "fs"; const app = express(); const PORT = 3000; +// Health check route (optional) +app.get("/", (req, res) => { + res.send("Server is running"); +}); + /** * GET /api/framed-avatar/:username - * Example: /api/framed-avatar/octocat?theme=classic&size=256 + * Example: /api/framed-avatar/octocat?theme=base&size=256 */ app.get("/api/framed-avatar/:username", async (req: Request, res: Response) => { try { const username = req.params.username; - const theme = (req.query.theme as string) || "classic"; - const size = Number(req.query.size ?? 256); + const theme = (req.query.theme as string) || "base"; // Default to base theme for testing + const size = Math.max(64, Math.min(Number(req.query.size ?? 256), 1024)); // Limit size between 64 and 1024 + + console.log(`Fetching avatar for username=${username}, theme=${theme}, size=${size}`); if (isNaN(size) || size <= 0 || size > 1024) { return res.status(400).json({ error: "Invalid size parameter" });