title: OOP Tactics with the Angular MVC Framework?
body: <p>I learned a lot from reading <a href="https://stackoverflow.com/questions/24548100/object-oriented-approach-with-angularjs">this question</a> that is a question pretty similar to mine. This is my first attempt at OOP, I've always coded using the procedural paradigm. Before I ask my question it would probably be useful to know the context in the form of the stack I'm using. </p>
  
  <p><strong>Server:</strong> Debian Linux<br/>
  <strong>Server-Side-Language:</strong> NodeJS with the Express Framework<br />
  <strong>DB:</strong> Indirectly MongoDB; actually BAAS in the form of Firebase.</p>
  
  <p>Since we're using BAAS, the only function of NodeJS is to serve the files. In fact, we don't even have a template engine installed. On the front end we're using Angular. The entire site is a real-time SPA that uses Angular routes. </p>
  
  <p>What I'm wondering is how to apply OOP to an MVC framework which is without a real way to create classes or instances of classes. From the question I linked at the beginning of my question, the answer seems to be using angular factories as classes. </p>
  
  <p>Each Angular module is essentially a giant object that should contain it's own MVC application, as far as I understand. What I'm <strong>wondering is how thin the controllers should be</strong>.</p>
  
  <p>With Ruby On Rails a developer is highly encouraged to create a fat model and thin controllers. </p>
  
  <p>The way I <em>feel</em> I should go about this is the following:</p>
  
  <p><strong>1)</strong> Create a model and pack it with classes in the form of Factories.<br />
  <strong>2)</strong> Create controllers which create instances of these factories, manipulate and call methods of these factories, and create a feed for the view.<br />
  <strong>3)</strong> Create a view which displays the data served by the controllers, via two-way data binding.</p>
  
  <p>The problem that I'm having here is that everywhere I look people are talking about <strong>keeping your controllers thin</strong>. As I'm new to OOP and MVC, I'm sure that I'm not applying the concepts of one or both correctly. </p>
  
  <p>Does my approach follow both OOP and MVC concepts correctly? If not, where am I mistaken, and what is the correct application of these concepts for my situation?</p>