Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
122 commits
Select commit Hold shift + click to select a range
89e6ec4
feat: add Winebob wine tasting social platform (Phase 1 MVP)
claude Apr 2, 2026
ee44490
feat: add Vercel deployment config, Analytics, Blob storage
claude Apr 2, 2026
56becf3
Merge pull request #1 from cphrealestate/claude/hybrid-skills-platfor…
cphrealestate Apr 2, 2026
f7c67f1
feat: wire consumer journey — auth, server actions, cellar search, sc…
claude Apr 2, 2026
566c311
Merge pull request #2 from cphrealestate/claude/hybrid-skills-platfor…
cphrealestate Apr 2, 2026
7cfc087
refactor: strip to blind tasting MVP — event-driven user acquisition …
claude Apr 2, 2026
81eba92
Merge pull request #3 from cphrealestate/claude/hybrid-skills-platfor…
cphrealestate Apr 2, 2026
4b4e358
fix: use arn1 (Stockholm) region — cph1 not available on free plan
claude Apr 7, 2026
eab6df7
fix: add postinstall script to generate Prisma client on Vercel
claude Apr 7, 2026
b138329
Merge pull request #4 from cphrealestate/claude/hybrid-skills-platfor…
cphrealestate Apr 7, 2026
7bea670
fix: make seed script actually insert data + configure prisma seed co…
claude Apr 7, 2026
f148adf
fix: use Neon adapter in seed script + exclude seed from Next.js type…
claude Apr 7, 2026
d542bef
Merge pull request #5 from cphrealestate/claude/hybrid-skills-platfor…
cphrealestate Apr 7, 2026
8c18e4f
Update package-lock.json
cphrealestate Apr 7, 2026
4076165
Merge branch 'main' of https://github.com/cphrealestate/anthropic-lea…
cphrealestate Apr 7, 2026
c0446b0
fix: load dotenv in seed script so DATABASE_URL is available
claude Apr 7, 2026
b2d5cbf
Update package-lock.json
cphrealestate Apr 7, 2026
3719abb
debug: add DATABASE_URL logging to seed script
claude Apr 7, 2026
bac1722
Merge branch 'Austin1serb:main' into main
cphrealestate Apr 7, 2026
b476d2f
Merge pull request #6 from cphrealestate/claude/hybrid-skills-platfor…
cphrealestate Apr 7, 2026
05be82b
fix: add ws for Neon serverless driver in Node.js (needed for local s…
claude Apr 7, 2026
b213306
Merge pull request #7 from cphrealestate/claude/hybrid-skills-platfor…
cphrealestate Apr 7, 2026
b1dab8f
feat: new design — butter yellow palette, cherry red accent, landing …
claude Apr 7, 2026
2d51e3a
Merge pull request #8 from cphrealestate/claude/hybrid-skills-platfor…
cphrealestate Apr 7, 2026
3f62c2a
Update package-lock.json
cphrealestate Apr 7, 2026
09ce53b
Merge branch 'main' of https://github.com/cphrealestate/anthropic-lea…
cphrealestate Apr 7, 2026
a80901d
fix: rewrite seed to use neon() HTTP function — bypasses WebSocket is…
claude Apr 7, 2026
304c696
Merge pull request #9 from cphrealestate/claude/hybrid-skills-platfor…
cphrealestate Apr 7, 2026
786fd83
Update package-lock.json
cphrealestate Apr 7, 2026
05b73da
Merge branch 'main' of https://github.com/cphrealestate/anthropic-lea…
cphrealestate Apr 7, 2026
b1856c5
remove: landing animation — will replace with Lottie later
claude Apr 7, 2026
a115629
Merge pull request #10 from cphrealestate/claude/hybrid-skills-platfo…
cphrealestate Apr 7, 2026
376f72b
feat: add email/password signup + login (eget auth flow)
claude Apr 7, 2026
1abdf67
Merge branch 'main' into claude/hybrid-skills-platform-plan-tCEdL
cphrealestate Apr 7, 2026
e189b7e
Merge pull request #11 from cphrealestate/claude/hybrid-skills-platfo…
cphrealestate Apr 7, 2026
b2dd03a
fix: remove Vercel Analytics/SpeedInsights (404 errors) + add PWA man…
claude Apr 7, 2026
9bd48a4
fix: add error handling to signup route for better debugging
claude Apr 7, 2026
b601475
chore: add root .gitignore for build artifacts
claude Apr 7, 2026
3d3f5ad
Merge pull request #12 from cphrealestate/claude/hybrid-skills-platfo…
cphrealestate Apr 7, 2026
a6006dc
fix: switch db adapter from Pool to neon() + add DATABASE_URL debug info
claude Apr 7, 2026
819afcf
Merge pull request #13 from cphrealestate/claude/hybrid-skills-platfo…
cphrealestate Apr 7, 2026
c79b9df
fix: use PrismaNeonHttp adapter instead of PrismaNeon
claude Apr 7, 2026
7392cf4
Merge pull request #14 from cphrealestate/claude/hybrid-skills-platfo…
cphrealestate Apr 7, 2026
cf5161a
fix: pass connection string directly to PrismaNeonHttp
claude Apr 7, 2026
d242ed3
fix: pass required empty options to PrismaNeonHttp constructor
claude Apr 7, 2026
53d45e6
Merge pull request #15 from cphrealestate/claude/hybrid-skills-platfo…
cphrealestate Apr 7, 2026
a1a7de6
fix: pass authOptions to getServerSession so JWT callbacks run
claude Apr 7, 2026
5313248
Merge pull request #16 from cphrealestate/claude/hybrid-skills-platfo…
cphrealestate Apr 7, 2026
7ce1f64
fix: add NextAuthOptions type to authOptions
claude Apr 7, 2026
0dfa394
Merge pull request #17 from cphrealestate/claude/hybrid-skills-platfo…
cphrealestate Apr 7, 2026
a6492df
redesign: Arena page + tab bar — warm cherry header, better cards, po…
claude Apr 7, 2026
3460d5d
Merge pull request #18 from cphrealestate/claude/hybrid-skills-platfo…
cphrealestate Apr 7, 2026
fa0c02c
redesign: Strava-inspired Arena — stats row, live card, activity feed
claude Apr 7, 2026
e2f55b6
Merge pull request #19 from cphrealestate/claude/hybrid-skills-platfo…
cphrealestate Apr 7, 2026
75b056d
feat: bubblehead avatar system + integrate into Arena
claude Apr 7, 2026
10741e8
Merge pull request #20 from cphrealestate/claude/hybrid-skills-platfo…
cphrealestate Apr 7, 2026
c69b5da
redesign: premium Apple-inspired UI across arena, create, profile
claude Apr 7, 2026
3499671
fix: create flow footer visibility + swipe navigation + desktop layout
claude Apr 7, 2026
5cc2c6e
fix: resolve 500 error on create + redesign wine selection step
claude Apr 7, 2026
ef5c2d9
fix: resolve Neon HTTP adapter transaction errors across all actions
claude Apr 7, 2026
ca51eca
redesign: play page + event control to match premium design system
claude Apr 7, 2026
4ec80b0
fix: UX navigation, dead-ends, scoring, and tab bar visibility
claude Apr 7, 2026
1057e4a
fix: critical event logic bugs (Spor A)
claude Apr 7, 2026
9729a39
feat: wine library universe (Spor B)
claude Apr 7, 2026
af428db
redesign: split landing page into butter/cherry 50/50 zones
claude Apr 7, 2026
2c074c0
fix: landing page responsive — stack vertical (mobile) / side-by-side…
claude Apr 7, 2026
d93ba07
fix: landing page dark mode + mobile viewport issues
claude Apr 7, 2026
30d5018
fix: add default value to Wine.updatedAt for existing rows
claude Apr 7, 2026
8def0e3
feat: Spor C — Global live tastings + sommelier profiles
claude Apr 7, 2026
57c637a
fix: BottomTabBar type error — remove impossible "/" comparison
claude Apr 7, 2026
bc6f57c
design: overhaul typography, color system, and CSS foundation
claude Apr 7, 2026
d80449c
design: editorial wine pages with bottle silhouettes + proper grid
claude Apr 7, 2026
be4805f
design: responsive container system across all pages
claude Apr 7, 2026
9603b2c
feat: complete Spor C — sommelier signup, create event, branded QR
claude Apr 7, 2026
882182c
feat: universe portal switcher + QR modal share/copy buttons
claude Apr 7, 2026
d15782c
feat: universe-specific layouts (arena, cellar, live, profile)
claude Apr 7, 2026
6934f9d
refactor: migrate pages to universe route groups + integrate portal
claude Apr 7, 2026
d4e6306
design: Arena layout — dark gladiator arena atmosphere
claude Apr 7, 2026
1b48419
fix: restore original Winebob colors, remove Google Fonts dependency
claude Apr 7, 2026
94ab2a8
polish: universe layouts refined + text color fixes
claude Apr 7, 2026
a09783f
revert: Arena layout back to original light theme
claude Apr 7, 2026
ec26bf7
fix: restore original Winebob colors + add utility classes
claude Apr 7, 2026
20b388c
redesign: Arena dashboard — content-first, Apple-inspired
claude Apr 7, 2026
f438458
redesign: Arena dashboard — bento grid, full width, original colors
claude Apr 7, 2026
af03eea
redesign: Arena — sidebar + main content split layout
claude Apr 7, 2026
c79bb55
redesign: Arena — hero banner, elevation system, category icons
claude Apr 7, 2026
12b4c1a
fix: force light mode always — remove dark mode overrides
claude Apr 7, 2026
bf174b5
chore: add .claude/ to gitignore
claude Apr 7, 2026
f603610
design: consistent styling on join page + event control
claude Apr 7, 2026
f8d6aa0
design: consistent styling on play page
claude Apr 7, 2026
ed906c0
design: consistent styling on create event page
claude Apr 7, 2026
2d33f56
chore: install mapbox-gl for wine region map
claude Apr 7, 2026
4128b74
feat: Wine Library with Mapbox region map
claude Apr 7, 2026
60edf06
feat: wine region map with GeoJSON polygons + dynamic counts
claude Apr 7, 2026
deddd26
feat: GeoJSON wine region polygon data for 30+ regions
claude Apr 7, 2026
7118bbb
chore: trigger rebuild after GeoJSON data file added
claude Apr 7, 2026
e5466ff
redesign: Wine Library — Strava-style map + bottom sheet layout
claude Apr 7, 2026
fae910f
redesign: Wine Library — full-screen dark map like Strava
claude Apr 7, 2026
4f4b134
rebuild: Wine Library — desktop sidebar + mobile sheet + dark map fixes
claude Apr 7, 2026
d98ec74
chore: redeploy with NEXT_PUBLIC_MAPBOX_TOKEN
claude Apr 7, 2026
ff65607
rebuild: Wine Library — proper Strava-style map + bottom sheet
claude Apr 7, 2026
ee8e8c0
design: custom Winebob map style with terrain + hillshading
claude Apr 7, 2026
6f0ad7c
feat: POI layers — wineries, restaurants, hotels on wine map
claude Apr 7, 2026
2e66205
fix: add glyphs URL to custom map style — fixes text-field error
claude Apr 7, 2026
ae87ebb
fix: remove terrain/hillshade sources — crashes with createBucket error
claude Apr 7, 2026
0b710c9
fix: restore 3D terrain — set via setTerrain after style.load
claude Apr 7, 2026
12285ec
feat: Explore Region — fly-to zoom + POI discovery
claude Apr 7, 2026
8d51442
fix: explore region stays zoomed in — don't navigate on click
claude Apr 7, 2026
fc4e753
fix: explore zoom to level 10 — enough to see POI dots
claude Apr 7, 2026
3bbbfef
design: butter/cream map style + fix POI filters
claude Apr 7, 2026
9a3243e
feat: explore regions — hide polygons, zoom to cities, city hopping
claude Apr 7, 2026
e054324
fix: city hopping — stop click propagation, fly to first sub-city
claude Apr 7, 2026
d41b4c4
feat: /explore page — map preview with signup CTA overlay
claude Apr 7, 2026
ffec1f2
fix: rename Wine Library to Explore in universe portal
claude Apr 7, 2026
9f38435
fix: hide region polygons when exploring — use setPaintProperty opaci…
claude Apr 7, 2026
db0322b
design: city hopping as horizontal pill bar, remove explore badge
claude Apr 7, 2026
ce1d232
fix: region polygons hide properly + city hopping doesn't zoom out
claude Apr 7, 2026
a436f90
fix: type error — prevExploreRef allows undefined
claude Apr 7, 2026
db0305d
feat: wine seed script — 85 real wines from 15 countries
claude Apr 7, 2026
69ae925
feat: expand wine seed to 154 wines from 20+ countries
claude Apr 7, 2026
ee61621
feat: wineries on map — featured (gold) + regular (cherry) markers
claude Apr 7, 2026
1b871b8
fix: PrismaNeonHttp requires 2 args — add empty options
claude Apr 7, 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
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.next/
public/
node_modules/
.claude/
16 changes: 16 additions & 0 deletions winebob/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Neon Serverless PostgreSQL
DATABASE_URL="postgresql://user:password@ep-xxxx.us-east-2.aws.neon.tech/winebob?sslmode=require"

# NextAuth.js
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-secret-here"

# Google OAuth
GOOGLE_CLIENT_ID=""
GOOGLE_CLIENT_SECRET=""

# Anthropic (Claude Vision for label scanning)
ANTHROPIC_API_KEY=""

# Vercel Blob Storage (auto-set by Vercel when you add the Blob store)
BLOB_READ_WRITE_TOKEN=""
43 changes: 43 additions & 0 deletions winebob/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions

# testing
/coverage

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# env files (can opt-in for committing if needed)
.env*

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts

/src/generated/prisma
5 changes: 5 additions & 0 deletions winebob/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<!-- BEGIN:nextjs-agent-rules -->
# This is NOT the Next.js you know

This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in `node_modules/next/dist/docs/` before writing any code. Heed deprecation notices.
<!-- END:nextjs-agent-rules -->
1 change: 1 addition & 0 deletions winebob/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@AGENTS.md
36 changes: 36 additions & 0 deletions winebob/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).

## Getting Started

First, run the development server:

```bash
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
```

Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.

You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.

This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.

## Learn More

To learn more about Next.js, take a look at the following resources:

- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.

You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!

## Deploy on Vercel

The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.

Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
18 changes: 18 additions & 0 deletions winebob/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { defineConfig, globalIgnores } from "eslint/config";
import nextVitals from "eslint-config-next/core-web-vitals";
import nextTs from "eslint-config-next/typescript";

const eslintConfig = defineConfig([
...nextVitals,
...nextTs,
// Override default ignores of eslint-config-next.
globalIgnores([
// Default ignores of eslint-config-next:
".next/**",
"out/**",
"build/**",
"next-env.d.ts",
]),
]);

export default eslintConfig;
118 changes: 118 additions & 0 deletions winebob/messages/da.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
{
"common": {
"appName": "Winebob",
"loading": "Indlæser...",
"save": "Gem",
"cancel": "Annuller",
"next": "Næste",
"back": "Tilbage",
"search": "Søg",
"seeAll": "Se alle",
"cheers": "Skål! 🥂"
},
"tabs": {
"arena": "Arena",
"futures": "Futures",
"cellar": "Kælder",
"trail": "Spor",
"profile": "Profil"
},
"onboarding": {
"welcome": "Velkommen til Winebob",
"welcomeSubtitle": "Lad os finde din vinpersonlighed",
"bodyQuestion": "Hvordan kan du lide din vin?",
"bodySubtitle": "Let og delikat, eller rig og fyldig?",
"bodyLight": "Let & Frisk",
"bodyFull": "Rig & Kraftig",
"sweetnessQuestion": "Sød eller tør?",
"sweetnessSubtitle": "Hvor ligger du på sødmeskalaen?",
"sweetnessDry": "Knastør",
"sweetnessSweet": "Sød & Fyldig",
"grapeQuestion": "Vælg dine favoritter",
"grapeSubtitle": "Vælg de druer der taler til dig",
"regionQuestion": "Foretrukne vinregioner?",
"regionSubtitle": "Hvor i verden rejser dine smagsløg hen?",
"adventureQuestion": "Hvor eventyrlysten er du?",
"adventureSubtitle": "Holder du dig til favoritter eller udforsker du altid?",
"adventureComfort": "Komfortzone",
"adventureExplorer": "Vild Udforsker",
"seeProfile": "Se Min Smagsprofil"
},
"cellar": {
"title": "Kælder",
"searchPlaceholder": "Søg vine, producenter, regioner...",
"recommended": "Anbefalet til Dig",
"friendsCheckins": "Venners Check-ins",
"filters": {
"all": "Alle",
"red": "Rød",
"white": "Hvid",
"rosé": "Rosé",
"sparkling": "Mousserende",
"orange": "Orange",
"natural": "Naturvin"
},
"checkin": "Check In",
"rate": "Bedøm",
"addReview": "Tilføj Anmeldelse"
},
"arena": {
"title": "Blindsmagning",
"subtitle": "Test din gane, udfordr venner",
"dailyChallenge": "Dagens Udfordring",
"hostTasting": "Vært for Smagning",
"soloPractice": "Solo Øvelse",
"upcoming": "Kommende Begivenheder",
"leaderboard": "Rangliste",
"startChallenge": "Start Udfordring",
"difficulty": {
"beginner": "Begynder",
"intermediate": "Øvet",
"advanced": "Avanceret",
"master": "Mester"
}
},
"futures": {
"title": "Vin Futures",
"subtitle": "Forudsig vinverdenens udfald, optjen omdømme",
"reputation": "Dit Omdømme",
"accuracy": "Forudsigelsesnøjagtighed",
"stake": "Sats",
"categories": {
"trending": "Trending",
"vintage": "Årgang",
"auctions": "Auktioner",
"critics": "Kritikere",
"trends": "Tendenser"
}
},
"trail": {
"title": "Vinspor",
"subtitle": "Din vinrejse, dokumenteret",
"recentActivity": "Seneste Aktivitet",
"streak": "Dags Streak",
"winesRated": "Vine Bedømt",
"regions": "Regioner",
"events": "Begivenheder"
},
"profile": {
"title": "Profil",
"tasteProfile": "Din Smagsprofil",
"badges": "Badges",
"collections": "Mine Samlinger",
"cellarInventory": "Kælderopgørelse",
"predictionHistory": "Forudsigelseshistorik",
"arenaStats": "Arena Statistik",
"settings": "Indstillinger",
"following": "Følger",
"followers": "Følgere",
"reputation": "Omdømme"
},
"scoring": {
"incredible": "Utroligt! Du har en ekstraordinær gane! 🏆",
"impressive": "Imponerende! Din næse ved, hvad den laver! 🎯",
"great": "Godt gået! Du udvikler et ægte talent! 👏",
"nice": "Flot indsats! Hver smagning gør dig bedre! 🌱",
"keep": "Bliv ved med at udforske! Rejsen er det bedste! 🍷"
}
}
118 changes: 118 additions & 0 deletions winebob/messages/en.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
{
"common": {
"appName": "Winebob",
"loading": "Loading...",
"save": "Save",
"cancel": "Cancel",
"next": "Next",
"back": "Back",
"search": "Search",
"seeAll": "See all",
"cheers": "Cheers! 🥂"
},
"tabs": {
"arena": "Arena",
"futures": "Futures",
"cellar": "Cellar",
"trail": "Trail",
"profile": "Profile"
},
"onboarding": {
"welcome": "Welcome to Winebob",
"welcomeSubtitle": "Let's discover your wine personality",
"bodyQuestion": "How do you like your wine?",
"bodySubtitle": "Light and delicate, or rich and full?",
"bodyLight": "Light & Crisp",
"bodyFull": "Rich & Bold",
"sweetnessQuestion": "Sweet or dry?",
"sweetnessSubtitle": "Where do you fall on the sweetness scale?",
"sweetnessDry": "Bone Dry",
"sweetnessSweet": "Sweet & Luscious",
"grapeQuestion": "Pick your favorites",
"grapeSubtitle": "Select the grapes that speak to you",
"regionQuestion": "Favorite wine regions?",
"regionSubtitle": "Where in the world do your taste buds travel?",
"adventureQuestion": "How adventurous are you?",
"adventureSubtitle": "Stick to favorites or always exploring?",
"adventureComfort": "Comfort Zone",
"adventureExplorer": "Wild Explorer",
"seeProfile": "See My Taste Profile"
},
"cellar": {
"title": "Cellar",
"searchPlaceholder": "Search wines, producers, regions...",
"recommended": "Recommended for You",
"friendsCheckins": "Friends' Check-ins",
"filters": {
"all": "All",
"red": "Red",
"white": "White",
"rosé": "Rosé",
"sparkling": "Sparkling",
"orange": "Orange",
"natural": "Natural"
},
"checkin": "Check In",
"rate": "Rate",
"addReview": "Add Review"
},
"arena": {
"title": "Blind Arena",
"subtitle": "Test your palate, challenge friends",
"dailyChallenge": "Daily Challenge",
"hostTasting": "Host Tasting",
"soloPractice": "Solo Practice",
"upcoming": "Upcoming Events",
"leaderboard": "Leaderboard",
"startChallenge": "Start Challenge",
"difficulty": {
"beginner": "Beginner",
"intermediate": "Intermediate",
"advanced": "Advanced",
"master": "Master"
}
},
"futures": {
"title": "Vine Futures",
"subtitle": "Predict wine world outcomes, earn reputation",
"reputation": "Your Reputation",
"accuracy": "Prediction Accuracy",
"stake": "Stake",
"categories": {
"trending": "Trending",
"vintage": "Vintage",
"auctions": "Auctions",
"critics": "Critics",
"trends": "Trends"
}
},
"trail": {
"title": "Wine Trail",
"subtitle": "Your wine journey, tracked",
"recentActivity": "Recent Activity",
"streak": "Day Streak",
"winesRated": "Wines Rated",
"regions": "Regions",
"events": "Events"
},
"profile": {
"title": "Profile",
"tasteProfile": "Your Taste Profile",
"badges": "Badges",
"collections": "My Collections",
"cellarInventory": "Cellar Inventory",
"predictionHistory": "Prediction History",
"arenaStats": "Arena Stats",
"settings": "Settings",
"following": "Following",
"followers": "Followers",
"reputation": "Rep"
},
"scoring": {
"incredible": "Incredible! You have an extraordinary palate! 🏆",
"impressive": "Impressive! Your nose knows its stuff! 🎯",
"great": "Great job! You're developing a real talent! 👏",
"nice": "Nice effort! Every tasting makes you better! 🌱",
"keep": "Keep exploring! The journey is the best part! 🍷"
}
}
15 changes: 15 additions & 0 deletions winebob/next.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import type { NextConfig } from "next";

const nextConfig: NextConfig = {
// Image optimization for wine labels and user avatars
images: {
remotePatterns: [
{
protocol: "https",
hostname: "*.public.blob.vercel-storage.com",
},
],
},
};

export default nextConfig;
Loading