Doc Govern
I have been thinking about this idea for years, and have tried a few different times to start this project just to get side tracked and procrastinate. In order to get my rear in gear, I am officially announcing that I plan to pursue this project as of July 15, 2019. Maybe saying that I will do this publicly will encourage me to get motivated and do something about it.
The idea is to create a simple program geared around the idea of physical document management and retention. There are many programs out there, a few I have personally used, but many have exorbitant costs associated with them. A future plan will be to integrate management of electronic documents as well, but I will cross that bridge a little bit later.
What should the program accomplish?
This has been the issue for me starting the project, because I get all these great ideas of what the program could do and when I start I find that I am not ready to program that portion of the idea. So instead, if I can break this down logically first in written form, I may be better able to scope each portion of the project.
To start, here is a list of what I am thinking today. I will edit this as I go along and think about these over the next days.
- Retention – ability to apply a retention policy or period to any item. Then run reports against the retention to determine what should be disposed or archived per retention policy.
- Barcode – a unique identifier for each item. Would love the ability to print a barcode. Probably a 3 of 9 barcode or even some form of QR code style. Need to determine what all should be available in a barcode and how they may be used.
- Metadata – Items that are tracked should have ability to add open metadata fields or tags.
- User roles – Should have various roles for users with increasing abilities, like subscriber, contributor, editor, manager
- Workgroups – ability to add users to a workgroup so they can see or not see specific items. Default is user cannot see any items until added to a workgroup. Not to be confused with user capabilities. The workgroup editing page will list all the workgroups, then admin will select the workgroup and choose “edit”, which will open a new page to list all users in workgroup and their role in the workgroup. All items must belong to a workgroup to be properly managed.
- In the realm of Legal, there is a concept of Client.Matter. One way to accomplish this and to try and keep this program versatile enough to work in other contexts, each combination of client.matter is considered a “Workgroup”. This way to check if user has access to a resource, we are only checking their capabilities in the workgroup context. If we need to give a user access to all workgroups at the client level, then that portion of the application will adjust all related workgroups. not sure how to organize relation, maybe we create a domain. This would cap the levels to only two. Or I could have a table of workgroups and each workgroup can have a parent. May be a better way to keep this flexible, but may introduce complexities in traversing the parent tree. Likely could work, as I have thought about same algorithm for the resources themselves so that a document could have a parent of folder and a folder could have a parent of redwell and a redwell could have a parent of box, etc.
What parts of this project could I start working on?
Start with creating workgroup function and a user function. This way can test working with users in various workgroups. Then ability to assign new item to a workgroup and see if properly can keep people not in the workgroup from viewing.
Or may be better just to create the ability to create the basic item, as will need a way to display and edit items.
update 8/25/19: been trying to get through the Coursera class for full stack development. One of the sections was about creating a mobile app. Had to pause that class so I could take the final section, which as of today has me working on creating a REST nodejs server. Even though I have little time for the class work, I am still trying to progress this project little by little.
update 7/21/19: started off with the idea of using WordPress to make this work. But after some initial research I have found that I have gotten further away from being up to date on my knowledge of WordPress and especially with Gutenberg. For the last few months I have been studying React and hopefully get to better understanding of connecting to DB and using React Native. This may be the better way to go for now. So back to studying the Coursera course I had been doing on React. So, yes, sounds like I need to pause again 🙁 but I may be able to great a simple mockup based upon what I know so far?