WallpaperMachine
당신이 사랑하는 배경화면, 맥에서 새롭게 만나보세요
Google Maps 경로 URL을 GPX 파일로 변환합니다. 자동차·자전거·도보 경로 지원, 무료이며 회원가입 불필요
Convert Google Maps directions URLs into GPX files. Supports driving, cycling, and walking routes. Free, no sign-up needed.
라이프스타일TypeScript · CSSGitHub @qaz6209031온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Convert Google Maps directions URLs into GPX files for Garmin, Bryton, Wahoo, and other GPS devices. Works with driving, cycling, and walking routes. No sign-up required — just paste and go.
Live site: maptogpx.com
npm install
Create a .env.local file with your Google Maps API key and Supabase credentials:
GOOGLE_MAPS_API_KEY=your_api_key_here
SUPABASE_URL=https://<project-ref>.supabase.co
SUPABASE_SECRET_KEY=sb_secret_...
The Supabase values are only needed for the feedback form. Get the secret key with
supabase projects api-keys --project-ref <project-ref> --reveal.
npm run dev
Open http://localhost:3000.
Run the test suite (no network calls, no env vars needed) with:
npm test
src/
├── app/
│ ├── layout.tsx # Root layout + metadata
│ ├── page.tsx # Home page
│ ├── globals.css # Tailwind + custom styles
│ └── api/
│ ├── convert/route.ts # Main conversion pipeline
│ ├── feedback/route.ts # Validates and stores user feedback
│ └── resolve-url/route.ts # Short URL expander
├── lib/
│ ├── types.ts # Shared interfaces
│ ├── analytics.ts # GA4 config + event tracking
│ ├── feedback-store.ts # Supabase REST insert for feedback
│ ├── same-origin.ts # Same-origin check for API routes
│ ├── rate-limit.ts # Per-IP in-memory rate limiter
│ ├── errors.ts # UserInputError (safe-to-show error messages)
│ ├── google-hosts.ts # Shared client/server Google Maps host matching
│ ├── url-parser.ts # Parse Google Maps URLs → coordinates
│ ├── google-directions-client.ts # Google Directions API routing
│ ├── gpx-generator.ts # GPX 1.1 XML generation
│ └── polyline.ts # Google encoded polyline decoder
└── components/
├── ConverterForm.tsx # Main UI (client component)
├── FeedbackForm.tsx # Rating + message + optional email form
└── GoogleAnalytics.tsx # GA4 tag loader
supabase/
└── migrations/ # Database schema (feedback table)
The Share Your Feedback section on the home page collects a 1–5 star rating, a
message, and an optional email (at least a rating or a message is required). Submissions go
through POST /api/feedback, which only accepts same-origin requests, validates the input,
drops bot submissions caught by a hidden honeypot field, and inserts the row into the
feedback table in Supabase using the secret key.
The table has row-level security enabled with no policies, so the public (anon) key can't read or write it. View submissions in the Supabase dashboard's Table Editor.
Schema changes live in supabase/migrations/. To apply new migrations:
supabase migration new <name> # create a migration file
supabase db push # apply it to the linked project
Google Analytics 4 uses measurement ID G-E4P5HTG25D for the MapsToGPX property
and MapsToGPX Web stream. No extra environment variable is required.
The tag loads after hydration in production builds. Collection is restricted to
maptogpx.com and www.maptogpx.com, excluding localhost and Vercel preview domains.
Existing Vercel Analytics and Speed Insights remain enabled.
Alongside automatic page views, scrolls, and outbound clicks, the app sends:
| Event | Trigger |
|---|---|
route_conversion | A route conversion finishes successfully. |
gpx_download | The user clicks to download the generated GPX file. |
feedback_submit | The user successfully submits the feedback form. |
donate_click | The user clicks a donate link (Venmo or PayPal) in the donate banner. |
Custom events contain no pasted Maps URLs, coordinates, route data, feedback content, or error messages. Google signals and ad personalization signals are disabled. The site's generated GPX download uses an explicit event because it isn't a standard file link.
After deploying, open Google Analytics Reports → Realtime, visit the live site, convert a route, and download its GPX file to verify the events.
google.com/maps/dir/Origin/Destination/@viewportgoogle.com/maps/dir/?api=1&origin=A&destination=B&waypoints=C|Dgoogle.com/maps?saddr=A&daddr=B+to:Cmaps.app.goo.gl/XXX47.6228,-122.33537405 168th Ave NE, Redmond, WA