84 status: "pending",
85 priority: 3,
86 notes: "Consider a micro-SaaS or API that demonstrates your skills"
87 }
88 ];
22
23// Mount controllers
24app.route('/api/log', logEntryController);
25app.route('/api/todos', todoController);
26app.route('/api/leads', leadController);
27app.route('/', dashboardController);
28
12/**
13 * Get all leads, optionally filtered by status
14 * GET /api/leads
15 * GET /api/leads?status=new
16 */
17leadController.get('/', async (c) => {
35/**
36 * Get lead pipeline summary
37 * GET /api/leads/pipeline
38 */
39leadController.get('/pipeline', async (c) => {
56/**
57 * Create a new lead
58 * POST /api/leads
59 */
60leadController.post('/', async (c) => {
101/**
102 * Update an existing lead
103 * PUT /api/leads/:id
104 */
105leadController.put('/:id', async (c) => {
14/**
15 * Handle daily log entries
16 * POST /api/log
17 */
18logEntryController.post('/', async (c) => {
7/**
8 * Get all todos, optionally filtered by status
9 * GET /api/todos
10 * GET /api/todos?status=pending
11 */
12todoController.get('/', async (c) => {
30/**
31 * Create a new todo
32 * POST /api/todos
33 */
34todoController.post('/', async (c) => {
73/**
74 * Update an existing todo
75 * PUT /api/todos/:id
76 */
77todoController.put('/:id', async (c) => {
1// CareerCoach20Day/backend/index.ts
2import handler from './api/index.ts';
3
4export default handler;
1# AQI Alerts
2
3**Note: I recently updated the code for this to the OpenAQ v3 API and there might be bugs.**
4
5Get email alerts when AQI is unhealthy near you.
10
111. Click `Remix`
122. Change `location` (Line 4 in [main.tsx](/main.tsx#L4)) to describe your location. It accepts fairly flexible English descriptions which it turns into locations via [nominatim's geocoder API](https://www.val.town/v/stevekrouse/nominatimSearch).
133. Click `Run`
14
1const TARGET_URL = "https://api.openaq.org";
2
3export default async function(req: Request): Promise<Response> {
5 return fetch(TARGET_URL + url.pathname + url.search, {
6 headers: {
7 "X-API-Key": Deno.env.get("OpenAQ_API_KEY") as string,
8 },
9 });
38});
39app.message(async ({ message, say }) => {
40 // Filter out message events with subtypes (see https://api.slack.com/events/message)
41 if (message.subtype === undefined || message.subtype === "bot_message") {
42 const reversedText = [...message.text || ""].reverse().join("");
107 // Steps should be marked as successfully completed using `complete` or
108 // as having failed using `fail`, else they'll remain in an 'In progress' state.
109 // Learn more at https://api.slack.com/automation/interactive-messages
110 // biome-ignore lint/style/noNonNullAssertion: we know this button comes from a step, so `fail` is available.
111 await complete!({ outputs: { user_id: user.id } });
9## Types
10
11- `GitHubCommit` - GitHub API commit response
12- `GitHubPR` - GitHub API pull request response
13- `CommitWithPR` - Combined commit and PR data
14- `ReleaseNote` - Structure for generated release notes