nils 4b74ee54b0
ci / docker (backend, backend/Dockerfile, backend) (push) Has been cancelled
ci / docker (frontend, frontend/Dockerfile, frontend) (push) Has been cancelled
rename backend binary
2025-10-12 12:13:46 +02:00
2025-10-12 12:13:46 +02:00
2025-10-12 12:13:46 +02:00
2025-10-12 02:35:56 +02:00
2025-10-12 02:35:56 +02:00
2025-10-11 16:42:25 +02:00
1
2025-10-09 22:16:29 +02:00
2025-10-12 02:35:56 +02:00
2025-10-12 02:35:56 +02:00
2025-10-12 02:35:56 +02:00

Papercrate

Backend Integration Tests

Integration tests require a running Postgres instance (and, optionally, Quickwit for OCR indexing). The repository includes a lightweight compose file for local runs:

docker compose -f docker-compose.test.yml up -d
export TEST_DATABASE_URL=postgres://papercrate:papercrate_test@localhost:5433/papercrate_test
# optional, enables Quickwit indexing jobs
export QUICKWIT_ENDPOINT=http://localhost:7280
export QUICKWIT_INDEX=documents
cargo test

Stop the database when you are done:

docker compose -f docker-compose.test.yml down

The compose service uses tmpfs storage, giving each test run a clean database.

Runtime Dependencies

  • ocrmypdf (optional but recommended): Used by the OCR worker to extract text from PDFs when no embedded text layer is available. Ensure it is installed and available on the worker hosts if OCR is desired.
  • Quickwit (optional): The Quickwit indexer is used to ingest extracted text for search. Set QUICKWIT_ENDPOINT and QUICKWIT_INDEX in the environment when running workers if you want indexing jobs to run. The local compose file starts a Quickwit instance on http://localhost:7280 and seeds the documents index automatically.

Running Migrations in Kubernetes

The backend container image ships the diesel CLI, so schema migrations can be executed as a short-lived Job (or Helm hook) before rolling out new pods. Example manifest:

apiVersion: batch/v1
kind: Job
metadata:
  name: papercrate-migrate
spec:
  template:
    spec:
      restartPolicy: OnFailure
      containers:
        - name: migrate
          image: ghcr.io/example/papercrate-backend:<TAG>
          command: ["/usr/local/bin/diesel", "migration", "run"]
          env:
            - name: DATABASE_URL
              valueFrom:
                secretKeyRef:
                  name: papercrate-db
                  key: DATABASE_URL

Run the Job manually (kubectl apply -f migrate-job.yaml) or configure it as a Helm pre-install/pre-upgrade hook so migrations run automatically on each deployment. Once the Job succeeds, deploy/update the backend Deployment as usual.

S
Description
No description provided
Readme AGPL-3.0
36 MiB
Languages
TypeScript 48.4%
Rust 43.5%
CSS 6.1%
PLpgSQL 1%
Dockerfile 0.6%
Other 0.4%