EventIQ analyzes Windows Event Log text, screenshots, XML files, and EVTX files. It stores analysis history, searches for references, and can export a Markdown report for sharing.
cd backend
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
copy .env.example .env
uvicorn main:app --reloadThe API runs at http://localhost:8000.
cd frontend
npm install
copy .env.example .env.local
npm run devThe app runs at http://localhost:3000.
Default development login:
- Username:
admin - Password:
P@ssw0rd
Change ADMIN_USERNAME, ADMIN_PASSWORD, and JWT_SECRET before deploying.
Image upload uses pytesseract, which requires the Tesseract desktop program.
- Install Tesseract from the Windows installer:
https://github.com/UB-Mannheim/tesseract/wiki - During install, include English and Thai language packs if you need Thai screenshots.
- Add the Tesseract install folder to
PATH, usuallyC:\Program Files\Tesseract-OCR. - Restart the backend terminal.
- Test image upload from the Image tab.
If OCR fails, the backend returns a message with the Tesseract installer link.
The File tab accepts .evtx and .xml. EVTX parsing uses python-evtx; the backend scans up to 100 records and picks the first Error/Critical event when possible.
The backend Docker image installs Tesseract OCR with English and Thai language packs, so image OCR works in Linux deployments.
Build and run only the backend:
cd backend
docker build -t eventiq-backend .
docker run --rm -p 8000:8000 \
-e ADMIN_USERNAME=admin \
-e ADMIN_PASSWORD=P@ssw0rd \
-e JWT_SECRET=change-this \
-e CORS_ORIGINS=http://localhost:3000 \
eventiq-backendRun backend plus Postgres locally:
docker compose up --buildThe frontend can still run with:
cd frontend
npm run devOpen any analysis result and click Export Markdown. The browser downloads a .md report containing metadata, summary, steps, and references.
Fly.io is a good fit for this backend if you want Docker-first deployment and a real Linux runtime for Tesseract OCR.
- Install and log in to
flyctl. - Go to the backend folder:
cd backend- Create a Fly app and generate config:
fly launchYou can use fly.toml.example as a starting point. Change the app name to a globally unique Fly app name.
- Add secrets:
fly secrets set ADMIN_USERNAME=admin
fly secrets set ADMIN_PASSWORD=your-strong-password
fly secrets set JWT_SECRET=your-long-random-secret
fly secrets set CORS_ORIGINS=https://your-vercel-app.vercel.app- Add Postgres if you want persistent history:
fly postgres create
fly postgres attach <postgres-app-name>- Deploy:
fly deploy- Check the API:
fly open /docs- Create a Railway project from this repository.
- Set the service root to
backend. - Add environment variables:
ADMIN_USERNAMEADMIN_PASSWORDJWT_SECRETJWT_EXPIRE_HOURSCORS_ORIGINS=https://your-vercel-app.vercel.appDATABASE_URLif using Railway Postgres
- Railway can use
backend/Procfile:
uvicorn main:app --host 0.0.0.0 --port $PORT- After deploy, open
/docson the Railway URL to confirm the API is live.
- Import the repository in Vercel.
- Set the project root to
frontend. - Add environment variable:
NEXT_PUBLIC_API_URL=https://your-railway-api.up.railway.app
- Deploy.
- In Railway, set
CORS_ORIGINSto the final Vercel domain and redeploy the backend.
- EVTX parser: implemented.
- OCR setup guide: documented.
- Export Markdown: implemented.
- Backend JWT auth: implemented and wired to frontend.
- Railway + Vercel deployment: documented with required config.