채용공고를 수집하고 Notion에 정리하며, ATS 분석까지 연결하는 간단한 작업 공간입니다.
- Frontend: Vite + React (
/Users/jay/Documents/CareerWeb) - Backend: FastAPI + SQLModel + SQLite (
/Users/jay/Documents/CareerWeb-backend) - Integrations: Notion API, Google Gemini API, LinkedIn scraping
flowchart LR
A[Frontend<br/>Vite + React] -->|REST| B[Backend<br/>FastAPI]
B --> C[(SQLite)]
B --> D[Notion API]
B --> E[Gemini API]
B --> F[LinkedIn Scrape]
- 공고 입력 (URL/제목/본문/공고일)
- LinkedIn URL이면 자동 채움 (제목/본문/회사명/게시일)
- 백엔드에서 중복 체크 후 DB 저장
- 비동기 작업: LLM 파싱 + Notion 페이지 생성/갱신
- ATS 분석 결과 Notion에 append + DB에 저장
- 요약 리스트 테이블 + 상세 패널
- ATS 상세 및 재분석 버튼
- 공고 수정 및 수동 채용 종료 처리
- 종료 공고 행 회색 표시 + 종료 숨기기 토글
- 정리본(LLM) + 원문을 Notion에 저장
POST /api/job-postings공고 등록(비동기)GET /api/job-postings리스트 조회POST /api/job-postings/previewLinkedIn 자동 채움PUT /api/job-postings/{id}공고 수정 + Notion 갱신POST /api/job-postings/{id}/atsATS 재분석POST /api/job-postings/{id}/close채용 종료 처리(수동)
.env 파일로 관리합니다. 아래 값들을 설정하세요.
NOTION_TOKENNOTION_DATABASE_IDRESUME_NOTION_URLGEMINI_API_KEYGEMINI_MODEL
Frontend:
cd ~/CareerWeb
npm install
npm run devBackend:
cd ~/CareerWeb-backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reloadcd ~/CareerWeb
docker compose up --buildFrontend: http://localhost:5173
Backend: http://localhost:8000
This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
Currently, two official plugins are available:
- @vitejs/plugin-react uses Babel (or oxc when used in rolldown-vite) for Fast Refresh
- @vitejs/plugin-react-swc uses SWC for Fast Refresh
The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.
If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the TS template for information on how to integrate TypeScript and typescript-eslint in your project.