Skip to main content

Technology stack

Damsy ERP runs on the .NET Framework 4.5.2 stack with ASP.NET MVC 5. The architecture is deliberately traditional: server-rendered pages, ADO.NET data access, and SQL Server stored procedures as the primary business-logic layer.

Purpose

Knowing the stack helps you choose compatible tooling, runtime dependencies, and extension patterns. This page lists every major technology decision and where it appears in the solution.

Platform overview

LayerTechnologyVersion / notes
Runtime.NET Framework4.5.2 (targetFramework in Web.config)
Web frameworkASP.NET MVC5 — Areas, controllers, Razor views
View engineRazor.cshtml views with module layouts
Client scriptingjQueryDOM manipulation, AJAX, form validation
Data gridsDataTablesSortable, filterable list UIs
ReportingCrystal Reports.rpt files + ASPX report viewers (v13.0.2000.0)
Excel exportClosedXMLSpreadsheet generation from DAL/helpers
Excel import (legacy)EPPlusNon-commercial license context in appSettings
DatabaseSQL ServerExpress or full edition
Data accessADO.NETSqlConnection, SqlCommand, SqlParameter
ORMEntity Framework 6Referenced but not the primary data path
AuthenticationCustom sessionNo ASP.NET Identity in production flow
Hosting (dev)IIS ExpressBundled with Visual Studio
Hosting (prod)IISWindows Server with ASP.NET 4.x app pool

How the stack fits together

Key libraries in detail

ASP.NET MVC 5 and Razor

Controllers handle HTTP requests. Views render HTML on the server. MVC Areas partition the application into modules (Payroll, Bills, Stock, etc.) with isolated routing under {area}/{controller}/{action}/{id}.

Default route (no Area): {controller}/{action}/{id}Login/Index.

jQuery and DataTables

Client-side behavior is jQuery-driven — not a modern component framework. List screens typically hydrate a DataTable from JSON or server-rendered markup. Expect inline scripts in views rather than a single-page application bundle.

Crystal Reports

Printable outputs (payslips, statutory forms, billing documents, stock reports) use Crystal Reports runtime assemblies referenced at version 13.0.2000.0. Report viewers are hosted as .aspx pages within Area folders. The Crystal image handler is registered in Web.config.

danger

Crystal Reports runtime must be installed on any machine that runs or publishes report viewers — not just the developer workstation. Missing runtime causes report pages to fail at runtime with assembly load errors.

ClosedXML and EPPlus

BaseHelper and DAL methods use ClosedXML for Excel workbook generation. EPPlus appears in configuration for legacy import scenarios with a non-commercial license flag.

SQL Server and ADO.NET

All transactional reads and writes go through DAL classes calling stored procedures via BaseHelper.GetDataTable, ExecuteProcedure, and related helpers. Connection pooling is handled by ADO.NET; command timeout defaults to 120 seconds in BaseHelper.

There is no centralized procedure catalog in Git. Each DAL class typically defines a private struct with literal stored procedure names.

Developer notes

Web.config compilation target

<compilation targetFramework="4.5.2" debug="true" batch="true">

Set debug="false" in Release publish profiles for production.

JSON serialization limits

Large grid payloads require elevated limits:

  • aspnet:MaxJsonDeserializerMembers — 150,000
  • jsonSerialization maxJsonLength — 2,147,483,644

Session and cookies

Session state is InProc with a 30-minute timeout. Cookies are HTTP-only; requireSSL follows your HTTPS configuration.

Security headers

SecurityHeadersEnabled in appSettings controls optional response header hardening. Global.asax also strips Server and ASP.NET version headers on each request.

When to choose alternative approaches

If you need…Current stack implication
REST API for mobile appsYou will build new controllers/endpoints — no built-in Web API layer
Cross-platform deploymentRequires Windows + IIS; .NET Framework is Windows-only
ORM-driven migrationsSchema changes are applied in SQL Server directly, not via EF migrations
Modern front-end frameworkViews are Razor + jQuery; a rewrite would be a separate project

Common mistakes

MistakeConsequence
Installing wrong Crystal runtime versionAssembly binding failures at report load
Expecting EF DbContext queriesEmpty or wrong code paths — use DAL
Enabling HTTPS without updating cookie settingsSession loss or redirect loops with ForceHttps
Underestimating SP count~887 procedures — business rules live in the database

Next steps

See how projects map to this stack in Solution structure, then verify your machine meets Requirements.