mirror of
https://github.com/arkorty/prodmon.git
synced 2026-03-17 16:51:46 +00:00
...
This commit is contained in:
131
README.md
Normal file
131
README.md
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
# prodmon
|
||||||
|
|
||||||
|
**prodmon** is a cross-platform desktop productivity monitoring application that uses AI to analyze user activity via periodic screenshots. It detects anomalies and deviations from role-based productivity baselines using both cloud (Google Gemini) and local (Gemma3 via Ollama) models.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- **Automated Screenshot Capture:** Takes desktop screenshots at regular intervals.
|
||||||
|
- **OCR Extraction:** Extracts text from screenshots using Tesseract OCR.
|
||||||
|
- **AI-Powered Anomaly Detection:** Analyzes extracted text for productivity anomalies using:
|
||||||
|
- Google Gemini API (cloud)
|
||||||
|
- Local Gemma3 model (via Ollama)
|
||||||
|
- **Role-Based Rules:** Supports customizable rules and baselines for different job roles (developer, accountant, office worker, etc.).
|
||||||
|
- **Learning System:** Detects unknown entities in screenshots and updates rules using LLMs.
|
||||||
|
- **Modern Electron Frontend:** Real-time dashboard for monitoring, anomaly alerts, and model selection.
|
||||||
|
- **Cross-Platform:** Works on Windows, macOS, and Linux.
|
||||||
|
|
||||||
|
## Screenshots
|
||||||
|
|
||||||
|
### prodmon flags YouTube as unproductive
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
```
|
||||||
|
prodmon/
|
||||||
|
src/
|
||||||
|
index.js # Electron main process (app entry)
|
||||||
|
index.html # Frontend UI
|
||||||
|
index.css # Styles
|
||||||
|
logic/
|
||||||
|
requirements.txt
|
||||||
|
src/
|
||||||
|
main.py # Python backend entry point
|
||||||
|
api/
|
||||||
|
gemini.py # Google Gemini API integration
|
||||||
|
gemma3.py # Local Gemma3 model integration
|
||||||
|
utils/
|
||||||
|
ocr.py # OCR extraction logic
|
||||||
|
cli.py # CLI argument parsing and debug
|
||||||
|
learn.py # Learning system for unknowns
|
||||||
|
rules/
|
||||||
|
baseline.json
|
||||||
|
developer/baseline.json
|
||||||
|
accountant/baseline.json
|
||||||
|
office_worker/baseline.json
|
||||||
|
```
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
- [Node.js](https://nodejs.org/) (for Electron)
|
||||||
|
- [Python 3.9+](https://www.python.org/)
|
||||||
|
- [Ollama](https://ollama.com/) (for local Gemma3 model, optional)
|
||||||
|
- [Tesseract OCR](https://github.com/tesseract-ocr/tesseract) installed and in your PATH
|
||||||
|
|
||||||
|
### Setup
|
||||||
|
|
||||||
|
1. **Clone the repository:**
|
||||||
|
```bash
|
||||||
|
git clone <repo-url>
|
||||||
|
cd prodmon
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Install Node dependencies:**
|
||||||
|
```bash
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **First run (auto-setup):**
|
||||||
|
```bash
|
||||||
|
npm start
|
||||||
|
```
|
||||||
|
- On first launch, the app will create a Python virtual environment and install backend dependencies automatically.
|
||||||
|
|
||||||
|
4. **Configure Google Gemini API (optional for cloud AI):**
|
||||||
|
- Create a `.env` file in `src/logic/` with:
|
||||||
|
```
|
||||||
|
GOOGLE_API_KEY=your_google_gemini_api_key
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **(Optional) Setup Ollama and Gemma3 for local AI:**
|
||||||
|
- Install [Ollama](https://ollama.com/) and pull the Gemma3 model:
|
||||||
|
```bash
|
||||||
|
ollama pull gemma3:4b
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
- Launch the app with `npm start`.
|
||||||
|
- The app will take screenshots every 30 seconds and analyze them.
|
||||||
|
- Switch between "Gemini" (cloud) and "Local Model" (Gemma3) in the sidebar.
|
||||||
|
- View detected anomalies and activity stats in real time.
|
||||||
|
|
||||||
|
## Customization
|
||||||
|
|
||||||
|
- **Rules & Baselines:**
|
||||||
|
Edit or add JSON files in `src/logic/rules/` for different roles or organizations.
|
||||||
|
- **Add New Roles:**
|
||||||
|
Create a new folder in `rules/` (e.g., `rules/manager/`) and add a `baseline.json`.
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
### Node.js
|
||||||
|
|
||||||
|
- electron
|
||||||
|
- screenshot-desktop
|
||||||
|
- python-bridge
|
||||||
|
|
||||||
|
### Python (see `src/logic/requirements.txt`)
|
||||||
|
|
||||||
|
- pytesseract
|
||||||
|
- Pillow
|
||||||
|
- opencv-python
|
||||||
|
- scikit-learn
|
||||||
|
- numpy
|
||||||
|
- pandas
|
||||||
|
- google-generativeai
|
||||||
|
- python-dotenv
|
||||||
|
- urllib3
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
- **Frontend:** Edit `src/index.html`, `src/index.css`, and `src/index.js`.
|
||||||
|
- **Backend:** Edit Python files in `src/logic/src/`.
|
||||||
|
- **Rules:** Edit JSON files in `src/logic/rules/`.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
MIT
|
||||||
BIN
blob/screenshot.png
Normal file
BIN
blob/screenshot.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.7 MiB |
Submodule src/logic updated: f6c548d7de...d90dd9b7cd
Reference in New Issue
Block a user