Career Quest
Локальный дашборд развития сотрудников: профиль навыков, карьерная цель, ранжированные рекомендации активностей, отслеживание выполнения.
О проекте
Команда: 404-NotFound
Кейс HackAlem.ai: Менеджмент — Halyk Bank · кейс 1
Стадия: Рабочий MVP
Задача кейса: «Career Quest»: AI-навигатор, связывающий навыки сотрудника с шагами развития
Суть
Локальный дашборд развития сотрудников: профиль навыков, карьерная цель, ранжированные рекомендации активностей, отслеживание выполнения. Для администратора есть HR-метрики, создание мероприятий и импорт данных.
Как устроено
Express-сервер с Vite и React UI читает employees/skills/events.json и activity_history.csv. Детерминированный движок ранжирует активности по требованиям целевой роли, разрывам навыков и истории обучения. Внешний AI не вызывается. Роли admin и employee, подписанные HttpOnly-сессии и CSRF. Изменения сохраняются в runtime-state.json. Судя по компонентам, есть геймификация, радар компетенций, симулятор карьеры и ИПР.
Ключевые решения
- детерминированное ранжирование по skill gap
- role-based access
- CSRF-защита
Стек
TypeScript · React · Vite · Express · Node.js
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-ee5a3cd4-404-notfound.
README
README.mdCareer Quest
Career Quest is a local employee-development dashboard. It helps employees review their skills and career goals, receive ranked learning recommendations, and track completed activities. Administrators can view HR metrics, create events, and import additional employee data.
The recommendation engine is deterministic: it ranks activities using target-role requirements, skill gaps, and the employee's learning history. The project does not call an external AI service.
Requirements
- Node.js 20 or newer
- npm
Run locally
git clone https://github.com/BAITC-Hacks/hack-ee5a3cd4-404-notfound.git
cd hack-ee5a3cd4-404-notfound
npm ci
npm run dev
Open http://127.0.0.1:3000.
Without a .env file, development mode uses this local-only administrator account:
Username: admin
Password: local-development-only
The development server listens on 127.0.0.1, so this fallback account is not exposed on the network. Never use it in production.
Production
Create .env from the example and provide at least one user plus a 32-character-or-longer session secret:
cp .env.example .env
npm run build
NODE_ENV=production npm start
Example configuration:
APP_AUTH_USERS='[{"username":"admin","password":"replace-with-a-long-password","role":"admin"},{"username":"employee-001","password":"replace-with-a-long-password","role":"employee","employeeId":"EMP_001"}]'
AUTH_SESSION_SECRET="replace-with-at-least-32-random-characters"
In production the app will not start without valid APP_AUTH_USERS and AUTH_SESSION_SECRET. Use a secret manager rather than committing production credentials. Set PORT to change the default port (3000).
Roles
admincan work with all employee profiles, HR analytics, imports, and custom learning events.employeemust be linked to anemployeeIdand can access only that employee's profile and actions.
Sessions are signed, stored in HttpOnly cookies, and expire after eight hours. State-changing API requests require a CSRF token.
Data and state
The base dataset lives in data/:
employees.jsonskills.jsonevents.jsonactivity_history.csv
Changes made through the app are saved to data/runtime-state.json. That file is ignored by Git. In a deployed environment, set RUNTIME_STATE_PATH to a persistent-volume location, for example:
RUNTIME_STATE_PATH="/var/lib/career-quest/runtime-state.json"
Checks
npm run lint
npm run build
RUNTIME_STATE_PATH=/tmp/career-quest-check.json npx tsx src/scripts/verifyAllRequirements.ts
The last command exercises the included data and recommendation scenarios. It writes temporary state to the provided path; remove that file after the check if desired.
Project layout
server.ts- Express API and Vite/production-server setup.src/- React interface, API client, authorization, validation, and application logic.data/- bundled sample data.
Авторы коммитов
История коммитов
- 2026-09-23 17:49docs: simplify setup and deployment guidenot2pizza
- 2026-09-23 17:45chore: modernize Vite config path resolutionnot2pizza
- 2026-09-23 17:45fix: harden API access and state integritynot2pizza
- 2026-09-23 17:24Sync latest upstream changesTwinkieser
- 2026-09-23 16:42Sync project from reference repoTwinkieser
- 2026-09-23 15:51Update homepageTwinkieser
- 2026-09-23 15:09chore: merge hackathon history and retain project documentationTwinkieser
- 2026-09-23 15:08fix: resolve Vite dependency conflict and config compatibilityTwinkieser
Все коммиты (11)
- 2026-09-23 14:39Add files via uploadTwinkieser
- 2026-09-23 14:36feat: initialize Career Quest AI platform projectTwinkieser
- 2026-09-23 14:35Initial commitTwinkieser
Структура репозитория (46 файлов)
.env.example .gitignore 29-main.zip README.md bun.lock data/activity_history.csv data/employees.json data/events.json data/skills.json index.html metadata.json package-lock.json package.json public/test_jury_emp_99.json server.ts src/App.tsx src/components/ActivityHistoryTable.tsx src/components/BenchmarkNotice.tsx src/components/CareerSimulatorModal.tsx src/components/CompetencyRadarModal.tsx src/components/EmployeeSelector.tsx src/components/EventsCatalog.tsx src/components/GamificationTab.tsx src/components/HRDashboard.tsx src/components/HREventBuilderModal.tsx src/components/Header.tsx src/components/ImportModal.tsx src/components/IndividualDevelopmentPlanModal.tsx src/components/LoginScreen.tsx src/components/ProfileCard.tsx src/components/RecommendationCard.tsx src/components/SkillGapsTable.tsx src/i18n/translations.ts src/index.css src/lib/api.ts src/main.tsx src/scripts/generateData.ts src/scripts/testBenchmark.ts src/scripts/verifyAllRequirements.ts src/scripts/verifyBonus200Percent.ts src/server/auth.ts src/server/dataStore.ts src/server/validation.ts src/types/index.ts tsconfig.json vite.config.ts
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.