pacta

module
v0.41.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 19, 2026 License: MIT

README ΒΆ

PACTA

Contract Lifecycle Management System

Release Go Report Card CI Downloads

PACTA is a local-first contract management platform designed for organizations that require full control over their data. Distributed as a single binary with zero external dependencies, it runs entirely on your machine β€” no cloud, no third-party servers, no data leaving your infrastructure.

πŸ‡ͺπŸ‡Έ Leer en espaΓ±ol β†’


Features

  • Contract Management β€” Full CRUD operations with soft delete, version tracking, and status workflows
  • Hybrid Registration β€” Email code verification (via local SMTP) or admin approval with company assignment
  • Party Management β€” Centralized registry of clients, suppliers, and authorized signers
  • Approval Workflows β€” Structured supplement approvals with draft, approved, and active states
  • Document Attachments β€” Link supporting documents directly to contracts and parties
  • Notifications & Alerts β€” Automated reminders for expiring contracts and upcoming renewals
  • Audit Trail β€” Immutable log of all operations for compliance and accountability
  • Role-Based Access Control β€” Granular permissions across admin, manager, editor, and viewer roles
  • Multi-Company Support β€” Single company and parent + subsidiaries modes with complete data isolation
  • Admin Approval Dashboard β€” Pending user approvals with company assignment and email notifications
  • Setup Wizard β€” Guided initial configuration for admin user, clients, and suppliers
  • Dark/Light Theme β€” System-aware theme toggle with persistent preferences
  • Zero External Dependencies β€” Single static binary, embedded SQLite, no database server required

Quick Start

1. Download

Get the latest release for your platform from the Releases page.

2. Install
Platform Guide
🐧 Linux (Production) Installation Guide β†’
πŸͺŸ Windows (Local) Installation Guide β†’
🍎 macOS Download .tar.gz from Releases, extract, run ./pacta
3. Run
./pacta

The application starts on http://127.0.0.1:3000 and opens your browser automatically.

4. Set Up

On first run, PACTA opens a Setup Wizard in your browser. Navigate to /setup (or wait for the automatic redirect) to configure:

  1. Create admin account β€” Choose your email and password
  2. Add clients β€” Register your organization's clients (optional, can be skipped)
  3. Add suppliers β€” Register suppliers (optional, can be skipped)

Once setup is complete, you'll be redirected to the login page. Use the credentials you created to log in.

Note: The setup wizard only appears on first run. If you need to reconfigure, delete the SQLite database file and restart PACTA.


Supported Platforms

OS Architecture Format Guide
Linux amd64 .tar.gz, .deb Linux Guide β†’
Linux arm64 .tar.gz, .deb Linux Guide β†’
macOS amd64 .tar.gz Extract and run ./pacta
macOS arm64 .tar.gz Extract and run ./pacta
Windows amd64 .tar.gz Windows Guide β†’

Architecture

PACTA follows a minimalist, self-contained architecture:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  pacta (single Go binary)                    β”‚
β”‚                                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Embedded React + TypeScript frontend  β”‚  β”‚
β”‚  β”‚  (Vite build, statically generated)    β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  SQLite database (pure Go, no CGO)     β”‚  β”‚
β”‚  β”‚  └─ SQL migrations (auto-applied)      β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  HTTP server (:3000)                   β”‚  β”‚
β”‚  β”‚  β”œβ”€β”€ GET /*    β†’ static frontend       β”‚  β”‚
β”‚  β”‚  └── /api/*    β†’ REST API (chi router) β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                              β”‚
β”‚  All data stays local. No internet required. β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Technology Stack
Layer Technology
Backend Go 1.25, chi router
Database SQLite (modernc.org/sqlite, pure Go)
Frontend React 19, TypeScript, Vite, Tailwind CSS
UI Components shadcn/ui
Animations Framer Motion
Auth Cookie-based sessions, bcrypt
Packaging GoReleaser, NFPM (.deb)

API Reference

Method Path Auth Description
POST /api/auth/register No Register new user
POST /api/auth/login No Authenticate user
POST /api/auth/logout Yes Destroy session
GET /api/auth/me Yes Get current user
GET /api/contracts Yes List contracts
POST /api/contracts Yes Create contract
GET /api/contracts/{id} Yes Get contract by ID
PUT /api/contracts/{id} Yes Update contract
DELETE /api/contracts/{id} Yes Soft delete contract
GET /api/clients Yes List clients
POST /api/clients Yes Create client
GET /api/suppliers Yes List suppliers
POST /api/suppliers Yes Create supplier

Changelog

For a complete history of changes, please see the full changelog β†’


Development

See the Development Guide for prerequisites, local setup, and contribution guidelines.

Quick start for developers:

# Terminal 1: Build frontend
cd pacta_appweb
npm ci && npm run build

# Terminal 2: Run Go server
cd ..
go run ./cmd/pacta

Security

  • Local-only binding β€” Server listens on 127.0.0.1 only
  • httpOnly, SameSite=Strict cookies β€” Prevents XSS token theft
  • bcrypt password hashing β€” Cost factor 10
  • Parameterized SQL queries β€” No SQL injection vectors
  • Server-side session management β€” Full control over session lifecycle
  • Role-based authorization β€” Enforced at the API handler level

License

MIT License. See LICENSE for details.

Directories ΒΆ

Path Synopsis
cmd
pacta command
internal
db

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL