Russian version available: README_RU.md
Desktop client application for searching, storing, and managing enterprise documentation. Built with Python and PyQt5, utilizing a robust MVC architecture and communicating with a remote REST API.
Secure login screen with auto-login capability. Supports Guest mode for read-only access.
Displays the hierarchy of Departments and Categories. Features a document table with infinite scrolling and search.
Allows authorized users to create, edit, and manage document pages. Support for adding and working with electronic document files. Supports drag-and-drop reordering.
This update focuses on personalization and user experience.
- Personal Info: You can now edit your user information (First Name, Last Name, Department) directly within the application.
- Access: The profile dialog is accessible from the main application menu.
- Personalization: The application now remembers your preferences on a per-user basis.
- Theme: Your selected theme (Light/Dark) is saved between sessions.
- Filters: Your most recently used search filters are also saved, speeding up repeated searches.
- Added a dedicated "What's New" changelog window that opens after updates and shows version changes.
- Minor UI improvements and bug fixes for a more stable experience.
- Improved session stability after idle time: document lists and search results no longer disappear if a reload or search request fails.
- Main window startup loading was moved off the UI thread to reduce freezes during the initial data fetch.
- Authentication flows now fail safely if the system keyring or session storage is unavailable.
- API client now correctly handles empty successful responses such as
204 No Content. - Logging out now explicitly disables auto-login for the current profile.
Documents Exp is designed to streamline the management of technical documentation within an organization. It provides a structured view of documents categorized by departments and allows for efficient searching and editing.
The application ensures data consistency by interacting with a central REST API and supports different access modes for guests and authorized personnel.
- Hierarchy: Organized by Departments and Categories.
- Navigation: Sidebar navigation with badge counters.
- Search: Real-time search by document code or name with debounce.
- Sorting: "Natural Sort" order for intuitive code listing.
- Pagination: Infinite scrolling for large datasets.
- Full access to Create, Edit, and Delete documents.
- Manage structure (Departments/Categories).
- Import/Export functionality.
- Read-only access.
- Search and view documents.
- No editing privileges.
- Page Management: Add, Edit, Duplicate, and Delete pages.
- Drag-and-Drop: Reorder pages intuitively.
- Word Integration:
- Import: Parse pages directly from
.docxtables. - Export: Generate formatted
.docxfiles.
- Import: Parse pages directly from
- Printing: Built-in printing support.
- JWT Authentication: Secure Access/Refresh token flow.
- Auto-Login: Secure session persistence using system Keyring.
- Account Management: Sign up, Email verification, Password reset.
- Modern Interface: Clean PyQt5 design.
- Theming: Dynamic Light and Dark themes (Jinja2 generated).
- Responsiveness: Adaptive layouts.
- Feedback: Toast notifications for user actions.
β
Engineering Departments: For storing technical specifications and drawings.
β
Enterprises: To maintain a centralized repository of documentation.
β
Managers: To organize workflow and document structure.
β
MVC Architecture: Strict separation of concerns (Model-View-Controller).
β
PyQt5 Mastery: Custom widgets, signals/slots, event filtering, animations.
β
Asynchronous Programming: Non-blocking UI using QThread for API calls.
β
REST API Integration: Robust HTTP client with session handling and error management.
β
Security Best Practices: Safe token storage and validation.
β
Dynamic Theming: Using template engines (Jinja2) for QSS generation.
The project follows the MVC (Model-View-Controller) pattern to ensure separation of concerns and maintainability.
ββββββββ ββββββββββββββ βββββββββ
β View β <-- β Controller β --> β Model β
ββββββββ ββββββββββββββ βββββββββ
UI Logic Data/API
- View: Handles UI rendering and user events (PyQt5).
- Controller: Orchestrates logic, handles signals, and communicates between View and Model.
- Model: Manages data, API communication, and business logic.
- Language: Python 3.14
- GUI Framework: PyQt5
- API Communication: Requests (with Session handling)
- Security: Keyring (for token storage)
- Templating: Jinja2 (for dynamic QSS generation)
- Document Handling: python-docx
-
Download the latest installer (
.exe) from the Releases page. -
Run the installer and follow the instructions.
-
Configure the application: Navigate to the installation directory (usually
%LOCALAPPDATA%\Programs\Documents Exp). Editconfig.yamlto set your API URL:base_url: "http://127.0.0.1:8000"
-
Run the application using the desktop shortcut or Start Menu entry.
To build the application into an executable file (EXE):
-
Install PyInstaller:
pip install pyinstaller
-
Run the build command using the provided spec file:
pyinstaller "Documents Exp.spec" -
The compiled application will be available in the
dist/Documents Expdirectory.
DOCUMENTS-EXP-DESKTOP/
β app.py
β config.yaml
β requirements.txt
β README.md
β
ββ api/
β ββ api_client.py
β
ββ core/
β ββ worker.py
β
ββ modules/
β ββ auth/
β ββ main/
β ββ document_editor/
β ββ departments_editings/
β ββ categories_editings/
β
ββ resources/
β ββ icons/
β ββ logo/
β ββ slides/
β ββ templates/
β
ββ ui/
β ββ custom_widgets/
β ββ styles/
β ββ ui_converted/
β
ββ utils/
ββ notifications/
ββ ...
β
JWT Authentication
β
Secure token storage (Keyring)
β
No plaintext password saving
β
Session management
β
Safe for internal distribution
β
Active
β
Under active development
β
New features planned
β
Regular updates
MIT License
Copyright (c) 2025 Pavel (PN Tech)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Pavel (PN Tech) Python desktop and web developer, UI/UX designer, electronics engineer



