Page cover

Software Engineering and Design

Software Engineering and Design

Updating Zencrypt Software Engineering and Design:

  • Add a solid UI/UX for a GUI (for example, in Python using Tkinter or PyQt)

  • Migrate zencrypt CLI from a single-file CLI script into a modular project structure

  • Implement industry best practices ( For example using a config file approach, logging, environment variables for secrets)

  • Expand to a web-service architecture (Flask/Django) so others can encrypt/decrypt remotely

This Flowchart helps to show the modular project structure, GUI or web-service interface, the config file usage, logging, environment-variable handling, etc along with all of the changes or additions that I am planning for a final release of Zencrypt. With that in mind, I will mention that these adjustments wont change the core foundations of the Zencrypt v4 functions and their existing flowcharts for the logic used behind the encryption and decryption- More or less this will be used as a foundation to the final v5 of Zencrypt which will incorporate a new architectural approach that will be integrated around Zencrypt’s core functionality and the bigger picture behind the cipher and its use case.

Flowchart:

            ┌──────────────────────────────┐
            │      START (Zencrypt v5)     │
            └──────────────────────────────┘


        ┌─────────────────────────────────────┐
        │  1) Read Config & Env. Variables    │
        │     - Load config file (zencrypt.ini│
        │       or .env)                      │
        │     - Retrieve secrets / settings   │
        │       from environment variables    │
        └─────────────────────────────────────┘


┌───────────────────────────────────────────────┐
│ 2) Initialize Logging & Modular Architecture  │
│    - Configure log handlers (for example,     │
│      file, console)                           │
│    - Import modules (ui.py, cli.py, utils.py, │
│      crypto_ops.py, config.py, etc.)          │
│    - Validate any required environment vars   │
└───────────────────────────────────────────────┘



┌────────────────────────────────────────────────────────────────┐
│ 3) Check Interface Mode (GUI / Web / CLI)                      │
│    - If "GUI" selected → proceed with Tkinter/PyQt             │
│    - If "Web" selected → run Flask/Django server (REST / etc.) │
│    - Else → continue in CLI mode (legacy Zencrypt approach)    │
└────────────────────────────────────────────────────────────────┘

    ┌────────────────────┴────────────────────┐
    │                                         │
    ▼                                         ▼
┌─────────────────────────────────────────┐  ┌─────────────────────────────────────────┐
│4A) LAUNCH GUI (Tkinter/PyQt)            │  │4B) LAUNCH WEB SERVICE (Flask/Django)    │
│   - Build main window, forms, buttons   │  │   - Start server at configured port     │
│   - Connect event handlers →            │  │   - Expose endpoints for encryption     │
│     (encrypt, decrypt, file ops, etc.)  │  │     / decryption / key management       │
│   - Integrate logging                   │  │   - Integrate logging                   │
└─────────────────────────────────────────┘  └─────────────────────────────────────────┘
    │                                         │
    │                                         │
    │                                         │
    │                                         │
    │                                         │
    ▼                                         ▼
┌───────────────────────────────────────┐    ┌───────────────────────────────────────────┐
│ 5A) User Interacts With GUI           │    │ 5B) Users Interact With Web Endpoints     │
│     - Inputs text/files, chooses      │    │     - Submit encryption / decryption      │
│       encryption mode, etc.           │    │       requests                            │
│     - Calls underlying Zencrypt       │    │     - API returns responses or files      │
│       modules (crypto_ops.py)         │    │     - Logging tracks usage / errors       │
└───────────────────────────────────────┘    └───────────────────────────────────────────┘
    │                                          │
    └──────────────────────────────────────────┤


                        ┌──────────────────────────────────────┐
                        │     6) CLI Mode (If Selected)        │
                        │       - Present updated main menu    │
                        │         (hashing, encrypt text,      │
                        │         file ops, PGP, etc.)         │
                        │       - Integrate new logging        │
                        │         & config usage               │
                        │       - Use same crypto_ops.py       │
                        │         functions as GUI/Web modes   │
                        └──────────────────────────────────────┘


            ┌─────────────────────────────────────────────────────┐
            │ 7) Finalize Operations & Exit/Shutdown (Any Mode)   │
            │   - Close opened files, sockets, windows            │
            │   - Clean up environment variables in memory        │
            │   - Save logs if necessary                          │
            └─────────────────────────────────────────────────────┘


                        ┌──────────────────────────┐
                        │           END            │
                        └──────────────────────────┘

Last updated