krz/yoshi-cli

A password manager for the command line.

clone: git clone https://gitbay.org/krz/yoshi-cli.git

c7e5d9fbec9418d856be961358e35f603bbbf523

verified · cmc

author: Christian Cleberg <hello@cleberg.net> · 2024-11-07T03:52:32Z

configure as pypi hosted app
 .gitignore                                         |   3 +-
 dist/yoshi_cli-0.1.0-py3-none-any.whl              | Bin 0 -> 19406 bytes
 dist/yoshi_cli-0.1.0.tar.gz                        | Bin 0 -> 19612 bytes
 pyproject.toml                                     |  18 ++
 account.py => src/account.py                       |   0
 crypto.py => src/crypto.py                         |   0
 database.py => src/database.py                     |   0
 process.py => src/process.py                       |   0
 src/yoshi_christian_cleberg.egg-info/PKG-INFO      | 198 +++++++++++++++++++++
 src/yoshi_christian_cleberg.egg-info/SOURCES.txt   |  11 ++
 .../dependency_links.txt                           |   1 +
 src/yoshi_christian_cleberg.egg-info/top_level.txt |   4 +
 src/yoshi_cli.egg-info/PKG-INFO                    | 198 +++++++++++++++++++++
 src/yoshi_cli.egg-info/SOURCES.txt                 |  11 ++
 src/yoshi_cli.egg-info/dependency_links.txt        |   1 +
 src/yoshi_cli.egg-info/top_level.txt               |   4 +
 src/yoshi_cli_christian_cleberg.egg-info/PKG-INFO  | 198 +++++++++++++++++++++
 .../SOURCES.txt                                    |  11 ++
 .../dependency_links.txt                           |   1 +
 .../top_level.txt                                  |   4 +
 20 files changed, 662 insertions(+), 1 deletion(-)

diff --git a/.gitignore b/.gitignore
index 0299b2d..a9755c9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
 .DS_Store
 .idea/
+.pypirc
 venv/
 __pycache__/
 *.sqlite
-*.key
\ No newline at end of file
+*.key
diff --git a/dist/yoshi_cli-0.1.0-py3-none-any.whl b/dist/yoshi_cli-0.1.0-py3-none-any.whl
new file mode 100644
index 0000000..a8304bf
Binary files /dev/null and b/dist/yoshi_cli-0.1.0-py3-none-any.whl differ
diff --git a/dist/yoshi_cli-0.1.0.tar.gz b/dist/yoshi_cli-0.1.0.tar.gz
new file mode 100644
index 0000000..6dee5c3
Binary files /dev/null and b/dist/yoshi_cli-0.1.0.tar.gz differ
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 0000000..43c4421
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,18 @@
+[project]
+name = "yoshi-cli"
+version = "0.1.0"
+authors = [
+  { name="Christian Cleberg", email="hello@cleberg.net" },
+]
+description = "A password manager for the command line."
+readme = "README.md"
+requires-python = ">=3.8"
+classifiers = [
+    "Programming Language :: Python :: 3",
+    "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
+    "Operating System :: OS Independent",
+]
+
+[project.urls]
+Homepage = "https://github.com/ccleberg/yoshi"
+Issues = "https://github.com/ccleberg/yoshi/issues"
diff --git a/account.py b/src/account.py
similarity index 100%
rename from account.py
rename to src/account.py
diff --git a/crypto.py b/src/crypto.py
similarity index 100%
rename from crypto.py
rename to src/crypto.py
diff --git a/database.py b/src/database.py
similarity index 100%
rename from database.py
rename to src/database.py
diff --git a/process.py b/src/process.py
similarity index 100%
rename from process.py
rename to src/process.py
diff --git a/src/yoshi_christian_cleberg.egg-info/PKG-INFO b/src/yoshi_christian_cleberg.egg-info/PKG-INFO
new file mode 100644
index 0000000..233fcce
--- /dev/null
+++ b/src/yoshi_christian_cleberg.egg-info/PKG-INFO
@@ -0,0 +1,198 @@
+Metadata-Version: 2.1
+Name: yoshi_christian-cleberg
+Version: 0.1.0
+Summary: A password manager for the command line.
+Author-email: Christian Cleberg <hello@cleberg.net>
+Project-URL: Homepage, https://github.com/ccleberg/yoshi
+Project-URL: Issues, https://github.com/ccleberg/yoshi/issues
+Classifier: Programming Language :: Python :: 3
+Classifier: License :: OSI Approved :: GPL-3.0
+Classifier: Operating System :: OS Independent
+Requires-Python: >=3.8
+Description-Content-Type: text/markdown
+License-File: LICENSE
+
+# Yoshi: A Password Manager
+
+A simple command-line pass manager, writtin in Python + SQLite3. This tool
+allows you to manage accounts and generate random passwords containing ASCII
+letters, numbers, and punctuation (min. 8 characters) or XKCD-like passphrases
+(min. 3 words).
+
+Please note that the script is written in Python 3 - you may need to run the
+script with the `python3` command instead of `python` if your system uses a
+default of Python 2. See the Installation & Usage sections below for more
+information.
+
+# Table of Contents
+
+-   [Installation](#installation)
+-   [Usage](#usage)
+    -   [Arguments](#arguments)
+-   [Contributing](#contributing)
+
+# Installation
+
+[(Back to top)](#table-of-contents)
+
+To run the script locally, run the following commands:
+
+```bash
+git clone REPO_URL
+```
+
+```bash
+cd yoshi
+```
+
+```bash
+pip3 install -r requirements.txt
+```
+
+```bash
+python3 main.py --help
+```
+
+# Usage
+
+[(Back to top)](#table-of-contents)
+
+All commands can be passed to the program with the following template:  
+`python3 main.py <COMMAND> <FLAG> <PARAMETER>`
+
+![Yoshi CLI Help](./examples/yoshi-help.png)
+
+## Arguments
+
+### Summary
+
+<table>
+  <thead>
+    <tr>
+      <td><b>Argument</b></td>
+      <td><b>Shortcut</b></td>
+      <td><b>Explanation</b></td>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>help</td>
+      <td>h</td>
+      <td>Print the welcome message</td>
+    </tr>
+    <tr>
+      <td>new</td>
+      <td>n</td>
+      <td>Create a new account</td>
+    </tr>
+    <tr>
+      <td>list</td>
+      <td>l</td>
+      <td>List all saved accounts</td>
+    </tr>
+    <tr>
+      <td>edit</td>
+      <td>e</td>
+      <td>Edit a saved account (see below for required flags)</td>
+    </tr>
+    <tr>
+      <td>delete</td>
+      <td>d</td>
+      <td>Delete a saved account (see below for required flags)</td>
+    </tr>
+    <tr>
+      <td>purge</td>
+      <td>N/A</td>
+      <td>Purge all accounts and delete the vault</td>
+    </tr>
+    <tr>
+      <td>encrypt</td>
+      <td>N/A</td>
+      <td>Encrypt the vault database (see below for required flags)</td>
+    </tr>
+    <tr>
+      <td>decrypt</td>
+      <td>N/A</td>
+      <td>Decrypt the vault database (see below for required flags)</td>
+    </tr>
+  </tbody>
+</table>
+
+#### Flags
+
+Flags for the `edit`, `e` command - both are required:
+
+<table>
+  <thead>
+    <tr>
+      <td><b>Argument</b></td>
+      <td><b>Shortcut</b></td>
+      <td><b>Explanation</b></td>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>--uuid</td>
+      <td>-u</td>
+      <td>Provide the account UUID to edit</td>
+    </tr>
+    <tr>
+      <td>--field</td>
+      <td>-f</td>
+      <td>Provide the account field to edit</td>
+    </tr>
+  </tbody>
+</table>
+
+Flags for the `delete`, `d` command - this flag is required:
+
+<table>
+  <thead>
+    <tr>
+      <td><b>Argument</b></td>
+      <td><b>Shortcut</b></td>
+      <td><b>Explanation</b></td>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>--uuid</td>
+      <td>-u</td>
+      <td>Provide the account UUID to delete</td>
+    </tr>
+  </tbody>
+</table>
+
+Flags for the `encrypt` or `decrypt` command - you must provide at least one
+when encrypting, none are required when decrypting:
+
+<table>
+  <thead>
+    <tr>
+      <td><b>Argument</b></td>
+      <td><b>Shortcut</b></td>
+      <td><b>Explanation</b></td>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>--generate</td>
+      <td>-g</td>
+      <td>When encrypting, generate a new key</td>
+    </tr>
+    <tr>
+      <td>--keyfile</td>
+      <td>-k</td>
+      <td>When encrypting or decrypting, provide the path to a saved key file</td>
+    </tr>
+  </tbody>
+</table>
+
+![Yoshi CLI New Account](./examples/yoshi-example.png)
+
+# Contributing
+
+[(Back to top)](#table-of-contents)
+
+Any and all contributions are welcome. Feel free to fork the project, add
+features, and submit a pull request.
diff --git a/src/yoshi_christian_cleberg.egg-info/SOURCES.txt b/src/yoshi_christian_cleberg.egg-info/SOURCES.txt
new file mode 100644
index 0000000..9e4bbfe
--- /dev/null
+++ b/src/yoshi_christian_cleberg.egg-info/SOURCES.txt
@@ -0,0 +1,11 @@
+LICENSE
+README.md
+pyproject.toml
+src/account.py
+src/crypto.py
+src/database.py
+src/process.py
+src/yoshi_christian_cleberg.egg-info/PKG-INFO
+src/yoshi_christian_cleberg.egg-info/SOURCES.txt
+src/yoshi_christian_cleberg.egg-info/dependency_links.txt
+src/yoshi_christian_cleberg.egg-info/top_level.txt
\ No newline at end of file
diff --git a/src/yoshi_christian_cleberg.egg-info/dependency_links.txt b/src/yoshi_christian_cleberg.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/src/yoshi_christian_cleberg.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/src/yoshi_christian_cleberg.egg-info/top_level.txt b/src/yoshi_christian_cleberg.egg-info/top_level.txt
new file mode 100644
index 0000000..e855a8f
--- /dev/null
+++ b/src/yoshi_christian_cleberg.egg-info/top_level.txt
@@ -0,0 +1,4 @@
+account
+crypto
+database
+process
diff --git a/src/yoshi_cli.egg-info/PKG-INFO b/src/yoshi_cli.egg-info/PKG-INFO
new file mode 100644
index 0000000..e545db5
--- /dev/null
+++ b/src/yoshi_cli.egg-info/PKG-INFO
@@ -0,0 +1,198 @@
+Metadata-Version: 2.1
+Name: yoshi-cli
+Version: 0.1.0
+Summary: A password manager for the command line.
+Author-email: Christian Cleberg <hello@cleberg.net>
+Project-URL: Homepage, https://github.com/ccleberg/yoshi
+Project-URL: Issues, https://github.com/ccleberg/yoshi/issues
+Classifier: Programming Language :: Python :: 3
+Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
+Classifier: Operating System :: OS Independent
+Requires-Python: >=3.8
+Description-Content-Type: text/markdown
+License-File: LICENSE
+
+# Yoshi: A Password Manager
+
+A simple command-line pass manager, writtin in Python + SQLite3. This tool
+allows you to manage accounts and generate random passwords containing ASCII
+letters, numbers, and punctuation (min. 8 characters) or XKCD-like passphrases
+(min. 3 words).
+
+Please note that the script is written in Python 3 - you may need to run the
+script with the `python3` command instead of `python` if your system uses a
+default of Python 2. See the Installation & Usage sections below for more
+information.
+
+# Table of Contents
+
+-   [Installation](#installation)
+-   [Usage](#usage)
+    -   [Arguments](#arguments)
+-   [Contributing](#contributing)
+
+# Installation
+
+[(Back to top)](#table-of-contents)
+
+To run the script locally, run the following commands:
+
+```bash
+git clone REPO_URL
+```
+
+```bash
+cd yoshi
+```
+
+```bash
+pip3 install -r requirements.txt
+```
+
+```bash
+python3 main.py --help
+```
+
+# Usage
+
+[(Back to top)](#table-of-contents)
+
+All commands can be passed to the program with the following template:  
+`python3 main.py <COMMAND> <FLAG> <PARAMETER>`
+
+![Yoshi CLI Help](./examples/yoshi-help.png)
+
+## Arguments
+
+### Summary
+
+<table>
+  <thead>
+    <tr>
+      <td><b>Argument</b></td>
+      <td><b>Shortcut</b></td>
+      <td><b>Explanation</b></td>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>help</td>
+      <td>h</td>
+      <td>Print the welcome message</td>
+    </tr>
+    <tr>
+      <td>new</td>
+      <td>n</td>
+      <td>Create a new account</td>
+    </tr>
+    <tr>
+      <td>list</td>
+      <td>l</td>
+      <td>List all saved accounts</td>
+    </tr>
+    <tr>
+      <td>edit</td>
+      <td>e</td>
+      <td>Edit a saved account (see below for required flags)</td>
+    </tr>
+    <tr>
+      <td>delete</td>
+      <td>d</td>
+      <td>Delete a saved account (see below for required flags)</td>
+    </tr>
+    <tr>
+      <td>purge</td>
+      <td>N/A</td>
+      <td>Purge all accounts and delete the vault</td>
+    </tr>
+    <tr>
+      <td>encrypt</td>
+      <td>N/A</td>
+      <td>Encrypt the vault database (see below for required flags)</td>
+    </tr>
+    <tr>
+      <td>decrypt</td>
+      <td>N/A</td>
+      <td>Decrypt the vault database (see below for required flags)</td>
+    </tr>
+  </tbody>
+</table>
+
+#### Flags
+
+Flags for the `edit`, `e` command - both are required:
+
+<table>
+  <thead>
+    <tr>
+      <td><b>Argument</b></td>
+      <td><b>Shortcut</b></td>
+      <td><b>Explanation</b></td>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>--uuid</td>
+      <td>-u</td>
+      <td>Provide the account UUID to edit</td>
+    </tr>
+    <tr>
+      <td>--field</td>
+      <td>-f</td>
+      <td>Provide the account field to edit</td>
+    </tr>
+  </tbody>
+</table>
+
+Flags for the `delete`, `d` command - this flag is required:
+
+<table>
+  <thead>
+    <tr>
+      <td><b>Argument</b></td>
+      <td><b>Shortcut</b></td>
+      <td><b>Explanation</b></td>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>--uuid</td>
+      <td>-u</td>
+      <td>Provide the account UUID to delete</td>
+    </tr>
+  </tbody>
+</table>
+
+Flags for the `encrypt` or `decrypt` command - you must provide at least one
+when encrypting, none are required when decrypting:
+
+<table>
+  <thead>
+    <tr>
+      <td><b>Argument</b></td>
+      <td><b>Shortcut</b></td>
+      <td><b>Explanation</b></td>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>--generate</td>
+      <td>-g</td>
+      <td>When encrypting, generate a new key</td>
+    </tr>
+    <tr>
+      <td>--keyfile</td>
+      <td>-k</td>
+      <td>When encrypting or decrypting, provide the path to a saved key file</td>
+    </tr>
+  </tbody>
+</table>
+
+![Yoshi CLI New Account](./examples/yoshi-example.png)
+
+# Contributing
+
+[(Back to top)](#table-of-contents)
+
+Any and all contributions are welcome. Feel free to fork the project, add
+features, and submit a pull request.
diff --git a/src/yoshi_cli.egg-info/SOURCES.txt b/src/yoshi_cli.egg-info/SOURCES.txt
new file mode 100644
index 0000000..c8ca832
--- /dev/null
+++ b/src/yoshi_cli.egg-info/SOURCES.txt
@@ -0,0 +1,11 @@
+LICENSE
+README.md
+pyproject.toml
+src/account.py
+src/crypto.py
+src/database.py
+src/process.py
+src/yoshi_cli.egg-info/PKG-INFO
+src/yoshi_cli.egg-info/SOURCES.txt
+src/yoshi_cli.egg-info/dependency_links.txt
+src/yoshi_cli.egg-info/top_level.txt
\ No newline at end of file
diff --git a/src/yoshi_cli.egg-info/dependency_links.txt b/src/yoshi_cli.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/src/yoshi_cli.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/src/yoshi_cli.egg-info/top_level.txt b/src/yoshi_cli.egg-info/top_level.txt
new file mode 100644
index 0000000..e855a8f
--- /dev/null
+++ b/src/yoshi_cli.egg-info/top_level.txt
@@ -0,0 +1,4 @@
+account
+crypto
+database
+process
diff --git a/src/yoshi_cli_christian_cleberg.egg-info/PKG-INFO b/src/yoshi_cli_christian_cleberg.egg-info/PKG-INFO
new file mode 100644
index 0000000..9081232
--- /dev/null
+++ b/src/yoshi_cli_christian_cleberg.egg-info/PKG-INFO
@@ -0,0 +1,198 @@
+Metadata-Version: 2.1
+Name: yoshi-cli_christian-cleberg
+Version: 0.1.0
+Summary: A password manager for the command line.
+Author-email: Christian Cleberg <hello@cleberg.net>
+Project-URL: Homepage, https://github.com/ccleberg/yoshi
+Project-URL: Issues, https://github.com/ccleberg/yoshi/issues
+Classifier: Programming Language :: Python :: 3
+Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
+Classifier: Operating System :: OS Independent
+Requires-Python: >=3.8
+Description-Content-Type: text/markdown
+License-File: LICENSE
+
+# Yoshi: A Password Manager
+
+A simple command-line pass manager, writtin in Python + SQLite3. This tool
+allows you to manage accounts and generate random passwords containing ASCII
+letters, numbers, and punctuation (min. 8 characters) or XKCD-like passphrases
+(min. 3 words).
+
+Please note that the script is written in Python 3 - you may need to run the
+script with the `python3` command instead of `python` if your system uses a
+default of Python 2. See the Installation & Usage sections below for more
+information.
+
+# Table of Contents
+
+-   [Installation](#installation)
+-   [Usage](#usage)
+    -   [Arguments](#arguments)
+-   [Contributing](#contributing)
+
+# Installation
+
+[(Back to top)](#table-of-contents)
+
+To run the script locally, run the following commands:
+
+```bash
+git clone REPO_URL
+```
+
+```bash
+cd yoshi
+```
+
+```bash
+pip3 install -r requirements.txt
+```
+
+```bash
+python3 main.py --help
+```
+
+# Usage
+
+[(Back to top)](#table-of-contents)
+
+All commands can be passed to the program with the following template:  
+`python3 main.py <COMMAND> <FLAG> <PARAMETER>`
+
+![Yoshi CLI Help](./examples/yoshi-help.png)
+
+## Arguments
+
+### Summary
+
+<table>
+  <thead>
+    <tr>
+      <td><b>Argument</b></td>
+      <td><b>Shortcut</b></td>
+      <td><b>Explanation</b></td>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>help</td>
+      <td>h</td>
+      <td>Print the welcome message</td>
+    </tr>
+    <tr>
+      <td>new</td>
+      <td>n</td>
+      <td>Create a new account</td>
+    </tr>
+    <tr>
+      <td>list</td>
+      <td>l</td>
+      <td>List all saved accounts</td>
+    </tr>
+    <tr>
+      <td>edit</td>
+      <td>e</td>
+      <td>Edit a saved account (see below for required flags)</td>
+    </tr>
+    <tr>
+      <td>delete</td>
+      <td>d</td>
+      <td>Delete a saved account (see below for required flags)</td>
+    </tr>
+    <tr>
+      <td>purge</td>
+      <td>N/A</td>
+      <td>Purge all accounts and delete the vault</td>
+    </tr>
+    <tr>
+      <td>encrypt</td>
+      <td>N/A</td>
+      <td>Encrypt the vault database (see below for required flags)</td>
+    </tr>
+    <tr>
+      <td>decrypt</td>
+      <td>N/A</td>
+      <td>Decrypt the vault database (see below for required flags)</td>
+    </tr>
+  </tbody>
+</table>
+
+#### Flags
+
+Flags for the `edit`, `e` command - both are required:
+
+<table>
+  <thead>
+    <tr>
+      <td><b>Argument</b></td>
+      <td><b>Shortcut</b></td>
+      <td><b>Explanation</b></td>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>--uuid</td>
+      <td>-u</td>
+      <td>Provide the account UUID to edit</td>
+    </tr>
+    <tr>
+      <td>--field</td>
+      <td>-f</td>
+      <td>Provide the account field to edit</td>
+    </tr>
+  </tbody>
+</table>
+
+Flags for the `delete`, `d` command - this flag is required:
+
+<table>
+  <thead>
+    <tr>
+      <td><b>Argument</b></td>
+      <td><b>Shortcut</b></td>
+      <td><b>Explanation</b></td>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>--uuid</td>
+      <td>-u</td>
+      <td>Provide the account UUID to delete</td>
+    </tr>
+  </tbody>
+</table>
+
+Flags for the `encrypt` or `decrypt` command - you must provide at least one
+when encrypting, none are required when decrypting:
+
+<table>
+  <thead>
+    <tr>
+      <td><b>Argument</b></td>
+      <td><b>Shortcut</b></td>
+      <td><b>Explanation</b></td>
+    </tr>
+  </thead>
+  <tbody>
+    <tr>
+      <td>--generate</td>
+      <td>-g</td>
+      <td>When encrypting, generate a new key</td>
+    </tr>
+    <tr>
+      <td>--keyfile</td>
+      <td>-k</td>
+      <td>When encrypting or decrypting, provide the path to a saved key file</td>
+    </tr>
+  </tbody>
+</table>
+
+![Yoshi CLI New Account](./examples/yoshi-example.png)
+
+# Contributing
+
+[(Back to top)](#table-of-contents)
+
+Any and all contributions are welcome. Feel free to fork the project, add
+features, and submit a pull request.
diff --git a/src/yoshi_cli_christian_cleberg.egg-info/SOURCES.txt b/src/yoshi_cli_christian_cleberg.egg-info/SOURCES.txt
new file mode 100644
index 0000000..a482d76
--- /dev/null
+++ b/src/yoshi_cli_christian_cleberg.egg-info/SOURCES.txt
@@ -0,0 +1,11 @@
+LICENSE
+README.md
+pyproject.toml
+src/account.py
+src/crypto.py
+src/database.py
+src/process.py
+src/yoshi_cli_christian_cleberg.egg-info/PKG-INFO
+src/yoshi_cli_christian_cleberg.egg-info/SOURCES.txt
+src/yoshi_cli_christian_cleberg.egg-info/dependency_links.txt
+src/yoshi_cli_christian_cleberg.egg-info/top_level.txt
\ No newline at end of file
diff --git a/src/yoshi_cli_christian_cleberg.egg-info/dependency_links.txt b/src/yoshi_cli_christian_cleberg.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/src/yoshi_cli_christian_cleberg.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/src/yoshi_cli_christian_cleberg.egg-info/top_level.txt b/src/yoshi_cli_christian_cleberg.egg-info/top_level.txt
new file mode 100644
index 0000000..e855a8f
--- /dev/null
+++ b/src/yoshi_cli_christian_cleberg.egg-info/top_level.txt
@@ -0,0 +1,4 @@
+account
+crypto
+database
+process