Answers.Body: <p>I think Ryan's answer hits on a lot of important benefits of Craft as a flexible platform, so I'll try and focus on why it's a good choice due to its architectural decisions.</p>
  
  <p>Craft is based on <a href="http://yiiframework.com" rel="nofollow noreferrer">Yii 2</a>, which is an application framework not unlike Rails or Django—although they naturally differ in their handling of MVC principles.</p>
  
  <p>I'd recommend at least doing some of your application design in a platform-agnostic way, and then evaluating frameworks based on those needs. Some may be fulfilled by Craft, some by Commerce and other first-party extensions, and some by third-party plugins. The final piece is figuring out how those interact (if they expose <a href="https://docs.craftcms.com/v3/extend/services.html" rel="nofollow noreferrer">Services</a> you can interact with, if they have a robust <a href="https://docs.craftcms.com/v3/testing/testing-craft/events.html" rel="nofollow noreferrer">Events</a> system, etc), and mapping out what you expect to build custom.</p>
  
  <p>In my experience, Craft has absolutely everything you need to develop complex applications, simply by virtue of being able to drop directly into Yii's capabilities. When you're using it in this way, you'll discover that Craft becomes increasingly helpful when implementing trivial things like Authentication/Permissions, Email, Tasks, or Asset management.</p>
  
  <p>Perhaps the greatest argument for using Craft in light of other application frameworks (granted many solve the same sort of CRUD problems) is that you get those content tools "for free." In other words, once you've got your application built out, you can really easily just stub out a marketing site, and have your client manage their entire web platform in one place.</p>
  
  <p>I can't speak highly enough about Craft being used in these situations. As you're auditing Craft, I'd recommend looking at a couple of first-party plugins to see how they've structured them—there's a bunch of useful information buried in there that hasn't really be synthesized into the documentation, but may help map out some paths through the Model, Record, Element, Service, and Controller systems.</p>
  
  <p>Overall, when I look at what we've been able to do with Craft and compare it to the custom applications I've dealt with in the past, I'm relieved at how little technical debt we've accrued—at the end of the day, we're able to write clear, structured, maintainable code, and delegate much of the mundane or error-prone aspects to Craft or Yii, and focus on the "stuff" that makes that application unique.</p>
  
  <p>Please don't hesitate to join us on Discord if you want to chat about specific capabilities! Best of luck in evaluating platforms.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-08-08T06:59:42.767Z
Answers.Text: You are spot on regarding the mundane part you're talking about. I've often been frustrated at how much time I spend writing repetitive things like CRUD - or how much time goes in to facilitating so the project actually builds. Although my background is mostly .Net and Microsoft, I love the simplicity and "it just works"-iness of Craft, Yii 2 and Twig. Twig is simple in a cute, sweet and tremendously powerful way.
Answers.UserDisplayName: nitech
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-08-08T07:01:01.760Z
Answers.Text: Do you or any others viewing this question have any examples of applications leveraging Craft CMS for more complex solutions than "just a website" (having developed a few sites myself, I know that a website can be very complex in itself - but I think you get the idea of my question ;-)
Answers.UserDisplayName: nitech
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-08-08T22:03:12.897Z
Answers.Text: Granted we aren't traditionally an application design shop, our work on designportland.org felt like a pretty custom solution—it includes a pretty sophisticated membership model and “event applications,” a customizable workflow for event hosts to create listings. We're expanding it to a true marketplace-style application where hosts can link up a Stripe account and sell tickets directly on-site.
Answers.UserDisplayName: August Miller
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-08-08T22:05:32.433Z
Answers.Text: We also help ohnotype.co with their font sales platform (custom pricing rules, font bundles, estimation, file obfuscation), which ended up being a pretty big lift—but more focused on extensions to native features, than an app-first buildout, per se.
Answers.UserDisplayName: August Miller
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-08-09T07:26:07.600Z
Answers.Text: Thank you August. I will mark your answer as the accepted. I realize this is more of a wiki-page than a question with an answer per se. I just wanted to ask it in this fasion and have it answered like you did so we together can lift the the Craft Community here on StackExchange. Thanks again. And also thanks to @ryan
Answers.UserDisplayName: nitech
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-08-09T14:01:54.260Z
Answers.Text: Just wanted to throw my two cents in since I am actually starting a custom app / SaaS using Craft as the backend.  After doing research, going back and forth on developing from scratch, and talking with the folks at P&T, I found it made the best sense.  When creating my “needs” list I found myself writing a lot of phrases ending with "like Craft does it".    As someone else mentioned, it is going to handle a lot of things like user authentication that we won't have to worry about creating or maintaining.  Then we'll develop what it won't do.  I don't think you can go wrong!
Answers.UserDisplayName: Todd
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-08-05T19:07:46.070Z
Answers.LastActivityDate: 2019-08-06T13:54:19.703Z
Answers.LastEditDate: 2019-08-06T13:54:19.703Z
Answers.UserDisplayName: August Miller
Answers.Body: <p>Craft isn't opinionated on how your site works; it just organizes and outputs your content however you want it to. You have 100% control over your HTML whether you want to use templates or dish out the data for some framework like React, Vue, etc (using the <a href="https://github.com/craftcms/element-api" rel="nofollow noreferrer">Element API plugin</a>). So that should answer your question: yes it is more than just a website CMS because it simply manages your content, not the means you choose to collect and output that content like a website, app, etc.</p>
  
  <p>However, Craft out of the box obviously isn't customized to all the extra functionality you described above, so you're going to need to write <a href="https://docs.craftcms.com/v3/extend/module-guide.html#set-up-class-autoloading" rel="nofollow noreferrer">your own custom module</a> in PHP to do these things. You can use <a href="https://pluginfactory.io/" rel="nofollow noreferrer">Pluginfactory</a> to start your scaffolding.</p>
  
  <p>Off the top of my head, based on what you said, it sounds like you'll eventually need to buy <a href="https://craftcms.com/pricing#commerce" rel="nofollow noreferrer">Craft Commerce</a>. Your users will create an account in Craft. The bloggers/influencers will need their own user group, and they will submit a form that will create an entry in a channel called "Menus". Your general users will be in their own user group and can choose among those Menus entries. You get an unlimited number of channels, categories, purchasables, etc, and they can all be related to each other within an entry, product, etc, so go nuts and keep everything modular for reuse. Your custom plugin/module will need to handle figuring out the number of ingredients and any other customization.</p>
  
  <p>That's all just my interpretation of what you wrote, so obviously you'll want to look into this stuff yourself. But I don't think you have to go reading up extensively on a bunch of stuff before finally deciding to start. You can download Craft Commerce for free (you don't have to pay for a license until you push it up to your server), and you can always start exploring custom plugin/module development. Getting your hands dirty with the code is the way to answer your question, but if you're worried about investing your time in all this just to find out that Craft prohibits you from realizing your idea, I can assure you that's not the case, and you're not going to have to make it happen by having to hack around the system like some lame Wordpress site. Craft is made to be incredibly flexible for anything that needs content managed, and that includes your idea.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-08-05T09:18:36.323Z
Answers.Text: Thanks Ryan. What I'm kind of asking is: Should I invest my time in Craft CMS - or should I rather roll my own system? I am currently implementing Craft CMS on a multi site and multi lingual scale, and I like what I see - so it makes sense to use Craft on the project I'm outlining- if Craft can handle the complexity, size and traffic.
Answers.UserDisplayName: nitech
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-08-05T13:36:51.117Z
Answers.Text: I would go with Craft because 1) I doubt it will be worth your time to construct something better than Craft, 2) once you create that system you have to constantly maintain it instead of focusing on your idea, 3) I don't doubt Craft can handle your idea's needs, provided you're capable of extending it.  Whether you think Craft is better than another pre-built system is up to you, but obviously I recommend it.  I think what you're doing by implementing it to get a better understanding of how it works is the best first step, especially since you're able to test it all out before buying it.
Answers.UserDisplayName: Ryan
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-08-03T22:34:49.260Z
Answers.LastActivityDate: 2019-08-03T22:34:49.260Z
Answers.UserDisplayName: Ryan
Body: <p>I know the easy answer is "yes", but let me elaborate: </p>
  
  <p>Say I want to create a community for grocery shoppers. I let bloggers and other influencers design their own menus that define which ingredients end up in the users' shopping carts. </p>
  
  <p>The users pick the menus that interest them, and based on factors like number of people in the family etc, the right quantity of ingredients are added to the cart. When the user is ready, she clicks purchase, and an order is sent to the nearest (or selected) grocery store. </p>
  
  <p>I have developed sytems of similar complexity earlier in my career, but then by using my own CMS system- which of course let me do whatever I wanted. </p>
  
  <p>My question is - would Craft CMS be suitable for this kind of task? Is it in fact more than a website CMS? Is it really scalable? </p>
  
Tags: <ecommerce>
Title: Can I use Craft CMS for a large custom web application?
ThreadText: # Can I use Craft CMS for a large custom web application?
  
  (Asked by: username_0 on 2019-08-02)
  
  I know the easy answer is "yes", but let me elaborate:
  
  Say I want to create a community for grocery shoppers. I let bloggers and other influencers design their own menus that define which ingredients end up in the users' shopping carts.
  
  The users pick the menus that interest them, and based on factors like number of people in the family etc, the right quantity of ingredients are added to the cart. When the user is ready, she clicks purchase, and an order is sent to the nearest (or selected) grocery store.
  
  I have developed sytems of similar complexity earlier in my career, but then by using my own CMS system- which of course let me do whatever I wanted.
  
  My question is - would Craft CMS be suitable for this kind of task? Is it in fact more than a website CMS? Is it really scalable?
  
  **Tags:** ecommerce
  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_1 on 2019-08-05. Score: 2 | Accepted answer
  
  I think username_3's answer hits on a lot of important benefits of Craft as a flexible platform, so I'll try and focus on why it's a good choice due to its architectural decisions.
  
  Craft is based on [Yii 2](http://yiiframework.com), which is an application framework not unlike Rails or Django—although they naturally differ in their handling of MVC principles.
  
  I'd recommend at least doing some of your application design in a platform-agnostic way, and then evaluating frameworks based on those needs. Some may be fulfilled by Craft, some by Commerce and other first-party extensions, and some by third-party plugins. The final piece is figuring out how those interact (if they expose [Services](https://docs.craftcms.com/v3/extend/services.html) you can interact with, if they have a robust [Events](https://docs.craftcms.com/v3/testing/testing-craft/events.html) system, etc), and mapping out what you expect to build custom.
  
  In my experience, Craft has absolutely everything you need to develop complex applications, simply by virtue of being able to drop directly into Yii's capabilities. When you're using it in this way, you'll discover that Craft becomes increasingly helpful when implementing trivial things like Authentication/Permissions, Email, Tasks, or Asset management.
  
  Perhaps the greatest argument for using Craft in light of other application frameworks (granted many solve the same sort of CRUD problems) is that you get those content tools "for free." In other words, once you've got your application built out, you can really easily just stub out a marketing site, and have your client manage their entire web platform in one place.
  
  I can't speak highly enough about Craft being used in these situations. As you're auditing Craft, I'd recommend looking at a couple of first-party plugins to see how they've structured them—there's a bunch of useful information buried in there that hasn't really be synthesized into the documentation, but may help map out some paths through the Model, Record, Element, Service, and Controller systems.
  
  Overall, when I look at what we've been able to do with Craft and compare it to the custom applications I've dealt with in the past, I'm relieved at how little technical debt we've accrued—at the end of the day, we're able to write clear, structured, maintainable code, and delegate much of the mundane or error-prone aspects to Craft or Yii, and focus on the "stuff" that makes that application unique.
  
  Please don't hesitate to join us on Discord if you want to chat about specific capabilities! Best of luck in evaluating platforms.
  
  > **Comments:**
  > **username_0**: You are spot on regarding the mundane part you're talking about. I've often been frustrated at how much time I spend writing repetitive things like CRUD - or how much time goes in to facilitating so the project actually builds. Although my background is mostly .Net and Microsoft, I love the simplicity and "it just works"-iness of Craft, Yii 2 and Twig. Twig is simple in a cute, sweet and tremendously powerful way.  
  > **username_0**: Do you or any others viewing this question have any examples of applications leveraging Craft CMS for more complex solutions than "just a website" (having developed a few sites myself, I know that a website can be very complex in itself - but I think you get the idea of my question ;-)  
  > **username_1**: Granted we aren't traditionally an application design shop, our work on designportland.org felt like a pretty custom solution—it includes a pretty sophisticated membership model and “event applications,” a customizable workflow for event hosts to create listings. We're expanding it to a true marketplace-style application where hosts can link up a Stripe account and sell tickets directly on-site.  
  > **username_1**: We also help ohnotype.co with their font sales platform (custom pricing rules, font bundles, estimation, file obfuscation), which ended up being a pretty big lift—but more focused on extensions to native features, than an app-first buildout, per se.  
  > **username_0**: Thank you username_1. I will mark your answer as the accepted. I realize this is more of a wiki-page than a question with an answer per se. I just wanted to ask it in this fasion and have it answered like you did so we together can lift the the Craft Community here on StackExchange. Thanks again. And also thanks to @username_3  
  > **username_2**: Just wanted to throw my two cents in since I am actually starting a custom app / SaaS using Craft as the backend.  After doing research, going back and forth on developing from scratch, and talking with the folks at P&T, I found it made the best sense.  When creating my “needs” list I found myself writing a lot of phrases ending with "like Craft does it".    As someone else mentioned, it is going to handle a lot of things like user authentication that we won't have to worry about creating or maintaining.  Then we'll develop what it won't do.  I don't think you can go wrong!  
  
  ---
  
  ### Answer by username_3 on 2019-08-03. Score: 3
  
  Craft isn't opinionated on how your site works; it just organizes and outputs your content however you want it to. You have 100% control over your HTML whether you want to use templates or dish out the data for some framework like React, Vue, etc (using the [Element API plugin](https://github.com/craftcms/element-api)). So that should answer your question: yes it is more than just a website CMS because it simply manages your content, not the means you choose to collect and output that content like a website, app, etc.
  
  However, Craft out of the box obviously isn't customized to all the extra functionality you described above, so you're going to need to write [your own custom module](https://docs.craftcms.com/v3/extend/module-guide.html#set-up-class-autoloading) in PHP to do these things. You can use [Pluginfactory](https://pluginfactory.io/) to start your scaffolding.
  
  Off the top of my head, based on what you said, it sounds like you'll eventually need to buy [Craft Commerce](https://craftcms.com/pricing#commerce). Your users will create an account in Craft. The bloggers/influencers will need their own user group, and they will submit a form that will create an entry in a channel called "Menus". Your general users will be in their own user group and can choose among those Menus entries. You get an unlimited number of channels, categories, purchasables, etc, and they can all be related to each other within an entry, product, etc, so go nuts and keep everything modular for reuse. Your custom plugin/module will need to handle figuring out the number of ingredients and any other customization.
  
  That's all just my interpretation of what you wrote, so obviously you'll want to look into this stuff yourself. But I don't think you have to go reading up extensively on a bunch of stuff before finally deciding to start. You can download Craft Commerce for free (you don't have to pay for a license until you push it up to your server), and you can always start exploring custom plugin/module development. Getting your hands dirty with the code is the way to answer your question, but if you're worried about investing your time in all this just to find out that Craft prohibits you from realizing your idea, I can assure you that's not the case, and you're not going to have to make it happen by having to hack around the system like some lame Wordpress site. Craft is made to be incredibly flexible for anything that needs content managed, and that includes your idea.
  
  > **Comments:**
  > **username_0**: Thanks username_3. What I'm kind of asking is: Should I invest my time in Craft CMS - or should I rather roll my own system? I am currently implementing Craft CMS on a multi site and multi lingual scale, and I like what I see - so it makes sense to use Craft on the project I'm outlining- if Craft can handle the complexity, size and traffic.  
  > **username_3**: I would go with Craft because 1) I doubt it will be worth your time to construct something better than Craft, 2) once you create that system you have to constantly maintain it instead of focusing on your idea, 3) I don't doubt Craft can handle your idea's needs, provided you're capable of extending it.  Whether you think Craft is better than another pre-built system is up to you, but obviously I recommend it.  I think what you're doing by implementing it to get a better understanding of how it works is the best first step, especially since you're able to test it all out before buying it.  
  
  ---
  
  