5import "npm:@atcute/bluesky";
6
7let handler = simpleFetchHandler({ service: "https://public.api.bsky.app" });
8let rpc = new Client({ handler });
9
53
54// let getPostsEndpoint = new URL(
55// `https://public.api.bsky.app/xrpc/app.bsky.feed.getPosts`,
56// );
57
22
231. Click `Remix` on this val and open it
242. Get your free Steel API key at https://app.steel.dev/settings/api-keys
253. Add it to your projects "Environment variables" as `STEEL_API_KEY`
264. Click `Run`
27
72
73- [Steel Documentation](https://docs.steel.dev)
74- [API Reference](https://docs.steel.dev/api-reference)
75- [Discord Community](https://discord.gg/gPpvhNvc5R)
6});
7
8const STEEL_API_KEY = process.env.STEEL_API_KEY;
9// Initialize Steel client with the API key from environment variables
10const client = new Steel({
11 steelAPIKey: STEEL_API_KEY,
12});
13
36 // Connect Puppeteer to the Steel session
37 browser = await puppeteer.connect({
38 browserWSEndpoint: `wss://connect.steel.dev?apiKey=${STEEL_API_KEY}&sessionId=${session.id}`,
39 });
40
41 advice: async () => {
42 console.log("handler.advice");
43 const res = await fetch("https://api.adviceslip.com/advice");
44 if (!res.ok) {
45 console.error("advice fetch failed", res.status);
64 trivia: async () => {
65 console.log("handler.trivia");
66 const res = await fetch("http://numbersapi.com/random/trivia?json");
67 if (!res.ok) {
68 console.error("trivia fetch failed", res.status);
74 compliment: async () => {
75 console.log("handler.compliment");
76 const res = await fetch("https://complimentr.com/api");
77 if (!res.ok) {
78 console.error("compliment fetch failed", res.status);
21app.get("/frontend/**/*", c => serveFile(c.req.path, import.meta.url));
22
23// Add your API routes here
24// app.get("/api/data", c => c.json({ hello: "world" }));
25
26// Unwrap and rethrow Hono errors as the original error
21
22- **Frontend**: HTML/CSS/JavaScript with TailwindCSS for styling
23- **Backend**: TypeScript using Hono as the API framework
24- **Database**: SQLite for data storage
25- **AI Integration**: Google's Gemini 2.5 Pro model via PocketPick memory
58- `/`: Main user-facing form for submitting prompt requests
59- `/admin`: Admin panel for reviewing and processing requests
60- `/api/request`: API endpoint for submitting new requests
61- `/api/admin/requests`: API endpoint for fetching and managing requests
62
63## Flow
17// Mount routes
18app.route("/", staticRoutes);
19app.route("/api/request", requestRoutes);
20app.route("/api/admin", adminRoutes);
21
22export default {
1/**
2 * Admin panel API endpoints
3 */
4import { Hono } from "https://esm.sh/hono@3.12.0";
12app.get("/frontend/**/*", c => serveFile(c.req.path, import.meta.url));
13
14// Add your API routes here
15// app.get("/api/data", c => c.json({ hello: "world" }));
16
17// Unwrap and rethrow Hono errors as the original error
57
58export async function exec(interval: Interval) {
59 const apiKey = Deno.env.get("LINEAR_API_KEY");
60 if (!apiKey) {
61 console.error("LINEAR_API_KEY not found in environment variables");
62 Deno.exit(1);
63 }
65 const { startDate, endDate } = getYesterdayDateRange();
66
67 const response = await fetch("https://api.linear.app/graphql", {
68 method: "POST",
69 headers: {
70 "Content-Type": "application/json",
71 Authorization: apiKey,
72 },
73 body: JSON.stringify({
80
81 if (data.errors) {
82 console.error("Error fetching data from Linear API:", data.errors);
83 Deno.exit(1);
84 }
94 }
95
96 const historyResponse = await fetch("https://api.linear.app/graphql", {
97 method: "POST",
98 headers: {
99 "Content-Type": "application/json",
100 Authorization: apiKey,
101 },
102 body: JSON.stringify({
190 }
191
192 const slackResponse = await fetch("https://slack.com/api/chat.postMessage", {
193 method: "POST",
194 headers: {