个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 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.