Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am starting on a relatively large and ambitious ASP.NET MVC 3 project and just thinking about the best way to organize my code. The project is basically going to be a general management system that will be capable of supporting any type management system whether it be a blogging system, cms, reservation system, wikis, forums, project management system, etc…, each of them being just a separate 'module'. You can read more about it on my blog posted here : http://www.ryanzec.com/index.php/blog/details/8 (forgive me, the style of the site kinda sucks).

For those who don't want to read the long blog post the basic idea is that the core system itself is nothing more than a users system with an admin interface to manage the users system. Then you just add on module as you need them and the module I will be creating is a simple blog post to test it out before I move on to the big module which is a project management system.

Now I am just trying to think of the best way to structure this so that it is easy for users to add in there own modules but easy for me to update to core system without worrying about the user modifying the core code. I think the ideal way would be to have a number of core projects that user is specifically told not to modify otherwise the system may become unstable and future updates would not work. When the user wants to add in there own modules, they would just add in a new project (or multiple projects). The thing is I am not sure that it is even possible to use multiple projects all with their own controllers, razor view template, css, javascript, etc... in one web application. Ideally each module would have some of it own razor view templates, css, javascript, image files and also need access to some of the core razor view templates, css, javascript, image files which would is in a separate project.

It is possible to have 1 web application run off of controllers, razor view templates, css, javascript, image files that are store in multiple projects?

Is there a better was to structure this to allow the user to easily add in module with having to modify the core code?

share|improve this question
2  
I agree with @qes. You have plenty of ambition, and that's good; but you should take an agile approach and deliver one feature at a time. Don't promise a Swiss-army knife before you've even furnished a small blade. –  Jim G. Apr 4 '11 at 22:29
    
Another CMS? Check other open source CMSs. –  Gulshan Apr 5 '11 at 4:32
    
@jim - That is exactly how I am going to approach it. While I have a lot of idea of what I want to do, I am going to build it small piece by small piece. –  ryanzec May 6 '11 at 16:08
    
@Gulshan - First, this is not only going to be a CMS. Secondly, I am not a fan of any of the open source CMSs out there right now. –  ryanzec May 6 '11 at 16:10
    
so how'd this turn out for you? (I keep getting sporadic upvotes bringing me back here ;-) –  qes Oct 12 '11 at 23:01
show 1 more comment

2 Answers

up vote 6 down vote accepted

I am starting on a relatively large and ambitious ASP.NET MVC 3 project and just thinking about the best way to organize my code. The project is basically going to be a general management system that will be capable of supporting any type management system whether it be a blogging system, cms, reservation system, wikis, forums, project management system, etc…

Ambitious is an understatement, and from reading your linked blog post, it seems like you've focused more on what hip cool technologies you are going to use than exactly what it is your super-app is really going to do...

That said, the best thing I think you can do is carefully study Orchard's source code. It has achieved a high degree of modularity and is built on MVC3.

share|improve this answer
    
Thanks for the link. While some of the things I listed are pretty new (RavenDB, HTML5, CSS3) a lot of the things have been around in one form or another for a while now (REST, jQuery, TDD, MVC). I also know exactly what this app is and that is the foundation for any web application I want to build in the future. When I go to build my project management system, this code will be the start point. If I want to build a CMS, URL shortener, forum system, or whatever web application, this code will be the start point. –  ryanzec Mar 16 '11 at 11:12
    
5 months later I get an accept ... so .. how'd the project go? –  qes Aug 16 '11 at 19:05
add comment

Wow...this was not an attempt to fund-raise, but I guess my post was deleted. My suggestion was (as someone who's checked out RavenDB): Check out MongoDB is you want speed....it's also free as opposed to Raven. The Newtonsoft.json (JSON.NET) library now lets you serialize objects to BSON so after you have your service setup it's as easy as grabbing objects out of a collection.

I also was going to link you to my site for an open source project I'm working on, but apparently people are super vigilant about that here...guess I have to understand, it's not my website.

share|improve this answer
    
While I am not ruling out the possibility of trying out other document databases, RavenDB so far has been very nice. Also to the point about pricing, the pricing itself is not that bad and I will be able to get a free server to start off with. –  ryanzec Apr 6 '11 at 19:57
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.