Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
205 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
351c519
Merge pull request #21 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
3499671
fix: create flow footer visibility + swipe navigation + desktop layout
claude Apr 7, 2026
33bbb1d
Merge pull request #22 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
5cc2c6e
fix: resolve 500 error on create + redesign wine selection step
claude Apr 7, 2026
bc92ffb
Merge pull request #23 from cphrealestate/claude/clarify-requirements…
cphrealestate 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
267008c
Merge pull request #24 from cphrealestate/claude/clarify-requirements…
cphrealestate 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
ab0e2d8
Merge pull request #25 from cphrealestate/claude/clarify-requirements…
cphrealestate 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
93ba2d8
Merge pull request #26 from cphrealestate/claude/clarify-requirements…
cphrealestate 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
4e1a027
Merge pull request #27 from cphrealestate/claude/clarify-requirements…
cphrealestate 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
9987c83
Merge pull request #28 from cphrealestate/claude/clarify-requirements…
cphrealestate 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
1b9d053
Merge pull request #29 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
be4805f
design: responsive container system across all pages
claude Apr 7, 2026
83de0a4
Merge pull request #30 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
9603b2c
feat: complete Spor C — sommelier signup, create event, branded QR
claude Apr 7, 2026
372fb8e
Merge pull request #31 from cphrealestate/claude/clarify-requirements…
cphrealestate 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
d17df53
Merge pull request #32 from cphrealestate/claude/clarify-requirements…
cphrealestate 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
7775e13
Merge pull request #33 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
1b48419
fix: restore original Winebob colors, remove Google Fonts dependency
claude Apr 7, 2026
5ba5152
Merge pull request #34 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
94ab2a8
polish: universe layouts refined + text color fixes
claude Apr 7, 2026
8704cb8
Merge pull request #35 from cphrealestate/claude/clarify-requirements…
cphrealestate 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
7aa414c
Merge pull request #36 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
20b388c
redesign: Arena dashboard — content-first, Apple-inspired
claude Apr 7, 2026
e4fde07
Merge pull request #37 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
f438458
redesign: Arena dashboard — bento grid, full width, original colors
claude Apr 7, 2026
7a6f91d
Merge pull request #38 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
af03eea
redesign: Arena — sidebar + main content split layout
claude Apr 7, 2026
d15b540
Merge pull request #39 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
c79bb55
redesign: Arena — hero banner, elevation system, category icons
claude Apr 7, 2026
4c0a4ed
Merge pull request #40 from cphrealestate/claude/clarify-requirements…
cphrealestate 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
9ca5f83
Merge pull request #41 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
ed6f3eb
Merge pull request #42 from cphrealestate/claude/clarify-requirements…
cphrealestate 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
e90c615
Merge pull request #43 from cphrealestate/claude/clarify-requirements…
cphrealestate 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
e8d3489
Merge pull request #44 from cphrealestate/claude/clarify-requirements…
cphrealestate 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
bdc3e1f
Merge pull request #45 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
7118bbb
chore: trigger rebuild after GeoJSON data file added
claude Apr 7, 2026
9fef758
Merge pull request #46 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
e5466ff
redesign: Wine Library — Strava-style map + bottom sheet layout
claude Apr 7, 2026
9382a71
Merge pull request #47 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
fae910f
redesign: Wine Library — full-screen dark map like Strava
claude Apr 7, 2026
8749100
Merge pull request #48 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
4f4b134
rebuild: Wine Library — desktop sidebar + mobile sheet + dark map fixes
claude Apr 7, 2026
0dc7cb9
Merge pull request #49 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
d98ec74
chore: redeploy with NEXT_PUBLIC_MAPBOX_TOKEN
claude Apr 7, 2026
71b33c8
Merge pull request #50 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
ff65607
rebuild: Wine Library — proper Strava-style map + bottom sheet
claude Apr 7, 2026
a2eb7d8
Merge pull request #51 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
ee8e8c0
design: custom Winebob map style with terrain + hillshading
claude Apr 7, 2026
0242ddd
Merge pull request #52 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
6f0ad7c
feat: POI layers — wineries, restaurants, hotels on wine map
claude Apr 7, 2026
de40837
Merge pull request #53 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
2e66205
fix: add glyphs URL to custom map style — fixes text-field error
claude Apr 7, 2026
aae86af
Merge pull request #54 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
ae87ebb
fix: remove terrain/hillshade sources — crashes with createBucket error
claude Apr 7, 2026
652ccd7
Merge pull request #55 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
0b710c9
fix: restore 3D terrain — set via setTerrain after style.load
claude Apr 7, 2026
504874c
Merge pull request #56 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
12285ec
feat: Explore Region — fly-to zoom + POI discovery
claude Apr 7, 2026
34fb33e
Merge pull request #57 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
8d51442
fix: explore region stays zoomed in — don't navigate on click
claude Apr 7, 2026
042df16
Merge pull request #58 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
fc4e753
fix: explore zoom to level 10 — enough to see POI dots
claude Apr 7, 2026
f772183
Merge pull request #59 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
3bbbfef
design: butter/cream map style + fix POI filters
claude Apr 7, 2026
3a9c9cb
Merge pull request #60 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
9a3243e
feat: explore regions — hide polygons, zoom to cities, city hopping
claude Apr 7, 2026
475cc9f
Merge pull request #61 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
e054324
fix: city hopping — stop click propagation, fly to first sub-city
claude Apr 7, 2026
429e79c
Merge pull request #62 from cphrealestate/claude/clarify-requirements…
cphrealestate 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
15dcd8e
Merge pull request #63 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
9f38435
fix: hide region polygons when exploring — use setPaintProperty opaci…
claude Apr 7, 2026
646f0f2
Merge pull request #64 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
db0322b
design: city hopping as horizontal pill bar, remove explore badge
claude Apr 7, 2026
ce58a34
Merge pull request #65 from cphrealestate/claude/clarify-requirements…
cphrealestate 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
2beb02c
Merge pull request #66 from cphrealestate/claude/clarify-requirements…
cphrealestate Apr 7, 2026
57ecf29
Fix region visibility on zoom and make all POI dots clickable
claude Apr 7, 2026
a88e74a
Wire up city hopping in explore page and clean up map props
claude Apr 7, 2026
da0d560
Hide mobile wine list by default, show map-only view
claude Apr 7, 2026
ef55941
Respect callbackUrl for post-login navigation
claude Apr 7, 2026
a68b623
Fix build error and keep sheet hidden on region click
claude Apr 7, 2026
16345f8
Mapbox performance optimizations (verified best practices)
claude Apr 7, 2026
e949f77
Improve POI dot visibility — larger dots, bolder labels, earlier zoom
claude Apr 7, 2026
0d9ff64
Upgrade to Mapbox Standard Style with cinematic region tours
claude Apr 7, 2026
285f7f9
Add satellite toggle and fix FlyToOptions type error
claude Apr 7, 2026
d090988
Fix POI visibility and clean up Standard Style clutter
claude Apr 7, 2026
9d65f76
Add cinematic tour + satellite toggle to wines page
claude Apr 7, 2026
8f3e44e
Add active city highlight to wines page for feature parity with explore
claude Apr 7, 2026
e3cb242
Add sub-cities for all 27 wine regions (was only 9)
claude Apr 7, 2026
8aa113e
Add rich TourStop content metadata (tagline, grapes, notable wines) f…
claude Apr 7, 2026
fc29281
Add floating tour info card with adjusted cinematic tour pacing
claude Apr 7, 2026
99c48e3
Add map layer system UI + new Prisma models for profile features
claude Apr 7, 2026
814a050
Redesign profile page as personal wine identity
claude Apr 7, 2026
224d7f1
Wire MapLayerDrawer into explore and wines pages
claude Apr 7, 2026
f0261d3
Add mapRef prop to WineRegionMap + checkin API route (WIP)
claude Apr 7, 2026
b71c9ed
Add Vintage Weather Replay layer with Open-Meteo integration
claude Apr 7, 2026
0f99a5b
Fix layer panel blocking map interaction + wire layers into wines page
claude Apr 7, 2026
0f2d897
Add Flavor Genome, Live Heatmap, and Draw Flight layers (WIP)
claude Apr 7, 2026
4b4c269
Wire all 4 layer components into both explore and wines pages
claude Apr 7, 2026
d79c312
Fix DrawFlightLayer import — default export not named
claude Apr 7, 2026
00c3ce1
Fix layer UX: brighter genome charts, weather controls spacing, panel…
claude Apr 7, 2026
bf177fe
Add data intelligence schema, event tracking, and import pipelines
claude Apr 7, 2026
e39ed82
Add analytics aggregation, insights API, and GDPR consent management
claude Apr 7, 2026
afcf360
Add TTB COLA import pipeline and admin import API
claude Apr 7, 2026
d69d455
Add appellation seed data: 125 appellations across 12 countries
claude Apr 7, 2026
3240b29
Add grape variety seed data: 140 varieties across 20+ countries
claude Apr 7, 2026
cf67144
Fix audit findings: GDPR compliance, import bugs, seed serialization
claude Apr 7, 2026
84f8195
Expand normalize.ts: more grape aliases and abbreviation mappings
claude Apr 7, 2026
2a5d2e6
Fix import pipelines: OFF API URL, wikidata memory scaling, cross-cat…
claude Apr 7, 2026
b731960
TTB importer: document CSV-only mode, OFF: minor fix
claude Apr 7, 2026
b9dfa54
TTB importer: add classType code mapping and CSV parser improvements
claude Apr 7, 2026
9ccc86a
Import route: document serverless limitations, seedGrapes minor fix
claude Apr 7, 2026
1dab3df
seedGrapes: minor data cleanup from background agent
claude Apr 7, 2026
c3b6704
Add .mjs seed files for Node 25 compatibility
claude Apr 8, 2026
65013cc
Fix importers: replace createMany with individual creates
claude Apr 8, 2026
0e65838
Fix "Unknown" fields: filter junk imports, graceful empty display
claude Apr 8, 2026
f99d669
Add producerId FK, quality validation, cleanup + seed-all scripts
claude Apr 8, 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