{"id":46657030,"url":"https://github.com/henfrydls/skima","last_synced_at":"2026-05-17T23:07:22.718Z","repository":{"id":320428545,"uuid":"1082045675","full_name":"henfrydls/Skima","owner":"henfrydls","description":"Open-source people development platform: skills matrix, development plans, gap analysis, and team growth tracking. Self-hosted, local-first.","archived":false,"fork":false,"pushed_at":"2026-05-10T05:05:34.000Z","size":8122,"stargazers_count":2,"open_issues_count":7,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-10T06:53:05.435Z","etag":null,"topics":["competency-tracking","hr-tech","local-first","nodejs","open-source","react","self-hosted","skills-matrix","sqlite","talent-management","team-analytics"],"latest_commit_sha":null,"homepage":"https://skima.henfrydls.com/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/henfrydls.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-23T16:49:11.000Z","updated_at":"2026-05-10T04:48:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"7e0199d2-ea6a-4141-a7c6-7417e5e0bd91","html_url":"https://github.com/henfrydls/Skima","commit_stats":null,"previous_names":["henfrydls/skills-dashboard","henfrydls/skima"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/henfrydls/Skima","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henfrydls%2FSkima","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henfrydls%2FSkima/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henfrydls%2FSkima/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henfrydls%2FSkima/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/henfrydls","download_url":"https://codeload.github.com/henfrydls/Skima/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henfrydls%2FSkima/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33158772,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T22:39:12.733Z","status":"ssl_error","status_checked_at":"2026-05-17T22:39:10.741Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["competency-tracking","hr-tech","local-first","nodejs","open-source","react","self-hosted","skills-matrix","sqlite","talent-management","team-analytics"],"created_at":"2026-03-08T08:05:27.321Z","updated_at":"2026-05-17T23:07:22.709Z","avatar_url":"https://github.com/henfrydls.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/skima-banner.png\" alt=\"Skima\" width=\"450\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Open-source people development platform — skills matrix, development plans, gap analysis, and team growth tracking.\u003cbr/\u003e\n  Self-hosted, local-first. No account, no cloud, no tracking.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#installation\"\u003eInstall\u003c/a\u003e \u0026nbsp;\u0026middot;\u0026nbsp;\n  \u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e \u0026nbsp;\u0026middot;\u0026nbsp;\n  \u003ca href=\"#screenshots\"\u003eScreenshots\u003c/a\u003e \u0026nbsp;\u0026middot;\u0026nbsp;\n  \u003ca href=\"#tech-stack\"\u003eTech Stack\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/skima-dashboard.png\" alt=\"Skima — Executive Dashboard\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n## Features\n\n- **Executive Dashboard** — KPIs, gap analysis, and trend tracking at a glance\n- **Team Skills Matrix** — transposed heatmap view showing strengths and gaps across the team\n- **Collaborator Profiles** — individual evolution sparklines and skill breakdowns\n- **Evaluation System** — weighted formula (level x frequency x criticality) for objective scoring\n- **Role Profiles** — define expected competencies per role and track alignment\n- **Development Plans (IDPs)** — create growth plans for team members, link goals to skill gaps, track actions and progress\n- **Time Travel** — compare team state across quarters, semesters, and years\n- **Demo Mode** — explore with rich sample data before configuring your own\n- **Export / Import** — move data in and out as needed\n- **Cross-platform Desktop** — Windows, macOS, and Linux via Tauri 2\n- **Offline-first** — works 100% offline, all data stored locally in SQLite\n\n---\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/skima-dashboard.png\" alt=\"Executive Dashboard\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003csub\u003eExecutive Dashboard — KPIs, gap analysis, and trend tracking at a glance\u003c/sub\u003e\u003c/p\u003e\n\n\u003cbr/\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/skima-matrix.png\" alt=\"Team Skills Matrix\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003csub\u003eTeam Skills Matrix — Transposed heatmap showing strengths and gaps\u003c/sub\u003e\u003c/p\u003e\n\n\u003cbr/\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/skima-evolution.png\" alt=\"Evolution Tracking\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003csub\u003eEvolution — Track team progress over time\u003c/sub\u003e\u003c/p\u003e\n\n\u003cbr/\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/skima-roles.png\" alt=\"Role Profiles\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003csub\u003eRole Profiles — Define expected competencies per role and track alignment\u003c/sub\u003e\u003c/p\u003e\n\n\u003cbr/\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/skima-development.png\" alt=\"Development Plans\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003csub\u003eDevelopment Plans — Create growth plans, link goals to skill gaps, track actions and progress\u003c/sub\u003e\u003c/p\u003e\n\n\u003cbr/\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/skima-setup.png\" alt=\"Setup Wizard\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003csub\u003eSetup — Get started with demo data or configure your own space\u003c/sub\u003e\u003c/p\u003e\n\n---\n\n## Installation\n\nSkima runs entirely on your device — no account, no cloud, no tracking.\n\n- **[Desktop app](#desktop-app)** (Windows, macOS, Linux) — Download from GitHub Releases\n- **[Docker](#docker)** — Self-hosted via `docker compose`\n- **[From source](#from-source)** — Clone and build\n\n### Desktop App\n\nDownload the latest release for your platform from [GitHub Releases](https://github.com/henfrydls/Skima/releases):\n\n| Platform | Format |\n|----------|--------|\n| Windows | `.exe` installer |\n| macOS | `.dmg` disk image |\n| Linux | `.deb` / `.AppImage` |\n\nJust install and open — no setup, no accounts, no internet required.\n\n#### First time on macOS? One extra step needed\n\nSkima is open-source and not signed with a paid Apple Developer certificate, so macOS Gatekeeper will block the app on first launch with the message *\"Apple could not verify Skima is free of malware.\"* This is a one-time setup step. Pick one method:\n\n**Method 1 — Terminal (recommended, 1 step)**\n\nAfter dragging Skima.app to Applications, open Terminal and run:\n\n```bash\nxattr -cr /Applications/Skima.app\n```\n\nThen double-click Skima.app — it opens normally without warning.\n\n**Method 2 — System Settings (manual, 4 steps)**\n\n1. Try opening Skima.app — Apple shows the \"could not verify\" dialog. Click **Done**.\n2. Open **System Settings → Privacy \u0026 Security**.\n3. Scroll down to *\"Skima was blocked...\"* and click **Open Anyway**.\n4. Enter your admin password to confirm.\n\n\u003e macOS 15 (Sequoia) and later: the **Open Anyway** button only appears in System Settings, never in the alert dialog itself.\n\n**Why this happens:** Apple charges $99/year for code-signing certificates required to bypass Gatekeeper. As a free open-source project, we'll get certified once Skima has enough users to justify it. Your install method is safe — Skima is fully [open source](https://github.com/henfrydls/Skima) and you can audit the code.\n\n#### Automatic Updates\n\nStarting with **v1.4.0**, Skima checks for new releases on startup and lets you install them in-app — no more manual reinstalls.\n\n- A modal appears when a new version is available, with `Update now` / `Remind me later` / `Skip this version` options\n- Trigger a manual check anytime under **Settings → About → Check for updates**\n- Disable auto-checks via the **Check for updates automatically** toggle in the same panel\n\n\u003e **Upgrading from v1.3.5 or earlier?** The auto-updater first ships in v1.4.0, so existing installs need to download v1.4.0 manually one time. After that, all future updates are automatic.\n\nUpdates are cryptographically signed; Skima refuses any binary that doesn't match the publisher signature.\n\n**Linux note:** auto-update works for the **AppImage** build. If you installed via `.deb` or `.rpm`, your system package manager owns the install path so Skima can't replace itself in-place — Skima will detect this and prompt you to download the latest release from GitHub manually. Switch to the AppImage build if you want fully automatic updates.\n\n### Docker\n\nRun Skima as a local web service with a single command. Requires [Docker](https://docs.docker.com/get-docker/).\n\n```bash\ndocker compose up -d\n```\n\nOr pull directly from GitHub Container Registry:\n\n```bash\ndocker pull ghcr.io/henfrydls/skima:latest\ndocker run -d -p 3000:3001 -v skima-data:/app/data ghcr.io/henfrydls/skima:latest\n```\n\nOpen `http://localhost:3000` in your browser. Data persists in a Docker volume.\n\nTo run with demo data pre-loaded:\n\n```bash\ndocker compose -f docker-compose.yml -f docker-compose.demo.yml up -d\n```\n\n### From Source\n\nRequires [Node.js](https://nodejs.org/) 20+.\n\n```bash\ngit clone https://github.com/henfrydls/Skima.git\ncd Skima\nnpm install\nnpm run dev\n```\n\nOpen `http://localhost:5173` in your browser. The API runs at `http://localhost:3001`.\n\nTo build the desktop app from source, you also need [Rust](https://www.rust-lang.org/tools/install):\n\n```bash\nnpm run tauri:build\n```\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDevelopment and Testing\u003c/strong\u003e\u003c/summary\u003e\n\n### Commands\n\n```bash\nnpm install              # Install all dependencies (root + client + server)\nnpm run dev              # Start client (5173) + server (3001) concurrently\nnpm run dev:client       # Frontend only\nnpm run dev:server       # Backend only\nnpm run build            # Production build (client + server)\nnpm run tauri:build      # Build desktop installer (requires Rust)\n```\n\n### Database\n\n```bash\nnpm run db:migrate       # Run Prisma migrations\nnpm run db:push          # Sync schema without migration\nnpm run db:seed          # Load demo data\n```\n\n### Testing\n\n```bash\nnpm test                 # All tests (939 tests, 75%+ coverage)\nnpm run test:client      # React component and logic tests (771 tests)\nnpm run test:server      # API and middleware tests (168 tests)\nnpm run test:coverage    # Full coverage report (client + server)\n```\n\n### Project Structure\n\n```\nclient/src/\n  components/\n    auth/                # LoginModal, ProtectedRoute\n    common/              # Button, Card, Badge, StatCard, etc.\n    dashboard/           # ExecutiveKPIGrid, DashboardHeader, StrategicInsights\n    development/         # PlanCard, GoalAccordion, ActionRow, GapSuggestions\n    evolution/           # EvolutionChart, EvolutionList\n    layout/              # Layout, Sidebar\n    matrix/              # TransposedMatrixTable, CollaboratorList\n    settings/            # CategoriesTab, CollaboratorsTab, SkillsTab, DevelopmentTab, EvaluationsTab\n  contexts/              # AuthContext, ConfigContext\n  hooks/                 # useEvolutionData\n  lib/                   # dashboardLogic, skillsLogic, evolutionLogic\n  pages/                 # DashboardView, TeamMatrixPage, EvolutionPage\n  App.jsx\n\nserver/src/\n  routes/                # auth.js, evolution.js, demo.js, development.js\n  middleware/            # auth.js (JWT)\n  data/                  # seedData.js\n  db.js                  # Prisma client + dynamic DB path\n  index.js               # Express app + all routes\n```\n\n\u003c/details\u003e\n\n---\n\n## Tech Stack\n\n| Layer | Technology |\n|-------|------------|\n| Frontend | React 19, Vite 7 |\n| Styling | Tailwind CSS 3.4 |\n| Backend | Express 5, Prisma 6 |\n| Database | SQLite |\n| Desktop | Tauri 2 |\n| Testing | Vitest, React Testing Library (939 tests, 75%+ coverage) |\n| CI/CD | GitHub Actions |\n\n---\n\n## License\n\n[PolyForm Noncommercial 1.0.0](LICENSE) -- DLSLabs\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenfrydls%2Fskima","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhenfrydls%2Fskima","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenfrydls%2Fskima/lists"}