Evolve summarizer into AI service with OCR support
This commit is contained in:
@@ -12,7 +12,7 @@ Job Tracker is a simple, self-hosted app for tracking job applications with a Re
|
||||
- History/event trail per application (created, status changes, follow-up set, delete/restore)
|
||||
- Export jobs to JSON/CSV + daily scheduled JSON export
|
||||
- Optional “job import” preview from supported job sites (plugins) + optional translation to English
|
||||
- Optional local summarizer service for short/full descriptions
|
||||
- Optional local AI service for short/full descriptions
|
||||
- Optional Google sign-in (Google ID tokens) to protect the API
|
||||
|
||||
## Architecture
|
||||
@@ -21,11 +21,11 @@ Job Tracker is a simple, self-hosted app for tracking job applications with a Re
|
||||
- `JobTrackerApi/`: ASP.NET Core API (defaults to `http://localhost:5202`)
|
||||
- SQLite DB file: defaults to `JobTrackerApi/jobtracker.db` unless `Data:Root` / connection string overrides it
|
||||
- Attachments: stored on disk under `DataRoot/Attachments/<jobId>/...`
|
||||
- Optional local summarizer service: `tools/summarizer/` (FastAPI) used by the API via `Summarizer:BaseUrl`
|
||||
- Optional local AI service: `tools/summarizer/` (FastAPI) used by the API via `Ai:BaseUrl`
|
||||
|
||||
## Quickstart (Docker)
|
||||
|
||||
This runs: frontend (nginx), backend API, and the summarizer service.
|
||||
This runs: frontend (nginx), backend API, and the AI service.
|
||||
|
||||
1) Create a `.env` file next to `docker-compose.yml` (you can start from `.env.example`).
|
||||
|
||||
@@ -43,7 +43,7 @@ docker compose up --build
|
||||
|
||||
- .NET SDK `9.x` (API targets `net9.0`)
|
||||
- Node.js (for the UI)
|
||||
- (Optional) Python 3.x if running the summarizer without Docker
|
||||
- (Optional) Python 3.x if running the AI service without Docker
|
||||
|
||||
### 1) Run the API
|
||||
|
||||
@@ -65,14 +65,14 @@ npm start
|
||||
|
||||
The UI defaults to calling `http://localhost:5202/api` when running on localhost (see `job-tracker-ui/src/api.ts`).
|
||||
|
||||
### 3) (Optional) Run the summarizer
|
||||
### 3) (Optional) Run the AI service
|
||||
|
||||
The API calls a local FastAPI service to generate summaries. If it’s not running, the app still works (summary generation may be empty / best-effort).
|
||||
|
||||
With Docker (recommended):
|
||||
|
||||
```bash
|
||||
docker compose up --build summarizer
|
||||
docker compose up --build ai-service
|
||||
```
|
||||
|
||||
Or run directly from `tools/summarizer/` (see `tools/summarizer/README.md`).
|
||||
@@ -87,7 +87,7 @@ Common keys:
|
||||
- `Data:Root`: folder for the SQLite DB + exports (defaults to API content root)
|
||||
- `Data:AttachmentsRoot`: override attachments folder (defaults to `<Data:Root>/Attachments`)
|
||||
- `Cors:Origins`: list of allowed origins (defaults to `http://localhost:3000`; use `"*"` to allow all)
|
||||
- `Summarizer:BaseUrl`: summarizer base URL (default `http://127.0.0.1:8001`)
|
||||
- `Ai:BaseUrl`: AI service base URL (default `http://127.0.0.1:8001`)
|
||||
- `Exports:DailyEnabled`: enable/disable daily export background job
|
||||
- `Exports:DailyFolder`: export destination (relative to `Data:Root` if not absolute)
|
||||
- `Exports:DailyHourLocal`: local hour (0–23) when the daily export runs
|
||||
@@ -109,7 +109,7 @@ Common keys:
|
||||
- `Email:SmtpUser`: SMTP username (often your Gmail address)
|
||||
- `Email:SmtpPassword`: SMTP password (for Gmail: use an App Password)
|
||||
- `Email:From`: from address (default: `Email:SmtpUser`)
|
||||
- `Email:FromName`: from name (default: `Job Tracker`)
|
||||
- `Email:FromName`: from name (default: `Jobbjakt`)
|
||||
|
||||
### UI settings
|
||||
|
||||
|
||||
Reference in New Issue
Block a user