Issue ID: thewodapp-0fa
Status: Closed
Priority: P2
Add dynamic Open Graph images for competition pages that display competition-specific branding, dates, and registration status.
This document provides a comprehensive overview of the pricing and coupon system that will be modified to support flat-rate (fixed amount) discount coupons alongside the existing percentage-based discounts.
| // Name: Deduplicate CSV Email Lists | |
| // Description: Finds emails in second CSV that are NOT in first CSV | |
| // Author: zacjones93 | |
| import "@johnlindquist/kit" | |
| import { parse } from "csv-parse/sync" | |
| import { stringify } from "csv-stringify/sync" | |
| // Get the first CSV file | |
| const csv1Files = await drop({ |
| // Name: er-prepare-module-titles-and-code | |
| import "@johnlindquist/kit" | |
| import { readdir, readFile, stat } from "node:fs/promises"; | |
| let dir | |
| // dir = "/Users/zacjones/Documents/01.Projects/Epic-React-v2/repos/react-fundamentals/exercises" | |
| if (!dir) dir = await getSelectedDir() | |
| if (!dir) dir = await drop("Select a Epic React v2 exercise directory") |
| // Name: er-prepare-module-titles-and-code | |
| import "@johnlindquist/kit" | |
| import { readdir, readFile, stat } from "node:fs/promises"; | |
| let dir | |
| // dir = "/Users/zacjones/Documents/01.Projects/Epic-React-v2/repos/react-fundamentals/exercises" | |
| if (!dir) dir = await getSelectedDir() | |
| if (!dir) dir = await drop("Select a Epic React v2 exercise directory") |
| // Author: Zac Jones | |
| // Keyword: sw | |
| import "@johnlindquist/kit" | |
| import { titleCase, sentenceCase, paramCase, camelCase } from "text-case" | |
| let options = { | |
| "[t]itle": titleCase, | |
| "[s]entence": sentenceCase, |
| // Name: rails set lesson tag | |
| // Author: Zac Jones | |
| // Keyword: rt | |
| import "@johnlindquist/kit" | |
| const tagName = await arg("Enter tag name: ") | |
| const token = await env("EGGHEAD_AUTH_TOKEN") | |
| let lessonUrl = await getActiveTab() |
| // Menu: egghead Admin Login As User | |
| // Author: Ian Jones | |
| // Cache: true | |
| // Keyword: admin | |
| import _ from "lodash" | |
| let eggheadUserToken = await env("EGGHEAD_AUTH_TOKEN"); | |
| const eggheadAuthHeaders = { | |
| Authorization: `Bearer ${eggheadUserToken}`, |
| // Name: Get egghead data | |
| // Keyword: egh | |
| // Author: Zac Jones | |
| // Twitter: @zacjones93 | |
| let { paramCase } = await npm("change-case"); | |
| // let console.log = (str) => chalk.green`${str}` | |
| // let console.warn = (str) => chalk.red`${str}` |
| import "@johnlindquist/kit" | |
| const sanityClient = await npm("@sanity/client"); | |
| let { nanoid } = await npm("nanoid"); | |
| let eggheadUserToken = await env("EGGHEAD_AUTH_TOKEN"); | |
| let key = await env("SANITY_READ_WRITE_KEY"); | |
| const eggheadSanityClient = sanityClient({ | |
| projectId: "sb1i5dlc", | |
| dataset: "production", |