<p>I think Craft would be a very suitable CMS for your project, based on you've laid out here. In fact, we're using Craft for two projects that are very similar. </p>

<ol>
<li><p><strong>Relating entries</strong> - Craft has a built-in field for entry relationships that works really well, however, for what you've described, you wouldn't really need it. Instead, Craft has multi-language support built in, so you could take advantage of that to use only one entry for multiple translations of a document.</p></li>
<li><p><strong>Ajax based filtering</strong> - While EE does have Low Search, Low Search isn't Ajax by nature. You still have to write some JS to hit a template that pulls Low Search results via Ajax. Craft can do the same thing, but it's built in rather than using a 3rd party plugin. The advantage of Low Search is that you can give weight to individual fields. Craft does not have that built-in to their search functionality, but in my experience, their search does a very good job.</p></li>
<li><p><strong>Document import/export</strong> - There is a 3rd party plugin that can convert a template to PDF. I'm not sure about Word. I've used the PDF plugin on two projects and it works really well. As far as importing, there is also an import plugin available. Content would need to be in a CSV format to be able to map to individual fields.</p></li>
<li><p><strong>Versioning</strong> - This is built in to Craft right out of the box. Craft makes it very easy to save multiple versions of an entry.</p></li>
</ol>

<p>Overall, as someone who has used Craft, EE and WordPress, I would recommend Craft for this project. Craft is a faster platform than EE, and much more secure than WP. As far as a learning curve goes, EE would be a higher curve because they have built their own templating engine, using syntax that is specific only to EE. Craft, on the other hand, uses Twig - an open source templating engine. You're more likely to find a developer that knows Twig well than someone who knows EE. Wordpress doesn't use a templating engine per se, but rather relies on raw PHP in the templates (from a security standpoint, that's not really a smart idea.)</p>

<p>If you need help with this project, I'd be happy to talk to you more about it. I'm the Engineering Director for Paramore Digital (<a href="http://paramoredigital.com" rel="nofollow">http://paramoredigital.com</a>), and as I mentioned, we're currently building two projects very similar to the one you're describing.</p>

CC BY-SA 3.0
2016-01-28T15:24:11.853Z
2016-01-28T15:24:11.853Z
Ben Wilkins
<p>If Craft is good enough for the <a href="https://craftcms.com/news/ap-vector-case-study" rel="noreferrer">AP</a>, it'll be good enough for everyone. ;)</p>
<p>I have little experience with EE, other than migrating away from it, but I have built enough in WordPress so here's my experience with that, as compared to Craft.</p>
<p>Don't be afraid of the &quot;coding&quot; part. Twig is pretty easy to learn and you'll learn to love it. Throwing together a plugin is harder but with Craft's decent MVC structure, it'll be much more easier to maintain—more so than trying to get WordPress to bend to your will. Creating plugins that look and feel native are much much easier, since you're just extending Craft's already built-in stuff.</p>
<h1>(1) Create relationships between docs</h1>
<p>I'd go so far as to say this is Craft's most <em>killer</em> feature. Try to do this in WordPress, for example, and you end up throwing plugins at the problem or convoluted sql queries to get it to do what you want. ACF is great but Craft's engine is fast, built-in, and it works within all elements.  After you've used Craft's relations, it's hard to use something else.</p>
<p>Especially if you store actual documents, like PDFs or Word docs, assets are WordPress' achilles heel. By default, WP stores files in year/month directory structure—which makes sense for blogging but not for any kind of database.  Assets in Craft are first-class citizens, right down to the fact you can even add custom fields to them.</p>
<p>So, let's say you want to store the document you've copied from a Word doc. Why not store the original document as well? You can do that easily and if you ever have to refer back to the &quot;archived original&quot; it's just a relationship away. You could store that relationship either on the asset itself (refer back to the document) or on the entry that refers to the asset. Either way, Craft knows about it and you can use the relationship.</p>
<h1>(2) Ajax based filtering system</h1>
<p>My experience with WP plugins is hit and miss. They either will work as advertised or they won't. But that's it. Stray from that beaten path and you might as well be writing it yourself. This <a href="https://www.reddit.com/comments/2z143x" rel="noreferrer">reddit thread</a> (contains NSFW language, obviously it's reddit) has some good reasons why rolling your own can more productive in cases like this. Craft is so easy to query and add parameters to; AJAX is really just another layer. You need a solid base and WP is not going to cut it here. Craft's UI is so intuitive, it's an easy choice, especially when you have end users to support.</p>
<h1>(3) Document import/export</h1>
<p>Hard to say what you want to do as far as import—there's a whole cottage industry built on trying to parse Word and PDFs to html etc.—but when it comes to exporting out the data, like you mentioned, since Craft stores in discrete fields, you can get at just the data you need. You'd want to use something like <a href="http://www.advancedcustomfields.com" rel="noreferrer">ACF</a> in WordPress but it's not as nice to query, especially when it comes to relationships. Having that built-in to Craft is a huge advantage.</p>
<h1>(4) Document Version System</h1>
<p>Craft has entry revisions built-in and it's one of the best implementations I've used. You can publish over current versions, have multiple drafts of the same document, name them, etc. To do this inside WordPress takes a fair amount of effort. The only thing WP has that Craft does not is a built-in diff viewer so you can see what changed. That's harder to do on a field-by-field basis. You'd also need to roll your own &quot;publish status&quot; in Craft though. WordPress has a slight leg up here but really, emphasis on <em>slight</em>.</p>
<h1>What else?</h1>
<p>Multiple languages built-in. Again, WP users love to throw plugins at this problem but it really needs to be built into a CMS' DNA. Craft Pro has this ready to go. Even if you don't buy the Pro version, Craft stores it in a future-friendly way, so when you are ready to go, you're not jumping through hoops. <a href="http://www.thenerdary.net/post/48123188844/interview-with-brandon-kelly-creator-of-craft" rel="noreferrer">Brandon Kelly mentions this</a> and he's absolutely right.</p>

CC BY-SA 3.0
2016-02-03T12:21:16.113Z
Thanks RitterKnight. It's a good reply. Essentially from what I'm seeing is that Craft is definitely not a Wordpress alternative. It's much more of a programmer's tool in a way, similar to Drupal in that accomplishing many things require knowledge of object oriented programming, nodes - but even Drupal and EE seem easier to use. I've found good Wordpress plugins, you just need to minimize and aim for the paid ones. Craft is extremely bare. It's one of the reasons I'm hesitant to take the leap. The document revisioning thing may be challenging but I see now what you mean.
Michael Jones
CC BY-SA 3.0
2016-02-03T15:48:38.717Z
Yes and no. Don't let the OOP scare you away. I don't know what your developer skill level is, but a lot of things I mention can be done right out of the box.  Craft/Twig combo is crazy powerful. If you think of Craft as simply an interface to a database, that's really what it is. You're just reaching for the field you want but with a lot of features built-in to facilitate content management. I feel Drupal (+ Concrete 5 for example) are more of a developer's tool with content management thrown in, where they can point and click away to get what they want. Drupal is powerful in a different way.
RitterKnight
CC BY-SA 3.0
2016-02-01T16:45:21.973Z
2016-02-01T16:51:51.427Z
2020-06-17T08:56:27.903Z
RitterKnight
<p>I'm trying to get a good appreciation for Craft's current capabilities and maturity. I've seen the demo and the docs but there is definitely a learning curve and what appears to be a need for much more coding - some of which I'll certainly need to hire a developer to assist regardless of platform. I see sparse videos, don't see many third party addons either, and docs suggest creating object oriented code just to set up field attributes. Thank you for any guidance in advance.  I'll share a little about my goals. </p>

<p>Project: I'm creating a document management system that is the same as you've probably seen in many school libraries (doc title, a long abstract that summarizes the full doc, excerpt and several taxonomies that classify docs into doc type (research paper, proposed law, etc.), country of origin, organization creating the doc, etc. It also has some doc fields, e.g. document language, date published, etc. Some primary objectives:</p>

<p>(1) <strong>Create relationships between docs.</strong> For example, if a document has been translated into 3 other languages I'd like to be able to recognize all those related documents in the doc and display the translated documents in a list on the front end for easy access so a user can view the doc in their preferred language.</p>

<p>(2) <strong>Ajax based filtering system.</strong> This has me leaning toward ExpressionEngine / Wordpress because of the availability of a very well thought out ajax-based filtering system, e.g. Low Search. Wordpress has numerous plugins, including WP-Types (although overall EE seems a better document management solution). Quickly done, no need to program and reinvent the wheel. A filtering menu can appear in a sidebar and a user can gradually filter through the results, e.g. perform a search for "widget", see results, then refine by documents published between a certain date, then refine by country, language, etc. And you can add/remove these fields very easily.</p>

<p>(3) <strong>Document import/export.</strong> For example, export the document to Word, PDF, etc. What makes Craft intriguing is that fields are entered in discrete, identifiable elements. For example, what if I wanted to export just document headers for a long document, it seems Craft can theoretically accomplish this easily because every header is a discrete field. It takes more work on the back end for data entry (but there is no perfect system.)</p>

<p>(4) <strong>Document Version System.</strong> Another issue would be to track revisions of the document as it moves along, e.g. first proposal. First revision. Second revision. Submission for approval. Document approved. -- Each of these documents are different versions of the same document. I've seen some extra data types which leads me to believe that the ability to generate a list of these documents as being related might be better suited with Craft - although I'm not familiar enough to be sure. Don't see EE/WP having a better solution, just manual fields that would require each document to be updated or a macro which inserts data each time a new revision is added.</p>

<p>Thank you all for any comments or thoughts. </p>

<plugins><craft-features>
Is Craft suitable for these specific document management goals?
# Is Craft suitable for these specific document management goals?

(Asked by: username_0 on 2016-01-28)

I'm trying to get a good appreciation for Craft's current capabilities and maturity. I've seen the demo and the docs but there is definitely a learning curve and what appears to be a need for much more coding - some of which I'll certainly need to hire a developer to assist regardless of platform. I see sparse videos, don't see many third party addons either, and docs suggest creating object oriented code just to set up field attributes. Thank you for any guidance in advance. I'll share a little about my goals.

Project: I'm creating a document management system that is the same as you've probably seen in many school libraries (doc title, a long abstract that summarizes the full doc, excerpt and several taxonomies that classify docs into doc type (research paper, proposed law, etc.), country of origin, organization creating the doc, etc. It also has some doc fields, e.g. document language, date published, etc. Some primary objectives:

(1) **Create relationships between docs.** For example, if a document has been translated into 3 other languages I'd like to be able to recognize all those related documents in the doc and display the translated documents in a list on the front end for easy access so a user can view the doc in their preferred language.

(2) **Ajax based filtering system.** This has me leaning toward ExpressionEngine / Wordpress because of the availability of a very well thought out ajax-based filtering system, e.g. Low Search. Wordpress has numerous plugins, including WP-Types (although overall EE seems a better document management solution). Quickly done, no need to program and reinvent the wheel. A filtering menu can appear in a sidebar and a user can gradually filter through the results, e.g. perform a search for "widget", see results, then refine by documents published between a certain date, then refine by country, language, etc. And you can add/remove these fields very easily.

(3) **Document import/export.** For example, export the document to Word, PDF, etc. What makes Craft intriguing is that fields are entered in discrete, identifiable elements. For example, what if I wanted to export just document headers for a long document, it seems Craft can theoretically accomplish this easily because every header is a discrete field. It takes more work on the back end for data entry (but there is no perfect system.)

(4) **Document Version System.** Another issue would be to track revisions of the document as it moves along, e.g. first proposal. First revision. Second revision. Submission for approval. Document approved. -- Each of these documents are different versions of the same document. I've seen some extra data types which leads me to believe that the ability to generate a list of these documents as being related might be better suited with Craft - although I'm not familiar enough to be sure. Don't see EE/WP having a better solution, just manual fields that would require each document to be updated or a macro which inserts data each time a new revision is added.

Thank you all for any comments or thoughts.

**Tags:** plugins, craft-features


---

## 2 answers

### Answer by username_2 on 2016-02-01. Score: 6 | Accepted answer

If Craft is good enough for the [AP](https://craftcms.com/news/ap-vector-case-study), it'll be good enough for everyone. ;)

I have little experience with EE, other than migrating away from it, but I have built enough in WordPress so here's my experience with that, as compared to Craft.

Don't be afraid of the "coding" part. Twig is pretty easy to learn and you'll learn to love it. Throwing together a plugin is harder but with Craft's decent MVC structure, it'll be much more easier to maintain—more so than trying to get WordPress to bend to your will. Creating plugins that look and feel native are much much easier, since you're just extending Craft's already built-in stuff.

# (1) Create relationships between docs

I'd go so far as to say this is Craft's most *killer* feature. Try to do this in WordPress, for example, and you end up throwing plugins at the problem or convoluted sql queries to get it to do what you want. ACF is great but Craft's engine is fast, built-in, and it works within all elements. After you've used Craft's relations, it's hard to use something else.

Especially if you store actual documents, like PDFs or Word docs, assets are WordPress' achilles heel. By default, WP stores files in year/month directory structure—which makes sense for blogging but not for any kind of database. Assets in Craft are first-class citizens, right down to the fact you can even add custom fields to them.

So, let's say you want to store the document you've copied from a Word doc. Why not store the original document as well? You can do that easily and if you ever have to refer back to the "archived original" it's just a relationship away. You could store that relationship either on the asset itself (refer back to the document) or on the entry that refers to the asset. Either way, Craft knows about it and you can use the relationship.

# (2) Ajax based filtering system

My experience with WP plugins is hit and miss. They either will work as advertised or they won't. But that's it. Stray from that beaten path and you might as well be writing it yourself. This [reddit thread](https://www.reddit.com/comments/2z143x) (contains NSFW language, obviously it's reddit) has some good reasons why rolling your own can more productive in cases like this. Craft is so easy to query and add parameters to; AJAX is really just another layer. You need a solid base and WP is not going to cut it here. Craft's UI is so intuitive, it's an easy choice, especially when you have end users to support.

# (3) Document import/export

Hard to say what you want to do as far as import—there's a whole cottage industry built on trying to parse Word and PDFs to html etc.—but when it comes to exporting out the data, like you mentioned, since Craft stores in discrete fields, you can get at just the data you need. You'd want to use something like [ACF](http://www.advancedcustomfields.com) in WordPress but it's not as nice to query, especially when it comes to relationships. Having that built-in to Craft is a huge advantage.

# (4) Document Version System

Craft has entry revisions built-in and it's one of the best implementations I've used. You can publish over current versions, have multiple drafts of the same document, name them, etc. To do this inside WordPress takes a fair amount of effort. The only thing WP has that Craft does not is a built-in diff viewer so you can see what changed. That's harder to do on a field-by-field basis. You'd also need to roll your own "publish status" in Craft though. WordPress has a slight leg up here but really, emphasis on *slight*.

# What else?

Multiple languages built-in. Again, WP users love to throw plugins at this problem but it really needs to be built into a CMS' DNA. Craft Pro has this ready to go. Even if you don't buy the Pro version, Craft stores it in a future-friendly way, so when you are ready to go, you're not jumping through hoops. [Brandon Kelly mentions this](http://www.thenerdary.net/post/48123188844/interview-with-brandon-kelly-creator-of-craft) and he's absolutely right.

> **Comments:**
> **username_0**: Thanks username_2. It's a good reply. Essentially from what I'm seeing is that Craft is definitely not a Wordpress alternative. It's much more of a programmer's tool in a way, similar to Drupal in that accomplishing many things require knowledge of object oriented programming, nodes - but even Drupal and EE seem easier to use. I've found good Wordpress plugins, you just need to minimize and aim for the paid ones. Craft is extremely bare. It's one of the reasons I'm hesitant to take the leap. The document revisioning thing may be challenging but I see now what you mean.  
> **username_2**: Yes and no. Don't let the OOP scare you away. I don't know what your developer skill level is, but a lot of things I mention can be done right out of the box.  Craft/Twig combo is crazy powerful. If you think of Craft as simply an interface to a database, that's really what it is. You're just reaching for the field you want but with a lot of features built-in to facilitate content management. I feel Drupal (+ Concrete 5 for example) are more of a developer's tool with content management thrown in, where they can point and click away to get what they want. Drupal is powerful in a different way.  

---

### Answer by username_1 on 2016-01-28. Score: 4

I think Craft would be a very suitable CMS for your project, based on you've laid out here. In fact, we're using Craft for two projects that are very similar.

1. **Relating entries** - Craft has a built-in field for entry relationships that works really well, however, for what you've described, you wouldn't really need it. Instead, Craft has multi-language support built in, so you could take advantage of that to use only one entry for multiple translations of a document.
2. **Ajax based filtering** - While EE does have Low Search, Low Search isn't Ajax by nature. You still have to write some JS to hit a template that pulls Low Search results via Ajax. Craft can do the same thing, but it's built in rather than using a 3rd party plugin. The advantage of Low Search is that you can give weight to individual fields. Craft does not have that built-in to their search functionality, but in my experience, their search does a very good job.
3. **Document import/export** - There is a 3rd party plugin that can convert a template to PDF. I'm not sure about Word. I've used the PDF plugin on two projects and it works really well. As far as importing, there is also an import plugin available. Content would need to be in a CSV format to be able to map to individual fields.
4. **Versioning** - This is built in to Craft right out of the box. Craft makes it very easy to save multiple versions of an entry.

Overall, as someone who has used Craft, EE and WordPress, I would recommend Craft for this project. Craft is a faster platform than EE, and much more secure than WP. As far as a learning curve goes, EE would be a higher curve because they have built their own templating engine, using syntax that is specific only to EE. Craft, on the other hand, uses Twig - an open source templating engine. You're more likely to find a developer that knows Twig well than someone who knows EE. Wordpress doesn't use a templating engine per se, but rather relies on raw PHP in the templates (from a security standpoint, that's not really a smart idea.)

If you need help with this project, I'd be happy to talk to you more about it. I'm the Engineering Director for Paramore Digital (<http://paramoredigital.com>), and as I mentioned, we're currently building two projects very similar to the one you're describing.


---

