Denne guide tar deg gjennom hvert eneste steg for å få JobCrawl opp og gående 100% funksjonelt.
node --version # Skal være 18 eller nyere
npm --versionpsql --version # Skal være installertHvis PostgreSQL ikke er installert, følg SETUP_DATABASE.md
# Fra root-mappen
npm run install:allDette installerer dependencies for både frontend og backend.
# Åpne PowerShell og kjør:
psql -U postgresI psql terminalen:
CREATE DATABASE jobcrawl;
\qcd backend
npm run db:generate
npm run db:migrateViktig: Hvis du får feil om "migration does not exist", kjør:
npx prisma migrate dev --name initnpm run db:seedDette legger til demo-data for testing.
Filen skal allerede eksistere med:
DATABASE_URL=postgresql://postgres:93c4c664f8c9440ca3258f921df2cdd3@localhost:5432/jobcrawl
JWT_SECRET=superhemmelig_jwt_secret_key_2026_change_in_production
PORT=3000
NODE_ENV=development
FRONTEND_URL=http://localhost:5173
OPENAI_API_KEY=your_openai_key_here
# Email Configuration
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=k30991043@gmail.com
SMTP_PASSWORD=vmbmohkznjpotbozViktig:
- JWT_SECRET må være satt (server starter ikke uten den)
- SMTP konfigurasjon må være korrekt for email funksjonalitet
Opprett filen frontend/.env:
VITE_API_URL=http://localhost:3000/api# Sjekk at mappen eksisterer
Test-Path "backend\uploads\cvs"
# Hvis den ikke eksisterer, opprett den:
cd backend
New-Item -ItemType Directory -Path "uploads\cvs" -Forcecd backend
npm run buildDette kompilerer TypeScript til JavaScript.
# Fra root-mappen
npm run devDette starter både backend og frontend samtidig.
Du skal se:
[0] 🚀 JobCrawl Backend running on http://localhost:3000
[1] ➜ Local: http://localhost:5173/
Terminal 1 - Backend:
cd backend
npm run devTerminal 2 - Frontend:
cd frontend
npm run devÅpne nettleser og gå til:
http://localhost:3000/api/health
Du skal se:
{
"status": "OK",
"message": "JobCrawl API is running",
"timestamp": "..."
}Åpne nettleser:
http://localhost:5173
Du skal se JobCrawl frontend.
- Klikk "Login" i navigasjonen
- Klikk "Sign Up" eller "Don't have an account?"
- Fyll ut:
- Full Name: Test Bruker (minst 2 karakterer)
- Email: din@email.com
- Password: Minst 8 karakterer, må inneholde stor bokstav, liten bokstav, og tall
- Klikk "Register"
Forventet resultat:
- Success melding: "Account created! Check your email to verify."
- Backend logger ut verifiseringslink i konsollen
Alternativ 1: Via Email
- Sjekk inbox for verifiseringsmail
- Klikk på "Verify Email" knappen i mailen
Alternativ 2: Via Konsoll (Development)
- Se backend konsoll for verifiseringslink
- Kopier linken og åpne i nettleser
- Klikk "Login"
- Skriv inn email og password
- Klikk "Login"
Forventet resultat:
- Innlogging vellykket
- Du blir sendt til Home siden
- "Login" knappen endres til "Logout"
- Gå til Profile siden
- Fyll ut profil informasjon
- Klikk "Save Profile"
Forventet resultat:
- Success melding vises
- Profil lagres i database
- På Profile siden, scroll ned til "CV Management"
- Klikk "Choose File"
- Velg PDF eller Word dokument (maks 5MB)
- Klikk "Upload CV"
Forventet resultat:
- CV lastes opp
- Filnavn vises
- Download og Delete knapper vises
- Gå til "Jobs" siden
- Se liste over jobber
- Klikk "View Details" på en jobb
- På job detail siden, klikk "Apply with AI Cover Letter"
Forventet resultat:
- Jobb detaljer vises
- Apply knapp fungerer (krever innlogging)
- Gå til "AI Generate" siden
- Velg en jobb fra dropdown
- Klikk "Generate Cover Letter"
Forventet resultat:
- Cover letter genereres (hvis OpenAI key er satt)
- Match score vises
- Du kan kopiere cover letter til clipboard
- Gå til "Applications" siden
- Se dine søknader
- Test oppdatering av status
Problem: "JWT_SECRET must be set"
Løsning: Sjekk at backend/env inneholder JWT_SECRET=...
Problem: Port 3000 er opptatt Løsning:
# Finn prosess som bruker port 3000
netstat -ano | findstr :3000
# Stop prosess (erstatt PID med faktisk prosess-ID)
taskkill /PID <PID> /FProblem: Database connection error Løsning:
- Sjekk at PostgreSQL kjører
- Verifiser DATABASE_URL i
backend/env - Test connection:
psql -U postgres -d jobcrawl -c "SELECT 1;"Problem: CORS errors
Løsning: Sjekk at FRONTEND_URL i backend/env matcher frontend URL
Problem: "Network error" Løsning:
- Sjekk at backend kjører på port 3000
- Sjekk at
frontend/.envhar riktigVITE_API_URL - Restart frontend dev server
Problem: Email kommer ikke frem Løsning:
- Sjekk backend konsoll for SMTP konfigurasjon
- Sjekk at Gmail app password er korrekt
- For development: Sjekk backend konsoll for verifiseringslink (logges alltid)
Problem: "No file uploaded" Løsning:
- Sjekk at fil er PDF eller Word
- Sjekk at fil er under 5MB
- Verifiser at
backend/uploads/cvseksisterer
- ✅ Rate limiting er implementert (100 requests/minutt)
- ✅ Error handling middleware er på plass
- ✅ Database queries er optimaliserte med Prisma
- ✅ Error Boundary er implementert
- ✅ Loading states er på plass
- ✅ Axios interceptors for error handling
Kryss av hvert element når det er fullført:
- Node.js og npm installert
- PostgreSQL installert og kjører
- Database
jobcrawlopprettet - Prisma migrations kjørt
-
backend/envkonfigurert -
frontend/.envopprettet - Uploads directory eksisterer
- Backend bygget (
npm run build) - Backend starter uten feil
- Frontend starter uten feil
- Health endpoint fungerer
- Registrering fungerer
- Email verifisering fungerer
- Login fungerer
- Profile oppdatering fungerer
- CV upload fungerer
- Job listings vises
- AI generate fungerer (hvis OpenAI key er satt)
- Applications fungerer
Når alle punkter over er krysset av, er applikasjonen 100% klar og funksjonell!
Tips for optimal ytelse:
- Bruk
npm run buildfør produksjon - Sjekk database regular backups
- Monitor backend logs for errors
- Roter JWT_SECRET regelmessig
Hvis du støter på problemer:
- Sjekk backend konsoll for error messages
- Sjekk browser console (F12) for frontend errors
- Verifiser alle environment variabler
- Sjekk at alle dependencies er installert