Job Tapper - это интерактивное приложение для автоматической отправки откликов на вакансии в форме увлекательной игры. Пользователи должны быстро нажимать на появляющиеся элементы, чтобы отправлять отклики через API HeadHunter.
Job Tapper предназначен для создания увлекательного и эффективного способа поиска работы. Комплекс объединяет игровую механику с реальным процессом отклика на вакансии, что делает поиск работы более интересным и мотивирующим. Основная цель комплекса — упростить и геймифицировать процесс отправки откликов на вакансии, повышая вовлеченность пользователей и эффективность поиска работы.
Веб-интерфейс, разработанный с использованием Vue 3 и TypeScript, предоставляет пользователю игровой интерфейс для взаимодействия с вакансиями.
Node.js сервер, обрабатывающий запросы клиента, взаимодействующий с API HeadHunter и управляющий игровой логикой.
Обеспечивает взаимодействие с API HeadHunter для получения вакансий и отправки откликов.
Отвечает за генерацию игровых элементов, подсчет очков и управление уровнями сложности.
Управляет авторизацией пользователей через HeadHunter OAuth.
Использует Socket.IO для обеспечения мгновенных обновлений игрового состояния.
Клиентское приложение предоставляет пользовательский интерфейс для игры и взаимодействия с вакансиями.
Основные компоненты:
GameView
: Основной игровой экранResumeCard
: Отображение информации о резюмеGameArea
: Игровая область с появляющимися вакансиями
Пример использования игровой области:
<template>
<GameArea
@click="handleClick"
@vacancy-click="handleVacancyClick"
:start-countdown="startCountdown"
:get-vacancy-emoji="getVacancyEmoji"
/>
</template>
Сервер обрабатывает запросы клиента, взаимодействует с API HeadHunter и управляет игровой логикой.
Основные модули:
vacancyController
: Управление вакансиямиresumeController
: Управление резюмеauthController
: Аутентификация пользователей
Пример обработки запроса на получение похожих вакансий:
handleGetSimilarVacancies: async (socket: Socket, userSessions: Map<string, any>, data: { resumeId: string }) => {
const userData = userSessions.get(socket.id);
if (userData) {
try {
const vacancies = await vacancyService.getSimilarVacancies(userData.accessToken, data.resumeId);
socket.emit('similar-vacancies', vacancies);
} catch (error) {
console.error('Error fetching similar vacancies:', error);
socket.emit('error', { message: 'Ошибка при получении похожих вакансий' });
}
}
}
- Frontend: Vue 3, TypeScript, Tailwind CSS, DaisyUI
- Backend: Node.js, Express, Socket.IO
- API: HeadHunter API
-
Перейдите в директорию клиента:
cd client
-
Установите зависимости:
npm install
-
Запустите клиент в режиме разработки:
npm run dev
-
Для запуска через Tuna (или Ngrok):
tuna http localhost:5173 --subdomain={ваш домен}
-
Перейдите в директорию сервера:
cd server
-
Установите зависимости:
npm install
-
Запустите сервер:
npm run dev
-
Для запуска через Tuna (или Ngrok):
tuna http localhost:3000 --subdomain={ваш домен}
- Интеграция с API HeadHunter для получения вакансий и отправки откликов
- Игровой процесс, стимулирующий быструю реакцию пользователя
- Система уровней и очков для повышения вовлеченности
- Реал-тайм обновления с использованием Socket.IO
Job Tapper спроектирован с учетом возможности расширения функциональности. Разработчики могут создавать новые модули или расширять существующие для добавления новых возможностей.
- Создайте новую директорию в
client/src/modules
илиserver/src/modules
в зависимости от типа модуля. - Реализуйте необходимую логику и компоненты.
- Экспортируйте основные компоненты или функции модуля через
index.ts
. - Интегрируйте новый модуль в основное приложение.
Мы приветствуем вклад в развитие проекта! Пожалуйста, ознакомьтесь с руководством по внесению вклада перед тем, как начать.
Этот проект лицензирован под MIT License - см. файл LICENSE для подробностей.