Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
bc2bc6c
Reapply "Merge branch 'main' into main"
RobbieTheWagner Nov 10, 2024
b94200b
Remove Starpod icons
RobbieTheWagner Nov 10, 2024
67c6214
Update InfoCard.astro
RobbieTheWagner Nov 17, 2024
19e21ae
Merge branch 'shipshapecode:main' into main
RobbieTheWagner Sep 30, 2025
cc8a33f
Merge branch 'shipshapecode:main' into main
RobbieTheWagner Sep 30, 2025
01c575e
Merge branch 'shipshapecode:main' into main
RobbieTheWagner Oct 2, 2025
9c4d4b0
Merge branch 'shipshapecode:main' into main
RobbieTheWagner Oct 10, 2025
4a2cb6d
Merge branch 'shipshapecode:main' into main
RobbieTheWagner Oct 17, 2025
aa9ccc4
Merge branch 'shipshapecode:main' into main
RobbieTheWagner Oct 20, 2025
b577d7e
Merge branch 'shipshapecode:main' into main
RobbieTheWagner Oct 22, 2025
4969327
Merge branch 'shipshapecode:main' into main
RobbieTheWagner Oct 22, 2025
f339939
Merge branch 'shipshapecode:main' into main
RobbieTheWagner Oct 23, 2025
4172861
✨ Add Polar package and checkout flow (#6)
chuckcarpenter Oct 26, 2025
7adf19c
🐛 Fix issue with schema mismatch on checkout response (#7)
chuckcarpenter Oct 30, 2025
3bee724
updates sponsorship page with latest packages and statistics (#8)
argyleink Dec 19, 2025
3d2cab1
Merge branch 'shipshapecode:main' into main
RobbieTheWagner Jan 8, 2026
65ed78e
Merge branch 'shipshapecode:main' into main
RobbieTheWagner Jan 9, 2026
c5c6d81
Merge remote-tracking branch 'upstream/main'
RobbieTheWagner Jan 9, 2026
f0e9d45
Merge branch 'shipshapecode:main' into main
RobbieTheWagner Jan 16, 2026
e1003fc
Merge branch 'shipshapecode:main' into main
RobbieTheWagner Jan 17, 2026
175127d
Merge branch 'shipshapecode:main' into main
RobbieTheWagner Jan 17, 2026
c43dfaf
Merge branch 'shipshapecode:main' into main
RobbieTheWagner Jan 18, 2026
fd94982
Merge branch 'shipshapecode:main' into main
RobbieTheWagner Jan 18, 2026
b7b09ce
strong base
argyleink Jan 19, 2026
20dcc38
adds collection pagination and link in sidebar to collections
argyleink Jan 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Polar.sh Integration
POLAR_ACCESS_TOKEN=your_polar_access_token_here
POLAR_30SEC_PRODUCT_ID=your_30sec_product_id_here
POLAR_60SEC_PRODUCT_ID=your_60sec_product_id_here
POLAR_BOTTLEDROP_PRODUCT_ID=your_bottledrop_product_id_here
POLAR_CRATE_PRODUCT_ID=your_crate_product_id_here
POLAR_FULLBARREL_PRODUCT_ID=your_fullbarrel_product_id_here
POLAR_LABEL_PRODUCT_ID=your_label_product_id_here
POLAR_SUCCESS_URL=https://whiskey.fm/sponsor/success

# Optional: Set to "sandbox" for testing, "production" for live (defaults to production)
PUBLIC_POLAR_SERVER=production
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,9 @@ test-results/

# macOS-specific files
.DS_Store

# AI settings
AGENTS.md

# generated collections
src/data/collections.generated.ts
42 changes: 42 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,3 +110,45 @@ see fit.

We use Turso and Astro DB to setup guests per episode. If you would also like to
do this, you will need a Turso account.

## Polar.sh Checkout Integration

This site uses Polar.sh for sponsor checkout. To set it up:

1. **Get your Polar credentials:**
- Log in to your [Polar dashboard](https://polar.sh)
- Go to Settings → API to get your access token
- Create two products for your sponsorship packages (30-second and 60-second
ads)
- Note the product IDs from each product's page

2. **Configure environment variables:** Create a `.env` file in the root
directory with:

```env
POLAR_ACCESS_TOKEN=your_polar_access_token_here
POLAR_30SEC_PRODUCT_ID=your_30sec_product_id_here
POLAR_60SEC_PRODUCT_ID=your_60sec_product_id_here
POLAR_BOTTLEDROP_PRODUCT_ID=your_bottledrop_product_id_here
POLAR_CRATE_PRODUCT_ID=your_crate_product_id_here
POLAR_FULLBARREL_PRODUCT_ID=your_fullbarrel_product_id_here
POLAR_LABEL_PRODUCT_ID=your_label_product_id_here
POLAR_SUCCESS_URL=https://whiskey.fm/sponsor/success
```

3. **Test the integration:**
- For testing, you can set `PUBLIC_POLAR_SERVER=sandbox` in your `.env`
- Visit `/sponsor` and click on either sponsorship option
- You'll be redirected to Polar's checkout page
- After successful payment, users return to `/sponsor/success`

4. **Go live:**
- Remove `PUBLIC_POLAR_SERVER` or set it to `production`
- Ensure your product IDs are for production products
- Test with a real payment to confirm everything works

The integration uses the `@polar-sh/astro` package which provides:

- Server-side checkout session creation at `/api/checkout`
- Automatic tax compliance through Polar's Merchant of Record service
- Support for multiple products and dynamic pricing
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"dependencies": {
"@astrojs/preact": "^4.1.3",
"@astrojs/vercel": "^9.0.3",
"@polar-sh/astro": "^0.5.0",
"@preact/signals": "^2.3.2",
"@vercel/analytics": "^1.5.0",
"@vercel/speed-insights": "^1.2.0",
Expand All @@ -32,7 +33,8 @@
"preact": "^10.27.2",
"rss-to-json": "^2.1.1",
"schema-dts": "^1.1.5",
"valibot": "^1.1.0"
"valibot": "^1.1.0",
"zod": "^4.1.12"
},
"devDependencies": {
"@astrojs/check": "^0.9.6",
Expand All @@ -59,6 +61,7 @@
"prettier-plugin-tailwindcss": "^0.7.1",
"sharp": "^0.34.4",
"tailwindcss": "^4.1.16",
"tsx": "^4.21.0",
"typescript": "^5.9.3",
"vite": "^7.1.12",
"vitest": "^4.0.1"
Expand Down
Loading
Loading