Skip to main content

plain-text daily notes with optional encryption

Project description

duras

License

Daily notes as plain text files, with search and optional encryption.


Model

One note per day:


YYYY/MM/YYYY-MM-DD.dn

Properties:

  • plain UTF-8 text
  • filesystem is the index
  • no database, no hidden state
  • atomic writes

Encrypted note:


YYYY/MM/YYYY-MM-DD.dn.gpg

via the GNU Privacy Guard.


Scope

Fits:

  • terminal-based workflows
  • grep-based retrieval
  • long-lived plain text notes
  • optional encryption

Not a fit:

  • sync system
  • GUI / rich text editor
  • query engine or database

Variants

duras

  • system gpg
  • no dependencies
  • Unix-like systems

duras_ashell

  • iOS a-Shell mini
  • PGPy (pure Python)
  • no external binaries
  • .asc key handling (no keyring)
  • compatible encrypted format

Usage

duras
duras append "note"
duras search term

Commands

open

duras open
duras open -1
duras open 2026-04-19
duras open -- +7

append

duras append "text"
duras append -d -1 "yesterday"
cat file | duras append -

- = stdin


Encryption

duras -c open
duras -c append "secret"
duras -c show

Notes:

  • uses system gpg
  • append is memory-only
  • editor uses temp file

Search / tags

duras search error
duras search todo -i
duras tags
  • literal match (not regex)
  • encrypted notes excluded

Listing

duras list
duras list -n 0
duras stats

Order: filename (date), not mtime.


Export

duras export ~/backup
duras export ~/backup --encrypt

Creates archive; optional encryption avoids plaintext export.


Dates

YYYY-MM-DD  absolute
0           today
-1          yesterday
+7          future

Future dates are rejected.


Environment

var meaning
DURAS_DIR notes dir (default: ~/Documents/Notes)
EDITOR editor fallback: nano / vi / ed
DURAS_GPG_KEY encryption recipient

Behavior

  • one file per day
  • plain + encrypted may coexist
  • atomic writes
  • no index layer

Exit codes

code meaning
0 ok
1 error
2 not found
3 invalid input
4 external failure

Limits

  • encrypted notes not searchable
  • depends on gpg

Docs


License

ISC

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

duras-1.0.0.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

duras-1.0.0-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file duras-1.0.0.tar.gz.

File metadata

  • Download URL: duras-1.0.0.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for duras-1.0.0.tar.gz
Algorithm Hash digest
SHA256 47b6a2c09d028d10713cb491a166c83b5320363a44d1206916b71d0c622d7999
MD5 03a145339bb1764a14f16e4c7a1ae5f9
BLAKE2b-256 a6accaf57c1789d1615b1527035c7b091f765df0c86c008f62290a4739413c69

See more details on using hashes here.

Provenance

The following attestation bundles were made for duras-1.0.0.tar.gz:

Publisher: publish.yml on sduras/duras

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file duras-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: duras-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 12.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for duras-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 523721aba77f817c55024ad463fe79b3681cc17ee7488115d1ebd6a2591cbc70
MD5 e72722bceaf29e2ee7185f94db3569a2
BLAKE2b-256 02fcc9734b6b7149c436e6801b7823499be1a19979af382de601bd1771076646

See more details on using hashes here.

Provenance

The following attestation bundles were made for duras-1.0.0-py3-none-any.whl:

Publisher: publish.yml on sduras/duras

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page