Skip to content

davidbetz/themelia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Themelia Pro website on Azure

Themelia (aka Nalarium.Web.Processing; historical) - now defunct project about drove me mad in 2008. It's the largest project I've ever worked on. It's ASP.NET on crack (a concept inspired by my collegue/mentor). I like to think of my ASP.NET MVP being my reward for this waste of time. I know how to design and build things, but I have ZERO clue how to do marketing, so I let it die.

Wonder how huge this project was? Go look: http://themeliapro.azurewebsites.net. Click on "Read documentation" on the left. All the docs are there. I didn't update all the images. Don't care. My goal was to reinvent web development in .NET. It was a success, but I didn't know what to do with it.

So... the most low-level component was the HTTP module: everything ran through a master HTTP module brain. You could define a website, then inherit one site from another (multi-tenancy through OOP XML config). You controlled your website via a surface area (i.e. white-listing): You controlled how you wanted your site to be accessed; locked down by default. Want /contact? Define it. It also ran off "web domains" (like app domains, but for your web site; think of lightweight virtual applications.) Then there was the component model (programmatic packages of stuff analagous to the following XML). It was crazy huge. I wanted to reinvent web development in .NET.

Just for fun, below was one website's config file:

View samples as ThemeliaProSamples.

Totally random Themelia Pro sample

  <web.processing>
    <webDomains>
        <add default="/Page_/Home/Root.aspx" catchAllMode="RedirectToRoot">
            <endpoints>
                <add text="purchase" type="Page" parameter="/Page_/Home/Purchase.aspx" />
                <add text="howto" type="Page" parameter="/Page_/Home/HowTo.aspx" />
                <!---->
                <add text="sample/" type="Sequence" parameter="{Sample}" />
                <add text="account" type="Sequence" parameter="{Account}" />
                <add text="license" type="Sequence" parameter="{License}" />
                <add text="register" type="Sequence" parameter="{Register}" />
                <add text="support" type="Sequence" parameter="{Contact}" />
                <add text="problem" type="Sequence" parameter="{Contact}" />
                <add text="contact" type="Sequence" parameter="{Contact}" />
                <add text="verify" type="Sequence" parameter="{Verification}" />
                <!---->
                <add text="license/info" type="Page" parameter="/Page_/License/Info.aspx" />
                <add text="register/check" type="Registration" />
                <add selector="EndsWith" text="emailsend/" type="EmailProcessing" />
            </endpoints>
            <factories>
                <add type="NalariumWS.Web.Processing.HandlerFactory, NalariumWS.Web" />
            </factories>
            <security defaultAccessMode="Allow"
                      loginText="login"
                      loginPage="/Page_/Security/Login.aspx"
                      defaultLoggedInTarget="/"
                      validatorType="NalariumWS.Web.Security.SecurityValidator, NalariumWS.Web">
                <exceptions>
                    <add key="account" />
                    <!--<add key="contact" />-->
                    <add key="support" />
                    <add key="license" />
                </exceptions>
            </security>
        </add>
        <add default="{Sample}" name="SimpleContent" path="sample/simplecontent">
            <endpoints>
                <add text="process" type="NalariumWS.Web.DownloadHttpHandler, NalariumWS.Web">
                    <parameters>
                        <add name="FilePath" value="C:\_REFERENCE\PUBLIC\JampadTechnologySimpleContentViewer.zip" />
                        <add name="OutputName" value="JampadTechnologySimpleContentViewer.zip" />
                        <add name="ContentType" value="application/zip" />
                        <add name="Size" value="31036" />
                    </parameters>
                </add>
            </endpoints>
            <!--<accessRules>
                <add type="HttpReferrer" text="{blank}" actionType="Write" parameter="" />
            </accessRules>-->
        </add>
        <add default="/Page_/Home/Download.aspx" name="Download" path="download">
            <endpoints>
                <add text="process" type="NalariumWS.Web.DownloadHttpHandler, NalariumWS.Web">
                    <parameters>
                        <add name="FilePath" value="C:\_REFERENCE\RELEASE\Beta1\ThemeliaPro.Beta1.zip" />
                        <add name="OutputName" value="ThemeliaPro.Beta1.zip" />
                        <add name="ContentType" value="application/zip" />
                        <add name="Size" value="271509" />
                    </parameters>
                </add>
                <add type="File" text="source/lib/trace-latest.js">
                    <parameters>
                        <add name="target" value="/Resource_/Source/Client/Lib/Trace-1.5.js" />
                        <add name="extra" value="text/javascript" />
                    </parameters>
                </add>
            </endpoints>
            <!--<accessRules>
                <add type="HttpReferrer" text="{blank}" actionType="Write" parameter="" />
            </accessRules>-->
        </add>
        <add name="ImageRendering" path="image/render/download" default="{Handler NalariumWS.Web.TextRenderHttpHandler, NalariumWS.Web}">
            <parameters>
                <add name="ImageName" value="NalariumWS.Web._RESOURCE.Image.Download.png" />
                <add name="Text" value="Version 2.0 Beta 1" />
                <add name="TextColor" value="#ffffff" />
                <add name="TopPosition" value="32" />
                <add name="LeftPosition" value="87" />
                <add name="FontFamily" value="Calibri, Arial" />
                <add name="FontSize" value="12" />
            </parameters>
            <!--<accessRules>
                <add type="HttpReferrer" text="{blank}" actionType="Write" parameter="" />
            </accessRules>-->
        </add>
        <add name="forum" path="forum" default="/Sequence_/Forum.aspx" catchAllMode="PassToDefault">
            <components>
                <add type="Nalarium.Content.Processing.ContentComponent, Nalarium.Content">
                    <parameters>
                        <add name="domainGuid" value="9A04ACDC-55B9-4085-9FAD-A913FBC29324" />
                    </parameters>
                </add>
            </components>
            <security defaultAccessMode="Block"
                      loginText="login"
                      loginPage="/Page_/Security/Login.aspx"
                      defaultLoggedInTarget="/forum/"
                      validatorType="NalariumWS.Web.Security.SecurityValidator, NalariumWS.Web" />
        </add>
        <add name="blog" path="blog" default="{Blog}" catchAllMode="PassToDefault">
            <!--<components>
        <add type="Jampad.SimpleContent.Processing.ContentComponent, Jampad.SimpleContent">
          <parameters>
            <add name="physicalFolder" value="{AppSetting docsPhysicalFolder}" />
          </parameters>
        </add>
      </components>-->
        </add>
        <add name="docs" path="docs" default="{Documentation}" catchAllMode="PassToDefault">
            <components>
                <add type="Jampad.SimpleContent.Processing.ContentComponent, Jampad.SimpleContent">
                    <parameters>
                        <add name="physicalFolder" value="{AppSetting docsPhysicalFolder}" />
                    </parameters>
                </add>
            </components>
        </add>
        <add name="reference" path="reference" default="{Documentation}" catchAllMode="PassToDefault">
            <!--<components>
        <add type="Jampad.SimpleContent.Processing.ContentComponent, Jampad.SimpleContent">
          <parameters>
            <add name="physicalFolder" value="{AppSetting referencePhysicalFolder}" />
          </parameters>
        </add>
      </components>-->
        </add>
    </webDomains>
    <!--<sequences>
        <add name="Register">
            <views>
                <add name="Input" />
                <add name="VerificationSent" />
                <add name="VerificationSuccess" />
                <add name="VerificationError" />
            </views>
        </add>
    </sequences>-->
</web.processing>

About

ASP.NET Container-Like Framework

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages