Add start/stop/restart scripts and USER_GUIDE documentation
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
# AI Job Application Suite — Quick Start & Usage Guide
|
||||
|
||||
Welcome to the AI Job Application Suite! This app is designed to automate, tailor, and track your job applications using AI (Gemini 3.6 Flash & local LM Studio fallback).
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Managing the Application (Start, Stop, Restart)
|
||||
|
||||
Helper bash scripts have been created in the repository root for convenience:
|
||||
|
||||
| Action | Command | Description |
|
||||
| :--- | :--- | :--- |
|
||||
| **Start Server** | `./start.sh` | Starts the app background server on port 3000 and logs output to `.app.log`. |
|
||||
| **Stop Server** | `./stop.sh` | Gracefully stops the running app server. |
|
||||
| **Restart Server** | `./restart.sh` | Restarts the app server (useful after environment changes). |
|
||||
| **Manual Dev Mode** | `npm run dev` | Runs the server synchronously in your active terminal. |
|
||||
|
||||
Once started, access the application in your browser at:
|
||||
👉 **`http://localhost:3000`**
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Key Features & How to Use Them
|
||||
|
||||
### 1. 📊 Application Tracker (`Applications`)
|
||||
- **Track Status**: View applications organized by stage (`Applied`, `Screening`, `Interviewing`, `Offer`, `Rejected`).
|
||||
- **Update Status**: Click on status badges to transition applications. Updating to *Interviewing* or *Offer* automatically logs notifications.
|
||||
- **Log Applications**: Click **"+ Log New Application"** to manually add applications or log auto-applied jobs.
|
||||
|
||||
---
|
||||
|
||||
### 2. 📝 AI Tailor Walkthrough (`Tailor Resume`)
|
||||
- Paste a Job Posting URL or Job Description.
|
||||
- The AI will evaluate your candidate profile against the job posting and generate:
|
||||
- **Match Score & Key Gap Analysis**
|
||||
- **Tailored Resume Bullet Points** customized for the role
|
||||
- **Cover Letter Draft** optimized for ATS keywords
|
||||
- *Requires Gemini API key or a local LM Studio model active at `http://localhost:1234/v1`.*
|
||||
|
||||
---
|
||||
|
||||
### 3. 🤖 Autonomous Auto-Apply Engine (`Auto-Apply`)
|
||||
- Configure automated criteria (e.g. minimum match score threshold, preferred roles, max applications per day).
|
||||
- Click **"Run Auto-Apply Batch"**. The AI will scan your job feeds, match requirements against your profile, and submit/log compliant applications.
|
||||
|
||||
---
|
||||
|
||||
### 4. 📰 Job Feeds (`Job Feeds`)
|
||||
- Browse aggregation feeds (LinkedIn, Greenhouse, Lever, Indeed).
|
||||
- Click **"Tailor & Apply"** on any job card to jump directly to the AI Resume Tailor tool pre-loaded with the job listing.
|
||||
|
||||
---
|
||||
|
||||
### 5. 📅 Calendar & Interview Scheduler (`Calendar`)
|
||||
- View and schedule upcoming screening calls and technical interviews.
|
||||
- Integrated with Google Calendar synchronization API.
|
||||
|
||||
---
|
||||
|
||||
### 6. ⚙️ Profile Settings (`Profile Settings`)
|
||||
- Update your master resume text, technical skills, target job titles, desired salary range, and contact information.
|
||||
- Configure Auto-Apply rules and threshold preferences.
|
||||
|
||||
---
|
||||
|
||||
## 🧠 AI Model Configuration
|
||||
|
||||
- **Primary Model**: Google Gemini 3.6 Flash (Set your `GEMINI_API_KEY` in [.env](file:///home/david/Documents/vscode/ai-job-application/.env)).
|
||||
- **Fallback Local Model**: If Gemini API limit/quota is reached or missing, the server automatically routes requests to your local LM Studio instance (`http://localhost:1234/v1`).
|
||||
- Recommended local model: `qwen2.5-vl-7b-instruct-abliterated` or `qwen2.5-coder-7b-instruct`.
|
||||
Generated
+6053
File diff suppressed because it is too large
Load Diff
Executable
+9
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
# Restart script for AI Job Application server
|
||||
|
||||
APP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
echo "Restarting AI Job Application server..."
|
||||
"$APP_DIR/stop.sh"
|
||||
sleep 1
|
||||
"$APP_DIR/start.sh"
|
||||
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env bash
|
||||
# Start script for AI Job Application server
|
||||
|
||||
APP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PID_FILE="$APP_DIR/.app.pid"
|
||||
LOG_FILE="$APP_DIR/.app.log"
|
||||
|
||||
if [ -f "$PID_FILE" ]; then
|
||||
PID=$(cat "$PID_FILE")
|
||||
if kill -0 "$PID" 2>/dev/null; then
|
||||
echo "AI Job Application server is already running (PID: $PID)."
|
||||
echo "Access it at http://localhost:3000"
|
||||
exit 0
|
||||
else
|
||||
rm -f "$PID_FILE"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Starting AI Job Application server..."
|
||||
cd "$APP_DIR" || exit 1
|
||||
nohup npm run dev > "$LOG_FILE" 2>&1 &
|
||||
SERVER_PID=$!
|
||||
echo "$SERVER_PID" > "$PID_FILE"
|
||||
|
||||
sleep 2
|
||||
if kill -0 "$SERVER_PID" 2>/dev/null; then
|
||||
echo "✓ Server successfully started (PID: $SERVER_PID)."
|
||||
echo "✓ App running at: http://localhost:3000"
|
||||
echo "✓ Logs: $LOG_FILE"
|
||||
else
|
||||
echo "❌ Server failed to start. Check logs at $LOG_FILE"
|
||||
rm -f "$PID_FILE"
|
||||
exit 1
|
||||
fi
|
||||
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env bash
|
||||
# Stop script for AI Job Application server
|
||||
|
||||
APP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PID_FILE="$APP_DIR/.app.pid"
|
||||
|
||||
if [ -f "$PID_FILE" ]; then
|
||||
PID=$(cat "$PID_FILE")
|
||||
if kill -0 "$PID" 2>/dev/null; then
|
||||
echo "Stopping AI Job Application server (PID: $PID)..."
|
||||
kill "$PID" 2>/dev/null
|
||||
|
||||
# Give it a moment to shutdown gracefully
|
||||
for i in {1..5}; do
|
||||
if ! kill -0 "$PID" 2>/dev/null; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Force kill if still running
|
||||
if kill -0 "$PID" 2>/dev/null; then
|
||||
echo "Force stopping PID $PID..."
|
||||
kill -9 "$PID" 2>/dev/null
|
||||
fi
|
||||
|
||||
rm -f "$PID_FILE"
|
||||
echo "✓ Server stopped successfully."
|
||||
else
|
||||
echo "Server is not running (stale PID file found and removed)."
|
||||
rm -f "$PID_FILE"
|
||||
fi
|
||||
else
|
||||
# Check for any rogue tsx server.ts process
|
||||
PIDS=$(pgrep -f "tsx server.ts" || pgrep -f "dist/server.cjs")
|
||||
if [ -n "$PIDS" ]; then
|
||||
echo "Stopping running server process(es): $PIDS"
|
||||
kill $PIDS 2>/dev/null
|
||||
echo "✓ Server stopped."
|
||||
else
|
||||
echo "AI Job Application server is not running."
|
||||
fi
|
||||
fi
|
||||
Reference in New Issue
Block a user