import React, { useState, useEffect } from 'react'; import ReactDOM from 'react-dom/client'; import { Menu, X, Compass, ArrowRight, Brain, Map as MapIcon, ShieldCheck, Mountain, Navigation, Zap, Check, ExternalLink, Cpu, Database, Users, Heart, Camera, Activity } from 'lucide-react'; import { initializeApp } from "firebase/app"; import { getAnalytics, isSupported } from "firebase/analytics"; // --- CONFIG & FIREBASE --- const firebaseConfig = { apiKey: "AIzaSyC2wvAg95Se6OsFj2hMpMZnnUM6W8o5fRk", authDomain: "fricamp-hjemmeside.firebaseapp.com", projectId: "fricamp-hjemmeside", storageBucket: "fricamp-hjemmeside.firebasestorage.app", messagingSenderId: "573618186606", appId: "1:573618186606:web:1e5c8fe29c50a7dec4b97f", measurementId: "G-VDSJGLLR9H" }; const app = initializeApp(firebaseConfig); if (typeof window !== 'undefined') { isSupported().then(supported => { if (supported) getAnalytics(app); }).catch(e => console.log('Analytics not supported')); } // --- COMPONENTS --- const Navbar = () => { const [isOpen, setIsOpen] = useState(false); const [scrolled, setScrolled] = useState(false); const [logoError, setLogoError] = useState(false); useEffect(() => { const handleScroll = () => setScrolled(window.scrollY > 50); window.addEventListener('scroll', handleScroll); return () => window.removeEventListener('scroll', handleScroll); }, []); const handleNavClick = (e: any, href: string) => { if (href.startsWith('#')) { e.preventDefault(); const element = document.querySelector(href); if (element) { element.scrollIntoView({ behavior: 'smooth' }); setIsOpen(false); } } }; return ( ); }; const Hero = () => (
Background
Norsk Natur • AI-Presisjon • Allemannsretten

Frihet med
oversikt

Fricamp aggregerer data fra NVDB, Nobil og Statens Kartverk for å gi deg et komplett situasjonsbilde av terrenget.

Utforsk kartet { e.preventDefault(); document.getElementById('tech')?.scrollIntoView({behavior: 'smooth'})}} className="px-8 py-4 bg-military-900/60 border border-white/20 text-white rounded-lg font-bold backdrop-blur-sm cursor-pointer hover:bg-military-800 transition-colors">Se kartlag
); const TechStack = () => (

Oversikt over Kartlag

Aggregerte data for tryggere turer

Fricamp er et dynamisk beslutningsverktøy som kombinerer data fra en rekke offentlige kilder:

Avanserte Kartlag

Veksle mellom topografiske høydekurver fra Kartverket og høyoppløselige satellittbilder for å vurdere planhet.

NVDB (Statens Vegvesen)

Offisielle rasteplasser med fasilitetsdata (toalett, møbler), vinterstengte veier og verifiserte snuplasser.

Fasiliteter & Lading

Drikkevann, gapahuker og bålplasser fra OSM. Sanntidsdata for elbil-lading via Nobil langs ruten din.

Vegsperringer & Maritime lag

Sanntidsvisning av bommer og sperringer. Oversikt over kaier og marinaer for kystreisende.

Analyse {/* Floating Info Card */}
System: Online

NVDB API: Live

Nobil Data: Aktiv

Maritime lag: Ok

Rutebygger: Klar

); const Features = () => { const items = [ { title: "Lovlighetsvurdering", description: "AI-en tolker Allemannsretten mot punktet og gir råd som 'LOVLIG', 'FORBUDT' eller 'SJEKK SKILT'.", icon: }, { title: "Kvalitetsscore", description: "En score fra 1–10 basert på avstand til bebyggelse, støynivå, terrengform og nærhet til vann/utsikt.", icon: }, { title: "Rutebygger", description: "Klikk på veisegmenter for å sy sammen egne ruter. AI-en finner alle fasiliteter innen 1,5 km fra veikanten.", icon: }, { title: "Kjøretøysprofiler", description: "Systemet tar hensyn til om du kjører 'Standard' bobil eller 'Offroad' 4x4, og filtrerer veitilgang deretter.", icon: }, { title: "Vis Veg & Høydeprofil", description: "Beregner rute fra GPS-posisjon og genererer dynamisk høydeprofil med stigningsdata.", icon: }, { title: "AI-Drevet Analyse", description: "Dyp-analyse av terrenget ved hjelp av Google Gemini for å vurdere vegetasjon og planhet.", icon: } ]; return (

AI & Funksjonalitet

Smart beslutningsstøtte i felt

{items.map((f, i) => (
{f.icon}

{f.title}

{f.description}

))}
); }; const Community = () => (
Community 1 Community 2 Community 3 Community 4

Brukerkonto & Fellesskap

Din personlige turdagbok

Ved å opprette en profil blir Fricamp ditt aktive verktøy for forvaltning av natur og egne opplevelser.

Personlig Arkiv

Lagre "perler" som kun er synlige for deg. Organiser lagrede ruter og GPX-filer etter region for rask tilgang.

Bidrag til Fellesskapet

Legg inn anmeldelser og bilder. Hjelp andre å vite om en plass er overfylt eller om utsikten holder mål.

Speider-verifisering

Som bruker kan du godkjenne AI-punkter eller foreslå fjerning av plasser som bryter 150-metersregelen.

); const CinematicDivider = () => (
Divider

"Eventyret venter rundt neste sving"

); const Pricing = () => { const tiers = [ { name: "Gratisbruker", price: "0 kr", features: ["Grunnleggende kartlag", "Søk etter steder", "Begrenset AI-analyse", "Se offentlige rasteplasser"] }, { name: "Abonnement", price: "49 kr", features: ["Ubegrenset AI-analyse", "Offroad-modus", "Lagre ruter og favoritter", "Se detaljerte eiendomsgrenser", "Værvarsel og farevarsler", "Offline kart"], recommended: true }, { name: "Tester", price: "Invite only", features: ["Søk om å bli testbruker", "Tidlig tilgang", "Direkte linje til utviklere", "Bidra til AI-trening", "Alle Pro-funksjoner", "Moderator-status"] } ]; return (

Profiler

Velg din reisevei

{tiers.map((tier, i) => (
{tier.recommended &&
Anbefalt
}

{tier.name}

{tier.price}/mnd
    {tier.features.map((f, idx) => (
  • {f}
  • ))}
Velg {tier.name}
))}
); }; const Footer = () => (
Logo

Fricamp balanserer teknologisk presisjon med menneskelig erfaring. Sammen gjør vi fricamping i Norge bedre.

Utforsk

    {['Kartlag', 'Fellesskap', 'AI-Analyse', 'Pris'].map(l =>
  • {l}
  • )}

Utvikler

Utviklet av Takle Consulting.

Besøk nettsiden

© {new Date().getFullYear()} Fricamp. Utforsk naturen med respekt.

); function App() { return (
); } const rootElement = document.getElementById('root'); if (rootElement) { const root = ReactDOM.createRoot(rootElement); root.render(); }