Ecommerce Template
Next.js·React 등으로 만든 최신 전자상거래 템플릿
인터랙티브 3D 지구본에서 콘서트·스포츠·연극·축제·컨퍼런스·전시·관광지를 탐색하고 티켓 옵션을 비교해 공식 판매처로 바로 이동
Explore concerts, sport, theatre, festivals, conferences, exhibitions and attractions on an interactive 3D globe, compare ticket options and go straight to official sellers.
커머스TypeScript · JavaScriptGitHub @tomaschbcordeiro-prog접속 불안정운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기WEBSITE EVENTS
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Discover events anywhere on Earth on an interactive 3D globe: concerts, sport, theatre, festivals, conferences, exhibitions, attractions and more. Compare ticket options and go straight to the official seller.
Status: working MVP with real events. Real listings come from Ticketmaster (key), the City of Paris and the City of Madrid (open data, no key), and optionally SeatGeek and Skiddle (free keys). Clearly labelled fictional demo data is used only if every real source is switched off. See What's real and what isn't.
npm install
cp .env.example .env.local # optional; works with no keys
npm run dev # http://localhost:3000
Production: npm run build && npm start.
One MapLibre GL engine renders both views from the same camera, so switching keeps your place:
?at=lat,lng,zoom,bearing,pitch&pin=lat,lng), previous-view history, full screen, reduced-motion support, WebGL-loss recovery.| Data | Without keys (default) | With NEXT_PUBLIC_MAPTILER_KEY |
|---|---|---|
| Satellite imagery | Sentinel-2 cloudless 2016 by EOX (CC BY 4.0, ≈10 m/pixel, sharp to city scale) | MapTiler Satellite (sub-metre in many cities) |
| Streets, buildings, labels | OpenFreeMap (OpenStreetMap, OpenMapTiles schema) | same |
| Terrain | AWS Open Data Terrain Tiles (Mapzen) | MapTiler Terrain RGB |
| Place search | Photon by Komoot (OpenStreetMap, fair use) | MapTiler Geocoding |
Not included (would need separate providers and licences): photorealistic 3D city meshes (e.g. Google Photorealistic 3D Tiles via Cesium) and street-level photography.
One search model (SearchFilters, encoded by src/lib/search/params.ts) drives the map markers, the result lists and every page.
/api/timezone (offline boundary data, @photostructure/tz-lookup) and is shown with its offset on the chosen date.lat,lng,radius,pl,from,to,tfrom,tto,cat,…), "Full list" and "Show on map" switch views, and Events / Categories / Destinations offer to continue the last search (kept for the browser tab). Saved searches live in My World (stored in this browser until accounts exist).| Route | What it does |
|---|---|
/ | 3D globe (WebGL), 2D map and list views, natural-language search, globe modes, filters, density view, cluster and event previews, discovery panels |
/events, /events/[slug] | Full search with URL-encoded filters, list/grid, sorting, pagination; event detail with ticket comparison, map, line-up, status, provenance, .ics export |
/categories, /categories/[slug] | Category index; shared category template with subcategories, map, top cities, sports fixtures table |
/destinations, /destinations/[slug] | Continent / country / city pages with trip-date filter, per-day calendar, venues, highlights |
/participants/[slug], /venues/[slug] | Artist / team / speaker and venue profiles |
/my-world | Saved events, calendar with clash detection, multi-city trip planner (.ics export), follows, alert preferences, onboarding, data export/delete |
/search?q=… | Parses natural language and redirects to a shareable /events URL |
/about/data | Live data-source status and coverage statement |
All validated with zod; errors are { error: { code, message, details? } }.
GET /api/events (filters + pagination) · GET /api/events/:slug · GET /api/events/:slug/ics · GET /api/events/batch?ids= · GET /api/geo (viewport clustering: vlat, vlng, vr, cell) · GET /api/search/parse?q= · GET /api/search/suggest?q= · GET /api/categories · GET /api/destinations · GET /api/providers · GET|POST /api/sync (cron, Authorization: Bearer $CRON_SECRET) · GET /out/:offerId (safe outbound ticket redirect; no open redirect).
Filter params: q, cat, from, to, city, country, continent, lat, lng, radius, min, max, cur, status, access, family, online, accessible, indoor, participant, venue, sport, competition, source, sort, page, size.
Providers are adapters (src/lib/providers/). The store re-syncs each provider on its refresh interval (stale-while-revalidate), and /api/sync lets a scheduler force a run (vercel.json runs it daily, the limit on Vercel's free Hobby plan; the store also refreshes stale providers on incoming requests).
Sources:
| Source | Coverage | Needs |
|---|---|---|
| Ticketmaster Discovery API | Full catalogue in ~50 countries, up to 2 years ahead, read in date windows under the 1,000-results-per-query limit | TICKETMASTER_API_KEY |
| SeatGeek Platform API | US and Canadian cities, live marketplace prices | SEATGEEK_CLIENT_ID (free, https://seatgeek.com/account/develop) |
| Skiddle Events API | UK and Ireland: clubs, gigs, festivals, comedy | SKIDDLE_API_KEY (free, https://www.skiddle.com/api/join.php) |
| Agenda Cultural de Lisboa (agendalx.pt API) | City of Lisbon cultural agenda, CC BY 4.0; ~400 mapped events | nothing |
| Lisbon venue calendars (CCB, Chapitô) | Each venue's full public programme (The Events Calendar REST API) | nothing |
| BOL (bol.pt) | Theatre, concerts, museums, festivals and family shows sold through BOL across Portugal and the islands, with venue coordinates, prices and availability | nothing |
| Agenda Cultural de Catalunya | Cultural activities across Catalonia (open data, coordinates, prices, ticket links) | nothing |
| Kulturklik (Basque Country, Navarre) | Concerts, theatre, talks, films, exhibitions; venues located by name, otherwise town centre (labelled) | nothing |
| Castilla y León agenda | Geolocated cultural activities, including village libraries | nothing |
| Cultura Portugal (culturaportugal.gov.pt) | Exhibitions, concerts and talks at national museums, monuments and theatres | nothing |
| OpenAgenda (France and neighbours) | Events published by French towns, villages, libraries, museums and festivals, with coordinates | nothing |
| NYC Parks events | Free concerts, tours, films and kids' activities in New York parks | nothing |
| Zaragoza city agenda | Museums, theatres, civic centres and festivals in Zaragoza | nothing |
| Helsinki Linked Events | Concerts, theatre, exhibitions, library and family events in the Helsinki region |
Set keys in .env.local (or your host's env vars) and restart; each source switches on when its key is present. DISABLED_PROVIDERS=paris,madrid switches sources off. Demo data appears only when no real source is active (DEMO_MODE=auto). Listings that give dates but no times are flagged hoursUnknown: they show without a time and are left out of time-of-day searches.
Ticket comparison. Most sellers (BOL, Ticketline, MEO Blueticket, StubHub, Vivid Seats, AXS, See Tickets, Eventim, TicketOne, Fnac Spectacles, Eventbrite…) publish no open data feed, so their prices can't be read. Event pages and previews link to each seller's own search for the event in that country, labelled as not checked by us (src/lib/sellers.ts). Real price comparison across them needs partner/affiliate access from each seller.
More sources: see src/lib/providers/README.md. No single API covers every event in the world, and coverage grows one licensed source at a time.
See .env.example. None are required. TICKETMASTER_API_KEY, SEATGEEK_CLIENT_ID and SKIDDLE_API_KEY enable those sources; CRON_SECRET enables scheduled sync; NEXT_PUBLIC_SITE_URL sets canonical URLs.
Runs in memory today. The production schema (PostgreSQL + PostGIS, Supabase-compatible, with row-level security) is in db/migrations/0001_init.sql; see db/README.md.
npm test # 72 unit tests: parser, geo, time, provider mapping, store queries
npm run build # then:
DISABLED_PROVIDERS=paris,madrid,lisbon,venue-calendars,football,bol,catalonia,euskadi,castilla-leon,cultura-portugal,openagenda,nyc-parks,zaragoza,helsinki,taiwan,montreal,berlin,barcelona,chicago,valencia-ivc,espoo,brisbane,localist,pt-municipios,livewhale,wikidata npm start # e2e flows expect demo data
node tests/e2e/smoke.mjs # 21 end-to-end browser flows (Playwright)
| Area | State |
|---|---|
| 3D globe and 2D map (MapLibre), satellite/map styles, terrain, 3D buildings, day/night, place search and reverse geocoding, clustering, list view, all pages, ticket comparison, trip planner, calendar | Working, tested |
| Satellite detail | Free imagery is ≈10 m/pixel (city scale). Street-level satellite detail needs a MapTiler key |
| Event data | Real, from the sources above. Fictional demo data (Demo badge, noindex) only when every real source is off |
| Ticketmaster, Paris, Madrid adapters | Running against the live sources |
| SeatGeek, Skiddle adapters | Implemented and unit-tested against fixtures; switch on when their keys are set |
| Ticket purchase | Links out to sellers. No checkout, no payments, no purchase confirmation |
| Accounts | Not configured. My World is stored in the browser (labelled demo mode); Supabase Auth is the intended integration |
| Alerts | Preferences are saved; nothing is sent (no email/push service connected) |
| Currency conversion | Static approximate rates, labelled as estimates |
| Translations | Navigation and category labels in EN/PT/ES/FR/DE; page body copy is English |
| Database | In-memory; Postgres schema provided but not wired |
| nothing |
| Taiwan Ministry of Culture | Concerts, theatre, dance, exhibitions and talks across Taiwan | nothing |
| Ville de Montréal | Public events in Montréal libraries, cultural centres and parks | nothing |
| Espoo Linked Events | Events of the City of Espoo (culture centres, libraries, sports, families) | nothing |
| kulturdaten.berlin | Cultural events across Berlin's districts | nothing |
| Portuguese municipal agendas | Ourém, Cantanhede, Arganil, Celorico da Beira, Figueira de Castelo Rodrigo, Marco de Canaveses, Santiago do Cacém, Trancoso | nothing |
| Ajuntament de Barcelona | Barcelona's cultural and sports agenda | nothing |
| Institut Valencià de Cultura | Theatre, music, dance and film across the Valencian Community | nothing |
| City of Chicago | Chicago Public Library events and Park District events and drop-ins | nothing |
| Localist calendars | Public events of ~145 universities, colleges and cities (concerts, talks, exhibitions, sports), a year ahead | nothing |
| LiveWhale calendars | Public events of ~55 universities and colleges (US, Canada, Melbourne), a year ahead | nothing |
| Wikidata | Big events planned up to six years ahead (Olympics, world championships, Grand Prix, world's fairs, festivals, tours) | nothing |
| Brisbane City Council | Libraries, parks, markets, Botanic Gardens, Planetarium and more, a year ahead | nothing |
| football-data.org | Every scheduled match of 12 competitions (Premier League, Championship, LaLiga, Bundesliga, Serie A, Ligue 1, Eredivisie, Primeira Liga, Brasileirão, Champions League, World Cup, Euros) at 185 hand-checked stadiums; a snapshot is shown until the key is set | FOOTBALL_DATA_KEY (free, https://www.football-data.org/client/register) for live updates |
| Que faire à Paris (opendata.paris.fr) | City of Paris listings, ODbL | nothing |
| Madrid cultural agenda (datos.madrid.es) | Municipal activities for the next 100 days | nothing |