Easy-to-manage touch screens
무료 오픈소스 터치스크린으로 USB 설정 가이드, 드래그‑드롭 편집기, 로컬 제어를 제공하며 Home Assistant용으로 제작되었습니다
인터랙티브 지도에서 방문한 국가·주·스위스 주·국립공원·지역을 기록하고 친구와 경쟁·업적 획득·버킷리스트 설정·오프라인 탐색도 가능합니다
Track every country, US state, Swiss canton, national park, and region you've visited on an interactive world map. Compete with friends, earn achievements, set a bucket list, and explore offline.
라이프스타일JavaScript · CSSGitHub @dankadr온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Your world. Your journey. An interactive travel tracker where you mark countries, explore detailed region maps, track capitals and UNESCO sites, set goals, and unlock achievements. • World + Regional Maps — 20 tracker/map views across world, capitals, and country sub-trackers • UNESCO Overlay — optional UNESCO World Heritage layer with 270 sites • Bucket List Planner — add planned trips, target dates, and mark destinations complete • Travel Challenges — create personal or friend challenges with streak-friendly progress [README 설치·사용 부분 발췌] Quick Start (Docker)README 전문 보기 ↗
Your world. Your journey.
An interactive travel tracker where you mark countries, explore detailed region maps, track capitals and UNESCO sites, set goals, and unlock achievements.
→ Live App · ·
| Tracker | Regions | Mode |
|---|---|---|
| 🌍 World Map | 238 countries | Polygon |
| 🏛️ World Capitals | 192 capitals | Point |
| 🇨🇭 Switzerland | 26 cantons | Polygon |
| 🇺🇸 United States | 50 states + DC + PR | Polygon |
| 🏞️ US National Parks | 63 parks | Point |
| 🗽 NYC | 197 neighborhoods | Polygon |
| 🇳🇴 Norway | 15 counties + Svalbard | Polygon |
| 🇨🇦 Canada | 13 provinces & territories | Polygon |
| 🇯🇵 Japan | 47 prefectures | Polygon |
| 🇦🇺 Australia | 8 states & territories | Polygon |
| 🇵🇭 Philippines | 17 regions | Polygon |
| 🇧🇷 Brazil | 26 states + DF | Polygon |
| 🇫🇷 France | 13 regions | Polygon |
| 🇩🇪 Germany | 16 states | Polygon |
| 🇮🇹 Italy | 20 regions | Polygon |
| 🇪🇸 Spain | 17 autonomous communities | Polygon |
| 🇲🇽 Mexico | 32 states | Polygon |
| 🇬🇧 United Kingdom | 4 nations / regional view support | Polygon |
| 🇮🇳 India | 36 states & union territories | Polygon |
| 🇳🇿 New Zealand | 16 regions | Polygon |
| Layer | Technology |
|---|---|
| Frontend | React 18, Vite 6, Leaflet + react-leaflet |
| Backend | Python FastAPI, SQLAlchemy (async), PostgreSQL |
| Auth | Google Identity Services + JWT |
| Database (local) | PostgreSQL 16 (Docker) with asyncpg |
| Database (prod) | Neon serverless PostgreSQL with psycopg |
| Hosting | Vercel (frontend CDN + Python serverless functions) |
| Monitoring | Sentry (frontend), Vercel Analytics & Speed Insights |
| Container | Docker Compose (nginx + FastAPI + PostgreSQL) |
┌─────────────────────────────────────────────────────────┐
│ Two deployment modes │
├──────────────────────┬──────────────────────────────────┤
│ Docker Compose │ Vercel (production) │
│ │ │
│ nginx (port 8088) │ Vite static build → CDN │
│ ├─ static files │ api/index.py → Serverless Fn │
│ └─ /api → FastAPI │ └─ re-exports backend/main.py │
│ └─ asyncpg │ └─ psycopg (NullPool) │
│ └─ PG 16 │ └─ Neon PostgreSQL │
└──────────────────────┴──────────────────────────────────┘
docker compose up --build
http://localhost:8088 to Authorized JavaScript origins.env file:cp .env.example .env
# Edit .env and paste your Google Client ID + a random JWT secret
docker compose up --build
Open http://localhost:8088 in your browser.
# Frontend (Vitest)
npm test
# Backend (pytest)
pip install -r backend/requirements-dev.txt
cd backend && pytest -v
# E2E (Playwright)
npx playwright install chromium
npm run test:e2e
Create a free project at neon.tech and copy the pooled connection string from Connection Details.
In your Vercel project → Settings → Environment Variables:
| Variable | Required | Description |
|---|---|---|
DATABASE_URL | Yes | Neon pooled connection string |
GOOGLE_CLIENT_ID | Yes | Google OAuth 2.0 Client ID |
JWT_SECRET | Yes | Random secret (openssl rand -hex 32) |
ENCRYPTION_MASTER_KEY | Yes | Master key for data encryption (openssl rand -hex 32) |
ADMIN_EMAIL | Yes | Your email address (grants admin access) |
FRONTEND_URL | Yes | Your Vercel production URL |
VITE_SENTRY_DSN | No | Sentry DSN for error tracking |
In Google Cloud Console → Credentials → your OAuth Client ID, add your production URL to Authorized JavaScript origins.
vercel --prod
Or push to your connected Git repo — Vercel deploys automatically.
Visit https://your-app.vercel.app/api/health — should return {"status":"ok","database":"connected"}
| Variable | Used in | Purpose |
|---|---|---|
DATABASE_URL | Backend | PostgreSQL connection string |
POSTGRES_URL | Backend (fallback) | Auto-set by Vercel Neon integration |
GOOGLE_CLIENT_ID | Backend + Vite | Google OAuth verification |
VITE_GOOGLE_CLIENT_ID | Vite build | Auto-mapped from GOOGLE_CLIENT_ID in vite.config.js |
JWT_SECRET | Backend | JWT signing key |
ENCRYPTION_MASTER_KEY | Backend | Master key for encrypting user data |
ADMIN_EMAIL | Backend | Email address that gets admin access |
FRONTEND_URL | Backend | Allowed CORS origin |
VERCEL | Backend | Auto-set by Vercel — do not set manually |
VITE_SENTRY_DSN | Vite build | Sentry frontend error tracking |
fe_sendauth: no password supplied — Your DATABASE_URL is missing the password. Double-check the Neon connection string.
init_db skipped on serverless cold start — Expected on the very first cold-start request. Tables should already exist in Neon.
Cannot assign requested address (IPv6) — Use Neon's pooled connection string (contains -pooler in the hostname).
Health check returns "database": "unreachable" — Verify DATABASE_URL in Vercel env vars and that your Neon project is active.
Bug reports and pull requests are welcome! Please open an issue first to discuss major changes.
See SECURITY.md to report security vulnerabilities privately.
If you find this project useful, consider buying me a tea ☕