These two applications are for:
- Sojourner--- managing versioned document templates and generating document files from those templates.
- Simone--- managing document storage (locally or wrapped around S3), and vending read links to retrieve those documents based on developer/user-defined authorization rules.
The use case that prompted us here at The Climate Corporation to build this solution grew out of our growth as a company and our service-oriented architecture. Across the platform, we had the need to both generate and directly upload documents. And many different services needed to do one or both of those things.
Sojourner was born as a template management and PDF-generation-from-templates service. Templates are versioned, and permission for whether each version can be used to generate documents in the production environment is tracked. A record is kept of each generation request, but the the service is designed to be write-only for the generated PDFs, which are sent to the sister application, Simone. Document templates require the declaration of a schema for the information required to populate the template; this allows each template to be its own documentation for how to use it and also allows the service to reject malformed or infomplete generation requests with informative errors.
Simone was born as a document aggregator and gatekeeper. Services cycle in and out of life, and it should not be neccesary to know each and every service that could possibly have documents for a user in order to retrieve "all" of a user's documents. Furthermore, wrapping S3 (or whatever back end you choose) for document storage allows granular authorization rules on the level of your user (or role), a central references for those rules (whether that be a central authorization service or a set of rules within Simone), and centralized logging of each request for document access.
When it came time to decide what software to use to meet the needs of our growing insurance platform, we didn't find anything that met all of those needs. We had a couple of previous iterations of document generation services and decided to decouple document generation from document access, so we built two services. #independentlyscalable
You can use one or both applications. Clone the repo, and follow the instructions in the Sojourner and Simone README's to get started.
Copyright (C) 2015 The Climate Corporation. Distributed under the Apache License, Version 2.0. You may not use this library except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
See the NOTICE file distributed with this work for additional information regarding copyright ownership. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.