No description
  • JavaScript 85.1%
  • HTML 14.5%
  • Dockerfile 0.4%
Find a file
2026-10-27 15:00:23 +00:00
docs Harden ActNow access, backups, and reset 2026-10-26 19:47:05 +03:00
outputs refactor: remove n8n extraction dependency 2026-10-26 18:47:11 +03:00
scripts feat: rename dashboard to ActNow and persist SQLite data 2026-10-26 13:33:55 +03:00
.dockerignore chore: prepare ActionBoard for Coolify staging 2026-10-26 13:12:21 +03:00
.env.example refactor: remove n8n extraction dependency 2026-10-26 18:47:11 +03:00
.gitignore chore: prepare ActionBoard for Coolify staging 2026-10-26 13:12:21 +03:00
app.js Add validated responsible person selector 2026-10-27 17:52:12 +03:00
data.js feat: rename dashboard to ActNow and persist SQLite data 2026-10-26 13:33:55 +03:00
Dockerfile Harden ActNow access, backups, and reset 2026-10-26 19:47:05 +03:00
index.html Add validated responsible person selector 2026-10-27 17:52:12 +03:00
package.json feat: rename dashboard to ActNow and persist SQLite data 2026-10-26 13:33:55 +03:00
README.md Harden ActNow access, backups, and reset 2026-10-26 19:47:05 +03:00
seed.json feat: rename dashboard to ActNow and persist SQLite data 2026-10-26 13:33:55 +03:00
server.mjs Add validated responsible person selector 2026-10-27 17:52:12 +03:00
styles.css feat: align ActNow to Fireside Group brand identity 2026-10-26 23:19:06 +03:00

ActNow

ActNow turns meeting minutes into two reviewable records: Agreements and Actions. The dashboard reads and writes records through the server API backed by SQLite. Local development seeds sample records on first run; production starts empty unless existing database records are present.

Run locally

Requires Node.js 22.13 or newer (for the built-in node:sqlite module without an experimental flag). No package installation is needed. PDF upload additionally requires Poppler's pdftotext command (brew install poppler on macOS; apt install poppler-utils on Debian/Ubuntu). TXT upload does not need Poppler.

cp .env.example .env
# Optional: add TYPESAFE_API_KEY to .env for live Jev extraction.
npm start

Open http://127.0.0.1:4173. Without a TypeSafe API key, the prototype uses a small keyword-based passage picker and labels its output Manual review mode. Those suggestions are unverified. With TYPESAFE_API_KEY, each eligible passage is classified directly by Jev as agreement, action, both, discussion, or unclear. The source text is copied verbatim into suggestions; owner and due date remain unset unless manually entered by the reviewer.

What works

  • Department, meeting, meeting type, and text search filters.
  • Kanban board with Needs review, Open, In progress, Blocked, Completed, and Closed / rejected lanes. Accepted actions can be dragged between lanes or moved from a card menu; suggestions must be accepted before entering an active lane.
  • Filters for department, meeting, meeting type, and text search remain available above the board.
  • Overview, action list, agreements, meetings, and review queue views.
  • Sample records from all three provided meetings. Every imported agreement and action starts as Needs review; no completion status is assumed.
  • Reviewers can edit action text, owner, and due date, accept or reject suggestions, and update an accepted action's status.
  • CSV export of the filtered action register.
  • Upload text-based PDF or TXT minutes (maximum 8 MB), or paste text, with internal/external type and department required.
  • Original uploads are stored under the server's ignored uploads/ directory and can be downloaded from the meeting record. PDF text extraction uses Poppler's pdftotext command.
  • Meetings, agreements, actions, and review/status changes are shared through SQLite. The default local database is ignored at .data/actnow.sqlite; Coolify uses /data/db/actnow.sqlite.
  • Optional server-side Jev extraction through TypeSafe System One. API keys are never sent to the browser.

Coolify staging deployment

This repository includes a Dockerfile for Coolify. Follow docs/COOLIFY.md to configure the staging service, login, domain, and persistent storage. In production, the configured bootstrap credentials create the first SQLite administrator; administrators can then add individual user accounts in the dashboard.

MVP limits

  • SQLite provides shared single-instance storage and is not suitable for horizontal scaling. Keep one application instance.
  • Admins manage accounts, department access, and password resets. Member accounts can read and change records only within assigned departments; admins have cross-department access.
  • Admins can create full database/upload archives for encrypted off-site storage. A confirmed workspace reset creates an archive first and retains user accounts.
  • The supplied PDFs are represented as source-linked sample suggestions, not parsed live at runtime. Automated retention/deletion, MFA/SSO, scheduled off-site backups, and organization/tenant isolation remain future production work.
  • PDF upload requires Poppler (pdftotext) installed on the machine running the server. Scanned/image PDFs need OCR, which is not implemented. DOCX is not supported yet.
  • Jev extraction calls TypeSafe System One directly from the server. Keep TYPESAFE_API_KEY in the server environment; manual review remains available when it is unset.
  • Internal/external type and department are entered by the submitter and must be reviewed; the prototype does not infer them from attendee names.

Files

  • index.html, styles.css, app.js — dashboard and review interface.
  • data.js and seed.json — manually prepared, source-linked demo suggestions used to initialize SQLite once.
  • server.mjs — static server, SQLite accounts and department access, backup/reset APIs, audit log, and Jev extraction adapter.
  • Dockerfile — Coolify image, Poppler and tar support, and container health check.
  • docs/COOLIFY.md — Coolify deployment configuration.
  • docs/PRODUCTION-READINESS.md — implemented controls and remaining launch gates.
  • docs/JEV-INTEGRATION.md — direct TypeSafe System One integration and configuration notes.
  • outputs/ — session notes and an export-ready sample register.

See the project PRD at ../docs/PRD.md.