When you need to build a web application you usually have some business functionality in mind but there is always a certain amount of web plumbing that needs to be implemented for things like navigation, authentication of users, security and roles and other things that are needed to support most kinds of business application logic.

After building many web applications you realize that a certain amount of this plumbing you are having to write over and over for each project. Most projects don't allocate much development time for these things and you end up doing things the quick way rather than the best way. Business stakeholders often can't be bothered with the technical details, they want to see results quickly and they tend to judge the success of the product/project by how attractive the user interface is. So the developers are really the only ones who are going to notice the elegant design of the plumbing and often enough little emphasis is put on the elegance of the design.

Many projects that don't spend time making sure the plumbing is elegant later find as the project grows in size the ugliness of the plumbing becomes more apparent and more difficult to put right because too many things are hard coded or cobbled together differently in different places. When projects get really messy, making small changes in one place end up causing unintended side effects or bugs in other places.

If you build on mojoPortal you are starting out with a core framework where great care has been put into making the plumbing elegant and efficient and easy to understand for the average .NET developer. It has been developed/managed by Joe Audette, MCSD, MCDBA, MCSE, under peer review provided by the open source community. Since this plumbing is already built for you, you don't have to spend any time developing it yourself so you can get quick results by starting right in on your specific application logic.

You can think of mojoPortal as a Starter Kit for Advanced ASP.NET Web Sites and Portals.

Out of the box, mojoPortal provides dynamic database driven web site(s) with an XHTML compliant Content Management System and community features like Blogs, Forums, Image Galleries, etc.

To learn more about working with mojoPortal, see the Documentation, especially the Developer Documentation. Or jump right in with this Hello World sample code.

For developers the mojoPortal source code is a great learning tool where you can see reference implementation for:

  • Working with various databases in .NET (MS SQL, MySQL, PostgreSQL, SQLite)
  • Implementing the different provider APIs for .NET including:
  • MembershipProvider
  • RolesProvider
  • SiteMapProvider
  • VirtualPathProvider
  • PersonalizationProvider
  • Using MasterPages, CSS, and themes to skin a site
  • Working with the ASP.NET WebParts framework
  • Localization techniques
  • General best practices in implementing enterprise class, fast and scalable web applications.

mojoPortal is implemented using classic OOP (Object Oriented Programming) patterns but it is not overly patterned. My intention when developing mojoPortal is that if I were hit by a bus a typical mid-level to senior .NET developer could understand the code well and be able to maintain it. As such I write code with the intention that it is easy to read and understand and you don't need to be Martin Fowler to understand how it works or develop custom features.

What mojoPortal is and is NOT Designed For

mojoPortal is primarily intended for building business web sites with social features, it is not intended as a foundation for building a social networking site. The features in mojoPortal are very powerful and generally intended for trusted users to create and edit content. Features like the Html Content Feature and the Blog for example allow users to add JavaScript to the page which makes it possible to do powerful things but JavaScript can also be used for malicious purposes. You should not let strangers have edit permissions in these powerful features. People occasionally ask about building a site where any registered user can create and edit pages, mojoPortal is NOT designed for that. The security implications of building a social networking site are very different than those for building a site where trusted users can edit. If you are trying to build a social networking site or want to allow strangers to edit content you should probably use something other than mojoPortal or build your own features that are designed for untrusted users and limit the abilities and not use the features included with mojoPortal. We do have some features that are designed to correctly handle untrusted users such as the forums where any registered user can post but cannot use JavaScript and the content they enter is wrapped in controls that prevent JavaScript from executing even if the user manages to put JavaScript in there. Blog Comments are also designed for untrusted users, but pretty much all other features are too powerful to let untrusted users have edit permissions.