Bygga
제품명을 박스에 입력하면 Bygga가 3D로 모든 조립 단계와 부품·스크류·도구를 보여주고 음성으로 안내합니다
Tripfolio는 무료 여행 지도 앱으로, 방문한 국가·주를 색칠하고 사진과 함께 여행을 기록하며 친구 지도도 팔로우합니다
Tripfolio is a free travel map app: color the countries and US states you've visited, keep every trip with photos, and follow friends' maps. No download needed.
라이프스타일TypeScript · CSSGitHub @meiryu100온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Tripfolio - social travel app with interactive world map
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A social travel app built around an interactive world map. Mark the countries you've visited and the ones you want to visit, keep trips with dates, photos and notes, and explore the world through the people you follow.
Stack: Next.js 16 (App Router) · TypeScript · Tailwind CSS v4 · TanStack Query · Zustand (UI state) · Drizzle ORM · PostgreSQL 17 · S3-compatible storage (RustFS locally) · d3-geo map · zod
Requires Node 20+ and Docker Desktop.
npm install
cp .env.example .env.local # defaults match docker-compose.yml
docker compose up -d # PostgreSQL + S3 storage (creates the photos bucket)
npm run db:setup # migrate + load countries + demo community
npm run dev
The seed also creates a community of 21 travelers with real photos: @daniel.wanders plus 20 more defined in src/server/db/seed-travelers.json (10 male, 10 female, 2–3 countries each, 110 photos in total). Photos are downloaded from Wikimedia Commons at seed time (freely licensed; photographers and licenses are credited under each trip's gallery). This step needs an internet connection and takes about a minute and a half; if a download fails the trip is still created, just without that photo.
In development, emails (password resets) are printed in the terminal running npm run dev.
| Command | What it does |
|---|---|
npm run dev | Dev server |
npm run build / start | Production build / server |
npm run db:generate | Create a migration after editing src/server/db/schema.ts |
npm run db:migrate | Apply migrations |
npm run db:seed | Load countries + demo users (idempotent) |
npm run db:studio | Browse the database |
npm run countries | Rebuild src/data/* from the world-countries / world-atlas datasets |
Create an OAuth client at https://console.cloud.google.com/apis/credentials with the redirect URI {APP_URL}/api/auth/google/callback, then set GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET in .env.local. The “Continue with Google” button appears automatically.
Password-reset emails print to the server console until you set RESEND_API_KEY (from https://resend.com). MAIL_FROM defaults to [email protected], which Resend only delivers to your own account's address; verify a domain in Resend and set e.g. MAIL_FROM="Tripfolio <[email protected]>" to email everyone. Seeded @example.com accounts are never emailed.
src/
app/ Pages (App Router) and API route handlers (app/api/**)
features/ Feature modules: data hooks + feature components
auth/ map/ trips/ social/ explore/ profile/ settings/ stats/
components/ Shared UI (Button, Sheet, Avatar, cards, app shell…)
lib/ Client/shared: API client, types, validation (zod), utils
server/ Server-only code
db/ Drizzle schema, connection, seed data
auth/ Password hashing, sessions, Google OAuth
http/ Route wrapper (auth, CSRF, rate limits, errors), uploads
services/ Business logic + authorization (one file per domain)
storage/ S3 client + image processing (sharp)
proxy.ts Redirects signed-out visitors away from app pages
drizzle/ SQL migrations
scripts/ db-migrate, db-seed, build-countries
See ARCHITECTURE.md for the data model, API, security model and how to extend it.