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
| Layer | Technology | Version / notes |
|---|---|---|
| Runtime | .NET Framework | 4.5.2 (targetFramework in Web.config) |
| Web framework | ASP.NET MVC | 5 — Areas, controllers, Razor views |
| View engine | Razor | .cshtml views with module layouts |
| Client scripting | jQuery | DOM manipulation, AJAX, form validation |
| Data grids | DataTables | Sortable, filterable list UIs |
| Reporting | Crystal Reports | .rpt files + ASPX report viewers (v13.0.2000.0) |
| Excel export | ClosedXML | Spreadsheet generation from DAL/helpers |
| Excel import (legacy) | EPPlus | Non-commercial license context in appSettings |
| Database | SQL Server | Express or full edition |
| Data access | ADO.NET | SqlConnection, SqlCommand, SqlParameter |
| ORM | Entity Framework 6 | Referenced but not the primary data path |
| Authentication | Custom session | No ASP.NET Identity in production flow |
| Hosting (dev) | IIS Express | Bundled with Visual Studio |
| Hosting (prod) | IIS | Windows 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.
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,000jsonSerialization 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 apps | You will build new controllers/endpoints — no built-in Web API layer |
| Cross-platform deployment | Requires Windows + IIS; .NET Framework is Windows-only |
| ORM-driven migrations | Schema changes are applied in SQL Server directly, not via EF migrations |
| Modern front-end framework | Views are Razor + jQuery; a rewrite would be a separate project |
Common mistakes
| Mistake | Consequence |
|---|---|
| Installing wrong Crystal runtime version | Assembly binding failures at report load |
| Expecting EF DbContext queries | Empty or wrong code paths — use DAL |
| Enabling HTTPS without updating cookie settings | Session loss or redirect loops with ForceHttps |
| Underestimating SP count | ~887 procedures — business rules live in the database |
Related pages
Next steps
See how projects map to this stack in Solution structure, then verify your machine meets Requirements.