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.