This document provides a high-level overview of the AccuTheme-Tw4 project, its architecture, technology stack, and development workflows.
AccuTheme-Tw4 is a template project used as a starting point for web design and development of agency projects for clients. It is designed to work within the DNN Platform (Framework) and leverages 2sxc for content management and application development.
- Provide a complete example of all available DNN Theming features
- Create and manage custom Tailwind-based themes (skins, containers, menus).
- Develop and customize 2sxc module Apps with project-specific Razor views and components.
- Manage project-specific modifications (App_Code, RazorHost scripts, web.config customizations).
- C# Language: Version 8.0 (strictly enforced).
- Frameworks: .NET Framework 4.8.1 and .NET Standard 2.0.
- JSON Library: System.Text.Json (preferred over Newtonsoft.Json).
- Compiler: DNN uses Roslyn 4.1 for Razor compilation.
- Tailwind CSS: Version v4.1+ using the modern CSS config (
@theme). - CSS Generation: All theme and project CSS is generated into a single
/Skin.cssfile. - Icons: Modern HTML approach using
<svg>,<symbol>, and<use>.
- DNN Platform: The host environment.
- 2sxc: Used for structured content and hybrid Razor views.
- DDR Menu: Standard DNN menu system used with custom Razor templates.
- Root Solution (
dnn10.sln): An IntelliSense/tooling project, not a standalone web app. - Theme Assets: Located in
dnn/Portals/_default/Skins/AccuTheme-Tw4/. - 2sxc Views: Located in
dnn/Portals/0/2sxc/. - Tailwind Sources: Located in
src/tailwind/(index.css,theme.css).
The project follows an Open Heart Surgery (OHS) approach:
- Local Development: All editing and Tailwind compilation happen on the local workstation.
- Synchronization: Changed files are automatically copied to a remote staging/live DNN instance via SFTP (using the Natizyskunk extension).
- Immediate Testing: Changes are immediately available for preview and testing on the remote instance.
- Moving towards a modern, reusable component pattern for 2sxc Views.
- Components are server-side Razor partials (with potential for front-end TSX).
- Components use Props with defaults and are customized per project rather than upgraded.
- Built recursively using
MenuNodeobjects. - Uses
<details>/<summary>for pure CSS dropdowns. - Accessibility-focused with
aria-currentand proper link roles.
- Avoid
@applyin Razor views; use utilities directly. - Dynamic classes must be listed in comments or handled via switch statements to ensure they are picked up by the Tailwind scanner.
- Prefer Flexbox for content and CSS Grid for overall theme structure.
- npm scripts: Used for Tailwind compilation (
npm start,npm run build), image processing, and DNN theme packaging. - DNN Package: An
npm run dnnpackagescript bundles the theme into an installable ZIP.
- Experimental Files: Files with
NXor-gitignorein the name, as well asps/AccuTheme-Watch-LocalDnn.ps1, are experimental or unused and should be ignored. - Web.config: Customizations are managed for connection strings, app settings, MIME types, and module removals (e.g., WebDAV).
Last updated: December 24, 2025