Skip to content

Add Zulivio - #1017

Open
Raktim94 wants to merge 7 commits into
IceWhaleTech:mainfrom
Raktim94:add-zulivio
Open

Add Zulivio#1017
Raktim94 wants to merge 7 commits into
IceWhaleTech:mainfrom
Raktim94:add-zulivio

Conversation

@Raktim94

@Raktim94 Raktim94 commented Aug 21, 2026

Copy link
Copy Markdown

New app: Zulivio

Free, open-source (AGPL-3.0), self-hostable CRM and workforce operations
platform: role-based employee management (add/remove with auto-generated
credentials), work assignment tracking with outcomes, an explicit
attendance state machine (shift/break/logout with a full audit trail), a
PDF knowledge base with acknowledgement tracking, a Sales CRM (leads,
pipelines, opportunities, territory/capacity-based routing, rep-level
forecasting), a Sales Head / RBAC layer with scope-resolution and
dashboard drill-down, quality audit/workflow/helpdesk tooling, a master
dashboard with live analytics, and CSV/Google Sheets import-export. Runs
entirely on the user's own hardware — no subscription, no data leaving
their server.

What's new since this PR opened (now at 1.7.0)

  • Separated employees can now be permanently deleted, once they have no
    lead/assignment/attendance/etc. history to lose — otherwise the app
    explains exactly what's blocking it. Also fixes a gap where a
    SUSPENDED/ON_LEAVE employee had no way to be separated at all.
  • Added a one-tap "Quick access" shortcut row to the master dashboard.
  • Added a quick "Note" button right on lead board cards, so a caller can
    log a note without opening the lead.
  • Added a copy-to-clipboard button for the phone number on the lead
    workspace page (the board cards already had it).
  • CSV lead imports now preserve any unrecognized columns (rating,
    category, outreach angle, etc.) into a custom-fields bag instead of
    dropping them, so any export shape can be imported without a schema
    change.
  • Added a forced password-change gate after an admin resets an
    employee's password.
  • Added one-tap call/WhatsApp/copy quick actions right on lead board
    cards.

How this was validated

  • docker compose config -q passes on the app's compose file.
  • x-casaos fields cross-checked against the current docs/specs/compose-and-x-casaos.md (id format, required/recommended fields, category enum, quoted port_map) — unchanged by this bump, only version/update_at/release_notes/image tags moved.
  • Both GHCR images confirmed multi-arch (linux/amd64 + linux/arm64) and pullable at the pinned 1.7.0 tag via docker buildx imagetools inspect.
  • Backend: real nest build (not just tsc --noEmit, which has previously diverged from it on this repo) and the full e2e suite (148/148) pass. Frontend: real next build passes.
  • New backend behavior (the permanent-delete endpoint) has dedicated e2e coverage: a clean separated employee can be purged, one with history is blocked with a specific reason, and a manager can't purge a peer/higher-ranked employee.
  • Every new UI surface (employee delete flow, dashboard quick-access row, lead board note button, lead workspace copy button) was click-tested end-to-end in a fully isolated, throwaway Docker Compose stack (own containers/ports/Postgres volume) rather than the host's live Zulivio instance.
  • Could not run ./scripts/build_dist.sh locally (no pip in this environment) — relying on this PR's own CI (validator.yml) for the full build check.
Boot-test from the 1.5.0 bump (unchanged startup path)

Booted the compose file locally end-to-end with a throwaway AppID and scratch bind mounts (no /DATA paths touched): Postgres came up healthy, the backend started clean with zero manually-set env vars, and FIELD_ENCRYPTION_KEY was confirmed to auto-generate and persist to the /data/secrets volume on first use — no manual key setup required.

Workforce-ops CRM: lead pipeline board, custom fields on CSV lead
imports, helpdesk, and employee accounts with a forced password-change
gate after an admin reset.

1.6.1: fixes a Helpdesk page crash when myRuns/definitions didn't
resolve to an array.
Permanent employee delete for separated employees with no history to
lose, a dashboard quick-access shortcut row, a quick note button on lead
board cards, and a copy-to-clipboard button for the lead phone number.
…ange)

This PR branch's 1.5.0 entry only summarized the S3/Helmet/email-uniqueness
part of that release. Brings in the rest that shipped in the same commit:
the assignment/employee-number race fix, the auth guard going global by
default, and the role-hierarchy consolidation.
@sonarqubecloud

sonarqubecloud Bot commented Sep 7, 2026

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants