A modern, role-based Document Management System
🗂️ Organized • 🔐 Granular Permissions • 🌐 Open Source
- Hierarchical Document Organization – Organize documents using folders and registers with numeric prefixes
- Role-Based Access Control – Fine-grained read/write permissions per folder
- Full-Text Search – Quickly find documents by content, title, or document number
- Document Processing – Automatic PDF conversion and metadata extraction
- OIDC Authentication – Integrate with your existing identity provider
- Inbox Workflow – Upload documents and process them into the archive
| Dashboard | ![]() |
|---|---|
| Inbox | ![]() |
| File Cabinet Overview | ![]() |
| File Cabinet Detail | ![]() |
| Document Search | ![]() |
Each document in the system is identified by a unique document number (also called ASN - Archive Serial Number). Document numbers follow a hierarchical structure:
[PREFIX] [FOLDER][REGISTER] [SEQUENCE]
Example: WBD 51 001
│ │ │ └── Sequence number (unique within the register)
│ │ └────── Register number (category within folder)
│ └──────── Folder number (main category)
└──────────── Organization prefix
The document numbering system uses a two-level hierarchy:
- Folders (first digit) – Major categories that group related document types
- Registers (second digit) – Subcategories within each folder for finer organization
Reserved folder digit: The folder digit
9is reserved for extensions that allow for additional hierarchy levels. For example,9X,99X,999X, etc. can be used to extend the numbering scheme when more granularity is needed.
For example:
| Document Number | Folder | Register | Description |
|---|---|---|---|
| WBD 51 001 | 5 | 1 | Decisions, bylaws, statutes |
| WBD 52 001 | 5 | 2 | Meeting protocols |
| WBD 61 001 | 6 | 1 | Invoices |
In the examples above,
001represents the sequence number – each document gets the next available number in its register.
Document numbers can be generated in two ways, indicated by suffixes in the register names:
-
(A)– Auto-generated: These numbers are typically generated through the linked ASN generator tool (accessible from the Dashboard). The system assigns the next available sequence number automatically. -
(M)– Manual/Model-based: These follow a custom numbering model where the sequence number has specific meaning (e.g., invoice numbers, membership IDs).
Note: The
(A)and(M)suffixes are conventions to help users understand how numbers are assigned – they are not enforced by the system.
The folder and register structure is defined centrally in the system
configuration (config/config.yml). Changes to this structure typically require
administrative access and are managed by the organization's administrative body.
Each folder can have different:
- Read permissions – Roles that can view documents
- Write permissions – Roles that can create/modify documents
This DMS is designed to work seamlessly with deno-asn-generator, a companion tool for generating document numbers.
The ASN generator provides:
- A web interface for generating new document numbers
- Automatic sequence number management
- Integration with the same folder/register structure
Configure the generator URL in your config.yml:
asnGeneratorUrl: https://your-asn-generator.example.com/When configured, users will see a link on the Dashboard to generate new document numbers before uploading documents.
Prerequisites:
dockerdocker-composev2.22+
Copy the example.env file to .env and adjust the values as needed.
cp example.env .envYou can also find an overview of the same configuration parameters in the configuration documentation.
Run:
docker compose up --watch --build
# or
./dev.shflowchart LR
subgraph "Client"
A[Web Browser]
end
subgraph "Server"
B[Web Server]
C[Application]
FS[/File Storage/]
D[MongoDB Database]
E[Gotenberg Server]
end
A --> B
B --> C
C --> D
C --> FS
C --> E
subgraph "Auth Server"
F[OIDC Provider]
end
A --> F
C --> F
Whereas,
- the
Web Browseris the application the user interacts with. - the
Web Serverserves the application to the user. - the
Applicationis the main application written in Hono / TypeScript / Deno. - the
MongoDB Databaseis a document database based on MongoDB. - the
Gotenberg Servercan be used to convert documents to PDF. - the
OIDC Provideris an auth server providing an OpenID Connect interface. - the
File Storageis a storage for files.
The application works as follows:
- The user interacts with the
Web Browser. - The
Web Serverserves the application to the user. - The
Applicationstores data in theMongoDB Databaseand files in theFile Storage. - The
Applicationcan convert documents to PDF using theGotenberg Server. - The
Applicationuses theGotenberg Serverto extract metadata from documents. - The
Applicationauthenticates users using theOIDC Provider.
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ by WüSpace e.V.




