WallpaperMachine
당신이 사랑하는 배경화면, 맥에서 새롭게 만나보세요
비자 처리 플랫폼으로 여행 계획을 간소화하고 자격 확인·온라인 신청·신속 승인 지원
Simplify your travel planning with our comprehensive visa processing platform. Check eligibility, apply online, and get your visa approved faster.
라이프스타일TypeScript · CSSGitHub @HazemKhaled최근 접속 확인 실패운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A multilingual travel visa processing application built with modern web technologies. The platform helps users travel with minimal visa requirements through a centralized visa processing platform featuring destination-based visa catalogs and comprehensive SEO optimization.
/[locale]/)# Clone the repository
git clone <repository-url>
cd gettravelvisa
# Install dependencies
pnpm install
# Set up environment
cp .env.example .env.local
# Edit .env.local with your Cloudflare credentials
pnpm dev
Open http://localhost:3000 to view the application.
This project uses Drizzle ORM with Cloudflare D1 (SQLite) for both local development and production.
# Complete setup: reset → migrate → seed
pnpm db:local:setup
# Database migrations
pnpm db:local:migrate # Apply migrations to local database
pnpm db:local:reset # Reset/clear local database
# Database seeding
pnpm db:local:seed # Populate with sample data
# Database exploration
pnpm db:local:studio # Open Drizzle Studio GUI
pnpm db:local:query "SQL" # Run custom SQL queries
# Generate migrations from schema changes
pnpm db:generate
# Apply migrations to production
pnpm db:migrate
# Open production database GUI
pnpm db:studio
# Seed production database
pnpm db:seed
Local Database:
pnpm db:local:studioProduction Database:
pnpm db:studioThe project uses a smart configuration in drizzle.config.ts:
// Automatically switches based on LOCAL_DB_PATH environment variable
LOCAL_DB_PATH ?
// Local: Uses SQLite file directly
{ dialect: "sqlite", dbCredentials: { url: LOCAL_DB_PATH } } :
// Production: Uses Cloudflare D1 HTTP API
{ dialect: "sqlite", driver: "d1-http", dbCredentials: { ... } }
Local Development:
.wrangler/state/v3/d1/@libsql/client for Drizzle StudioProduction:
.env.localThe application uses a comprehensive i18n database schema:
Core Tables:
countries - Destination and passport issuing countriescountries_i18n - Multilingual country names/descriptionsvisa_types - Different visa options per destinationvisa_types_i18n - Multilingual visa type informationvisa_eligibility - Visa requirements matrixvisa_eligibility_i18n - Multilingual eligibility notesKey Features:
deleted_at flagscreated_at, updated_at)/[locale]/)pnpm dev - Start development server with Turbopackpnpm build - Build for productionpnpm start - Start production serverpnpm lint - Run ESLintpnpm lint:fix - Fix ESLint issuespnpm format - Format with Prettierpnpm type-check - TypeScript compilation checkpnpm db:local:setup - Complete database setuppnpm db:local:migrate - Apply migrationspnpm db:local:seed - Seed with sample datapnpm db:local:studio - Open GUI (port 4984)pnpm db:local:query "SQL" - Run custom queriespnpm db:local:reset - Reset databasepnpm db:generate - Generate migrationspnpm db:migrate - Apply to productionpnpm db:studio - Open GUI (port 4983)pnpm db:seed - Seed production datapnpm deploy - Deploy to Cloudflarepnpm preview - Preview deployment locally/ (English)/[locale]/page/ar/destinations, /es/contactThe application deploys to Cloudflare Workers using OpenNext.js:
# Build and deploy
pnpm deploy
# Preview locally
pnpm preview
Required environment variables in .env.local:
# Cloudflare Configuration
CLOUDFLARE_ACCOUNT_ID=your-account-id
CLOUDFLARE_D1_DATABASE_ID=your-database-id
CLOUDFLARE_API_TOKEN=your-api-token
# Next.js Configuration
NEXTAUTH_SECRET=your-secret-key
NEXTAUTH_URL=http://localhost:3001
# Optional: External Services
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
NEXT_PUBLIC_SENTRY_DSN=your-sentry-dsn
src/
├── app/ # Next.js App Router
│ ├── globals.css # Global styles
│ ├── layout.tsx # Root layout
│ └── [locale]/ # Internationalized routes
├── components/ # Reusable components
│ ├── layout/ # Layout components
│ └── ui/ # Base UI components
├── lib/ # Utility libraries
│ ├── db/ # Database schema & config
│ └── utils.ts # Utility functions
├── i18n/ # Internationalization
└── scripts/ # Database scripts
drizzle/ # Generated migrations
migrations/ # Wrangler migration files
git checkout -b feature/amazing-featurepnpm lint:fixfeat(scope): descriptionThis project is private and proprietary.