A modern, responsive web app that helps Bitcoiners find the best jurisdiction (country/region) to relocate to long-term. Features personalized recommendations based on a quiz, with special logic for Americans vs non-Americans due to U.S. worldwide taxation rules.
- Interactive Quiz: 11-step questionnaire covering citizenship, family situation, budget, lifestyle preferences, and deal-breakers
- Smart Scoring: Deterministic algorithm with user-adjustable weight presets (Balanced, Tax Efficiency, Family First, Safety & Stability)
- American-Specific Logic: Puerto Rico strongly favored for U.S. citizens due to Act 60 benefits, now with the 2026 application-date change reflected; other zero-tax jurisdictions appropriately penalized for Americans who can't escape federal taxation
- 17 Jurisdictions: UAE (Dubai), Switzerland (Zug), Singapore, El Salvador, Portugal, Cayman Islands, Puerto Rico, Malta, Germany, Hong Kong, Panama, Thailand, Georgia, Uruguay, Madeira, Boracay, and Bitcoin Jungle Costa Rica
- Rich Detail Pages: Each jurisdiction includes tax info, visa routes, safety notes, crypto community info, and a photo gallery with proper attributions
- Results Filtering: Filter by continent, climate, cost tier, timezone, English-friendliness, and family-friendliness
- Responsive Design: Mobile-first approach with beautiful desktop experience
- Privacy-First State: Quiz answers stay in volatile browser memory only; they are not stored in localStorage, sessionStorage, cookies, URLs, or a backend
- Framework: Next.js 15 (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- UI Components: shadcn/ui-style components, Radix UI primitives
- Icons: Lucide React
- Charts: Recharts
- Animations: Framer Motion
- Node.js 18+
- npm or yarn
# Clone the repository
git clone <repo-url>
cd bitcoin-haven
# Install dependencies
npm install
# Run development server
npm run devOpen http://localhost:3000 to view the app.
npm run build
npm startsrc/
├── app/ # Next.js App Router pages
│ ├── page.tsx # Home/Landing page
│ ├── layout.tsx # Root layout with header/footer
│ ├── quiz/ # Quiz page
│ ├── results/ # Results page
│ ├── j/[slug]/ # Jurisdiction detail pages
│ └── about/ # Methodology page
├── components/
│ ├── ui/ # Reusable UI components (Button, Card, etc.)
│ ├── quiz/ # Quiz-specific components
│ ├── results/ # Results-specific components
│ └── jurisdiction/ # Jurisdiction detail components
├── data/
│ └── jurisdictions.ts # All jurisdiction data in one file
├── lib/
│ ├── utils.ts # Utility functions
│ ├── scoring.ts # Scoring algorithm
│ └── quiz-store.ts # Volatile in-memory quiz state and legacy storage cleanup
└── types/
└── index.ts # TypeScript type definitions
- Open
src/data/jurisdictions.ts - Add a new object to the
jurisdictionsarray following this structure:
{
id: 'unique-id',
name: 'Display Name',
country: 'Country Name',
region: 'Specific Region',
slug: 'url-slug',
continent: 'europe', // or: 'north-america', 'central-america', 'caribbean', 'middle-east', 'asia', 'oceania'
rank: 12, // Position in base ranking
isHonorableMention: true, // Set to false for top jurisdictions
shortBlurb: 'One-line description...',
longDescription: `Multi-paragraph description...`,
tags: {
climate: 'mediterranean', // tropical, subtropical, mediterranean, temperate, alpine, desert
urbanity: 'city', // major-city, city, town, island, mixed
englishFriendly: true,
costTier: 'medium', // low, medium, high, very-high
safetyTier: 'safe', // very-safe, safe, moderate, developing
visaRoutes: ['investment', 'entrepreneur'], // investment, entrepreneur, golden-visa, digital-nomad, employment, citizenship-by-investment, territory-resident
timezoneBand: 'europe-africa', // americas, europe-africa, middle-east, asia-pacific
familyFriendly: true,
bitcoinLegalTender: false,
noCapitalGains: true,
euMember: false,
},
scores: {
taxHodl: 8, // 0-10
taxTrade: 7, // 0-10
regulation: 7, // 0-10
safety: 8, // 0-10
stability: 8, // 0-10
costLiving: 6, // 0-10 (10 = very affordable)
housing: 5, // 0-10 (10 = very affordable)
education: 7, // 0-10
visa: 7, // 0-10
infra: 8, // 0-10
lifestyleBase: 7, // 0-10
cryptoCommunity: 6,// 0-10
},
notes: {
tax: 'Tax details...',
visa: 'Visa/residency info...',
safety: 'Safety notes...',
education: 'Education quality...',
cost: 'Cost of living details...',
cryptoCommunity: 'Crypto scene...',
infra: 'Infrastructure notes...',
lifestyle: 'Lifestyle description...',
},
specialRules: {
// Optional special rules
holdingPeriodRule: 'If applicable...',
americanTaxNote: 'For American-specific notes...',
},
images: [
{
url: 'https://images.unsplash.com/...',
alt: 'Description',
creditName: 'Photographer Name',
creditUrl: 'https://unsplash.com/@photographer',
sourceName: 'Unsplash',
},
// Add 6-10 images per jurisdiction
],
}Each jurisdiction has 12 criteria scored 0-10:
- Tax (HODL) - Capital gains tax for long-term holders
- Tax (Trading/Business) - Tax treatment for active trading
- Regulatory Clarity - Legal framework for crypto
- Safety - Personal safety and crime rates
- Political Stability - Government stability
- Cost of Living - Daily expense affordability (10 = very affordable)
- Housing - Real estate affordability (10 = very affordable)
- Education - School quality
- Visa Accessibility - Ease of obtaining residency
- Infrastructure - Internet, utilities, banking
- Lifestyle - Climate, culture fit
- Crypto Community - Local adoption and scene
Users can choose from presets that adjust criterion weights:
| Preset | Tax | Safety | Education | Cost | Infrastructure |
|---|---|---|---|---|---|
| Balanced | 1.0 | 1.0 | 0.6 | 0.8 | 0.7 |
| Tax Efficiency | 1.5 | 0.6 | 0.3 | 0.5 | 0.5 |
| Family First | 0.6 | 1.5 | 1.5 | 0.9 | 1.0 |
| Safety & Stability | 0.5 | 1.5 | 0.8 | 0.6 | 1.0 |
For U.S. citizens (and dual citizens):
- Puerto Rico: +25 points (Act 60 remains the strongest U.S.-citizen route, but 0% treatment is time-sensitive for applications after 2026)
- Other zero-tax jurisdictions: -5 points (or -3 if strong lifestyle benefits) because U.S. worldwide taxation still applies
When users select deal-breakers, violating jurisdictions receive -3 points per violation.
Final Score = (Σ criterion_score × weight) / (Σ weights) + american_modifier - (violations × 3)
This tool is for informational purposes only and does not constitute legal, tax, or financial advice.
Tax laws and regulations change frequently and vary based on individual circumstances. Before making any relocation or tax planning decisions:
- Consult with a qualified tax professional in your home country
- Work with an immigration attorney for visa/residency questions
- Speak with a local tax advisor in your target jurisdiction
- Verify all information independently with official sources
The authors and publishers accept no liability for any decisions made based on this information.
Last reviewed: May 2026. Recent updates reflected in the data include Puerto Rico Act 38-2026 changes to Act 60, Portugal's repeal of broad NHR for new entrants, Thailand's licensed-channel crypto gains exemption through 2029, El Salvador's 2025 Bitcoin Law reforms, Germany's 2025 crypto-asset tax guidance, and Cayman VASP Phase Two licensing.
All images are from Unsplash and are used under the Unsplash License. Individual photographer credits are displayed in the image gallery modal for each jurisdiction.
MIT License - See LICENSE file for details.