TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
En jobbsökarportal för arbetssökande (inkl. långtidsarbetslösa) och arbetskonsulenter som coachar dem. AI-driven CV, personligt brev, intervjusimulator, kompetensanalys och mer — designat för låg friktion, hög tillgänglighet (WCAG 2.1 AA) och empatisk ton. Backend: Supabase (PostgreSQL + Edge Functions) + Vercel serverless functions Frontend: React 19 + Vite 7 + Tailwind 4 + Zustand + React QueryREADME 전문 보기 ↗
En jobbsökarportal för arbetssökande (inkl. långtidsarbetslösa) och arbetskonsulenter som coachar dem. AI-driven CV, personligt brev, intervjusimulator, kompetensanalys och mer — designat för låg friktion, hög tillgänglighet (WCAG 2.1 AA) och empatisk ton.
Backend: Supabase (PostgreSQL + Edge Functions) + Vercel serverless functions Frontend: React 19 + Vite 7 + Tailwind 4 + Zustand + React Query
| Funktion | Beskrivning | AI |
|---|---|---|
| CV-byggare | Steg-för-steg, ATS-analys, PDF-export, 5 templates | ✅ |
| Personligt brev | AI-genererat, 4 templates, PDF-export från HTML | ✅ |
| Intervjusimulator | Mock-intervjuer, AI-feedback, STAR-metoden | ✅ |
| Kompetensanalys | Identifiera gap mot drömjobb | ✅ |
| Intresseguide | RIASEC + Big Five → yrkesrekommendationer | ✅ |
| LinkedIn-optimerare | Förbättra headline, about, posts | ✅ |
| AI-Team | Chatta med specialiserade AI-agenter (karriärcoach m.fl.) | ✅ |
| Jobbsökning | Arbetsförmedlingens API, sverigekarta, dela med konsulent | — |
| Spontanansökan | Hitta företag (Bolagsverket) och skicka spontana ansökningar | ✅ |
| STA / Arbetsprövning | Arbetsprövning i 4 delar: deltagarresa, DOA-självskattning, konsulentvy, AI-utkast för AF-blanketter | ✅ |
| Dagbok | Reflektion, dokumentation, mood-tracking | — |
| Wellness | Energi, mående, vilo-tracking | — |
| Konsultvy | Hantera deltagare, rapportering, GDPR-logg | — |
| Lager | Teknik |
|---|---|
| Frontend | React 19, TypeScript 5.9, Vite 7, Tailwind 4 |
| State | Zustand 5 (client state), React Query 5 (server state) |
| Routing | React Router 7 (HashRouter — /#/route) |
| AI-integration | OpenRouter (modell låst till openai/gpt-oss-120b, se docs/AI_MODEL_LOCKING.md) via Vercel functions + Supabase Edge |
| Backend | Supabase (Postgres, Auth, Storage, Edge Functions) + Vercel serverless |
| @react-pdf/renderer + html2canvas + jsPDF (multi-strategy) | |
| Test | Vitest + Testing Library + Playwright (E2E) |
| Monitoring | Sentry (cookie-consent-gated) |
| Deploy | Vercel (frontend + serverless), Supabase (DB + edge) |
git clone https://github.com/glannstrom-lab/deltagarportalen.git
cd deltagarportalen/client
npm install
cp .env.example .env # fyll i Supabase URL + anon key
npm run dev # http://localhost:3000 — porten är satt explicit i vite.config.ts,
# det finns ingen 5173-fallback (playwright.config.ts defaultar dock
# till 5173, vilket är en känd fälla). Rättat 2026-08-31.
.env:
VITE_SUPABASE_URL=https://<projekt>.supabase.co
VITE_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiI...
# Utveckling
cd client && npm run dev # vite dev server
npx tsc --noEmit # typecheck (snabb felsökning)
# Test
npm run test # vitest watch
npm run test:run # vitest single-run
npm run test:coverage # med coverage-rapport
npx playwright test e2e/smoke.spec.ts --project=chromium # E2E smoke
# Build
npm run build # production-bundle till client/dist/
npm run analyze # bundle-storleksanalys
# Linting
npm run lint
Använd INTE npx supabase db push — den försöker köra alla migrationer
från början och faller på dubbletter (vi har kända konflikter, se
supabase/migrations/MIGRATION_NOTES.md).
Kör enskilda migrationer manuellt:
# Kör en specifik migration mot prod-DB
npx supabase db query --linked -f supabase/migrations/2026XXXX_namn.sql
# Verifiera schema
npx supabase db query --linked "SELECT column_name FROM information_schema.columns WHERE table_name = 'profiles'" --output table
# Lista RLS-status per tabell
npx supabase db query --linked "SELECT tablename, rowsecurity FROM pg_tables WHERE schemaname='public' ORDER BY tablename"
cd supabase
npx supabase functions deploy <namn> --linked
Aktiva edge functions: ai-assistant, ai-cover-letter, ai-cv-writing,
ai-career-assistant, ai-company-search, ai-company-analysis,
ai-industry-radar, ai-commute-planner, cv-analysis, learning-recommend,
learning-progress, learning-analyze-gap, plus AF-API-proxies (af-jobsearch,
af-taxonomy, af-trends, etc.), bolagsverket, delete-account,
send-invite-email, health.
npx supabase secrets set OPENROUTER_API_KEY=sk-or-...
npx supabase secrets set AI_MODEL=openai/gpt-oss-120b # låst modell, se docs/AI_MODEL_LOCKING.md
deltagarportalen/
├── client/ React frontend (aktiv)
│ ├── api/ Vercel serverless functions
│ │ ├── ai.js 20 AI-funktioner (räknat 2026-08-31). Har en egen
│ │ │ SSE-gren för ai-team-chat; ai-stream.js finns inte
│ │ └── ...
│ └── src/
│ ├── components/ React-komponenter (organiserade per feature)
│ ├── pages/ Sidkomponenter (lazy-loadade)
│ ├── services/ API-wrappers (Supabase, AF, AI, etc.)
│ ├── stores/ Zustand-stores (auth, settings, profile, cv)
│ ├── hooks/ React hooks (useDashboardData, useCVAutoSave)
│ ├── lib/ domains.ts (route→domän), supabase.ts, logger.ts
│ └── styles/ tokens.css (designsystem), globals
│
├── api/ Top-level Vercel-katalog (endast _utils/rate-limiter.js)
│
├── supabase/
│ ├── functions/ Deno edge functions (24 st)
│ ├── migrations/ SQL-migrationer (116 filer, körs manuellt — se CLAUDE.md)
│ └── config.toml
│
├── docs/ Aktiv projektdokumentation
│ ├── ROADMAP.md ★ Projektets enda gällande plan
│ ├── DESIGN.md Designsystem v3.0 (Manifest + 5 hubbar)
│ ├── DESIGN-DEBT.md Levande designskuldlista (CI-kopplad)
│ ├── portal-review-2026-06.md Senaste helhetsgranskning
│ ├── security-audit.md Levande säkerhetsstatus
│ └── COMPLIANCE-*, DPIA-* ... Juridik & compliance
│
├── e2e/ Playwright E2E-tester
├── design-demos/ Standalone HTML för designval
├── archive/ Arkiverat (2026-q1, server-legacy, 2026-06-dokkonsolidering)
├── CLAUDE.md Instruktioner för Claude Code
├── SECURITY.md Säkerhetsrutiner
└── README.md (denna fil)
Specifikation i docs/DESIGN.md (v3.0, aktiv från 2026-05-10). Manifestet styr:
Jobin är en följeslagare, inte en jobbportal — lugn ton, inga gradients, inga
prestationsmätningar i hjälteposition. Två sidlägen: hub-landning (pastell-hero)
och verktygssida (neutral hero med färgad vänsterkant). En hub-färg per sida.
| Hub | Path | Domän/färg |
|---|---|---|
| Översikt | /oversikt | action (mint) |
| Söka jobb | /jobb | activity (persika) |
| Karriär | /karriar | coaching (rosa) |
| Resurser | /resurser | info (sky) |
| Min vardag | /min-vardag | wellbeing (lavendel) |
Aktiveras via data-domain (sätts av PageLayout). Nav-sanning:
client/src/components/layout/navigation.ts. CSS-tokens i
client/src/styles/tokens.css. Designskuld bevakas i docs/DESIGN-DEBT.md.
| Dokument | Syfte |
|---|---|
docs/ROADMAP.md | Projektets enda gällande plan (Nu/Näst/Senare + beslutslogg) |
CLAUDE.md | Projektkontext för Claude Code (build-kommandon, konventioner) |
docs/portal-review-2026-06.md | Senaste helhetsgranskning (kod, docs, visuellt) |
docs/DESIGN.md + docs/DESIGN-DEBT.md | Designsystem v3.0 + levande skuldlista |
docs/security-audit.md | Levande säkerhetsstatus (senast 2026-05-28) |
docs/COMPLIANCE-USER-ACTIONS.md | Juridisk åtgärdschecklista (DPIA, Art 30, AI Act) |
e2e/README.md | E2E-test-aktivering |
supabase/migrations/MIGRATION_NOTES.md | Kända migrations-konflikter |
archive/2026-06-dokkonsolidering/ | Arkiverade planer & granskningar (med README) |
Rollkontroll via PrivateRoute + Supabase RLS på alla 130 publika tabeller.
Rättat 2026-08-31. Det här avsnittet beskrev ett PR-flöde med feature-grenar som projektet inte använder — och som motsäger den enda gällande släppproceduren i
CLAUDE.md. Följ den, inte det här: allt går direkt påmain, och en push tillmainÄR deployen.
cd client && npm run verify lokalt — hela grinduppsättningen.
Pre-push-hooken kör bara fem av dem och inga tester alls, så den är inget skyddsnät.
(npx tsc --noEmit utan -p är dessutom en no-op i det här projektet — använd
npm run typecheck:critical.)main, med vad och varför.git push origin main — det triggar deploy.yml: bygge, prod-deploy, edge functions, smoke-test.client/vercel.json, .github/workflows/, RLS-policyer eller migrationer mot prod
kräver Mikaels ja innan push.Fullständig procedur med kommandon: CLAUDE.md § Släpp.
MIT
Senast uppdaterad: 2026-06-10