About this software
About assistra
Assistra is a full-featured help desk built on .NET 10 ASP.NET Core MVC with SQL Server. It supports unlimited tenants (companies) on one installation, each with its own portal, agents, roles and data isolation. The system includes tickets with 90+ views and kanban boards, SLA policies with business-hour clocks, assignment rules (direct, round-robin, skills), workflow automation, a knowledge base, a community forum and 22 system reports plus custom report builder. Every tenant table filters by OrgId; every query is parameterised; every mutating endpoint has an explicit permission guard.
Why assistra
What makes it better
than the alternatives
- 01
Multi-tenant architecture
Unlimited companies on one installation, each with its own portal URL (/agent/{portal}), agents, roles, settings and data that no other tenant can see.
- 02
Clean Architecture with raw ADO.NET
No Entity Framework, no Dapper; every repository method is one parameterised SQL statement, every service wraps writes in a transaction via DbSession (Unit of Work).
- 03
Comprehensive automation
SLA policies with 4 escalation levels, assignment rules (direct, round-robin with skills, handshake), workflow rules (alerts, tasks, field updates, webhooks), supervisor rules and scheduled replies.
- 04
Built-in analytics
22 System reports (tickets, agents, SLA, happiness, community), custom report builder with criteria, charts and CSV export, plus dashboards with 20+ widget types and built-in dashboards (Tickets, Agents, SLA, Happiness).
- 05
Security by design
PBKDF2 password hashing, anti-forgery tokens on every POST, HTML sanitising, signed links, least-privilege SQL login, every endpoint guarded by module/permission/sign-in, unit test fails build if guard missing.
Tickets
- Ticket lists in Classic
- Compact
- Table views and
Status/Priority/Countdownkanban boards with drag-and-drop - 90+ standard views and custom views (criteria builder with AND/OR
- shared with teams or roles)
- starred views
- filters
- sorting
- bulk update
- CSV export
- Ticket page: inline-editable properties
- conversation
- reply/forward
- private comments with @mentions
- attachments
- time entries with cost
- work timer
- tags
- approvals
- resolution
- history
- suggested KB articles
- Scheduled replies
- ticket templates
- macros
- Customer happiness ratings from signed link in every reply
Customers (CRM)
- Contacts and accounts with overview widgets
- tickets
- interactions
- products
- attachments
- comments
- history
- Products with product code
- category
- unit price
- description
- Support plans (contract templates) with duration
- cost
- billing cycle
- Contracts with start/end dates
- expiry notices
- linked tickets
- attachments
- comments
- history
Activities
- Calls
- tasks
- events with reminders (bell and email)
- Comments
- attachments
- time entries
- work timer
- Activity lists with standard and custom views
- filters
- sorting
- bulk update
- Linked to tickets
- contacts
- accounts
Automation
- Business hours (24/7
- weekdays
- custom schedules) and holiday lists
- SLA policies with business-hour clocks
- pause on hold
- violations
- up to 4 escalation levels (first response
- every response
- resolution)
- Assignment rules: direct (criteria → agent/team)
- round-robin with skills
- handshake mode (agent must accept)
- Workflow rules with triggers (create
- update
- field change
- time-based)
- criteria
- actions (alerts
- tasks
- field updates
- custom functions/webhooks)
- Supervisor rules (escalate overdue tickets to manager)
- email templates
- notifications (bell and email)
- team feed
Knowledge Base
- Articles with categories
draft/review/published/expiredstatuses- rich editor (Quill)
- attachments
- Article votes (helpful/not helpful)
- feedback comments
- Article search
- suggested articles on ticket page
- Article history
- version tracking
Community
- Forums and topics (question
- idea
- problem
- announcement)
- comments
- best answers
- likes
- follows
- Community dashboard (topics
- comments
- likes
- follows
- best answers by period)
- Moderation queue (pending topics and comments)
- recycle bin (soft delete with restore/purge)
- Topic flags (sticky
- locked)
- status (open
- answered
- closed)
Analytics
- 22 system reports: tickets (by status
- priority
- channel
- agent
- team
- department
- SLA
- tag
- product
- account
- contact)
- agents (performance
- time entries
- happiness ratings)
- SLA (violations
- escalations)
- happiness (ratings
- feedback)
- community (topics
- comments
- likes)
- Custom report builder: module selection (Tickets
- Contacts
- Accounts
- Articles
- Products
- Calls
- Tasks
- Events)
- criteria builder (AND/OR)
- column picker (90+ fields per module)
- sorting
- grouping
- charts (bar
- line
- pie
- donut
- funnel)
- CSV export
- Dashboards: built-in (Tickets
- Agents
- SLA
- Happiness) and custom
- 20+ widget types (count
- list
- chart
- table
- trend
- funnel
- gauge
- heatmap
- leaderboard)
- filters (period
- agent
- team
- department
- status
- priority
- channel
- SLA
- tag
- product
- account)
- Dashboard folders (Public
- Private
- Shared)
- favorite dashboards
- component arrange (drag
- resize
- remove)
Setup (Admin)
- Company: name
- logo
- favicon
- time zone
- currency
- date/time formats
- business hours
- holiday lists
- Agents: create
- edit
- disable
- roles
- profiles
- teams
- departments
- skills
- data sharing rules
- Roles: 50+ permissions across 15 modules (Tickets
- Contacts
- Accounts
- Products
- Contracts
- Activities
- KB
- Community
- Reports
- Dashboards
- Automation
- Setup)
- module actions (View
- Create
- Edit
- Delete
- Export
- Manage)
- Profiles: field-level permissions (read
- write
- mandatory) for tickets
- contacts
- accounts
- products
- contracts
- activities
- Teams: agents
- team lead
- description; data sharing rules (team-owned records visible to team members)
- Departments: name
- description
- agents; tickets
- contacts
- accounts
- products
- contracts
- activities belong to one department
- Skills: name
- description
- agents; used in round-robin assignment
- Mail configuration: support email addresses (one per department)
- custom SMTP (host
- port
- SSL
- user
- password) or global SMTP
- test email
- Email templates: subject
- body (HTML editor)
- placeholders (ticket
- contact
- account
- agent
- org)
- used in workflow alerts and scheduled replies
- Ticket templates: subject
- description
- priority
- status
- channel
- department
- owner
- tags; quick-create tickets
- Macros: bulk actions (update fields
- add comment
- send email
- assign
- close) applied to multiple tickets at once
- Ticket status: custom statuses per department
- status types (Open
- Pending
- On Hold
- Escalated
- Closed)
- default status
- status order
- Tags: create
- edit
- delete
- merge; used in tickets
- activities
- KB articles
- SLA policies: name
- description
- business hours
- targets (first response
- every response
- resolution)
- escalation levels (1-4)
- criteria (priority
- channel
- department
- contact
- account
- product
- tag)
- Assignment rules: direct (criteria → agent/team)
- round-robin (team
- skills
- handshake mode)
- rule order
- active/inactive
- Workflow rules: triggers (create
- update
- field change
- time-based)
- criteria
- actions (alerts
- tasks
- field updates
- custom functions)
- rule order
- active/inactive
- Supervisor rules: criteria (overdue tickets)
- escalation (to manager)
- frequency (hourly
- daily)
- active/inactive
- Custom functions: webhooks (POST JSON to external URL)
- test with sample ticket
- run history (request
- response
- status
- duration)
- Customer happiness: rating scale (1-5 stars)
- feedback form
- email template
- rating link in every reply
- Notifications: bell (in-app) and email
- per-agent preferences (ticket assigned
- ticket updated
- ticket commented
- @mention
- activity reminder
- SLA violation
- workflow alert
- supervisor escalation)
- Time tracking: enable/disable
- billable/non-billable
- cost per hour per agent
- work timer
- Audit log: every
create/update/deleteaction - user
- timestamp
- old/new values
- IP address
- user agent; filterable by module
- action
- user
- date range
- Demo data: seed script
database/seed.sqlcreates demo portal with 5 agents (admin - agent
- light agent
- supervisor
- manager)
- 150 tickets
- 50 contacts
- 20 accounts
- 10 products
- 5 contracts
- 30 activities
- 20 KB articles
- 10 community topics
- 50 comments
| Language | Version | Framework | Used for | Share of code |
|---|---|---|---|---|
| C# | — | — | Web, API, admin | 53.7% |
| C# (Razor) | — | — | Web pages | 19.8% |
| SQL | — | — | Database | 18.8% |
| CSS | — | — | Styling | 3.2% |
| JavaScript | — | — | Front-end | 2.6% |
| HTML | — | — | Front-end | 1.3% |
| Python | — | — | Web, API | 0.6% |
| Shell | — | — | Scripts | 0.1% |
- Primary language
- C# 12 / .NET 10
- Framework
- ASP.NET Core 10 MVC (Razor)
- Database
- SQL Server 2019+
- Authentication
- ASP.NET Core Identity (PBKDF2), email OTP, invite tokens
- Licence
- Single-site
- Screens
- 280
- Database tables
- 126
- Supported languages
- English only
- Browser support
- Modern browsers (Chrome, Firefox, Edge, Safari)
| Minimum | Recommended | |
|---|---|---|
| CPU | 2 vCPU | 4 vCPU |
| RAM | 4 GB RAM / 20 GB SSD | 8 GB RAM / 50 GB SSD |
| OS | Linux (Ubuntu 22.04+) or Windows Server 2019+ with .NET 10 runtime | Linux (Ubuntu 22.04+) or Windows Server 2019+ with .NET 10 runtime |
| Est. monthly hosting | $25 | $25 |
```bash cp .env.example .env # Edit .env: set MSSQL_SA_PASSWORD, APP_DB_PASSWORD, SEED_DEMO=true, DEMO_ENABLED=true docker compose up -d # Wait 60s for SQL Server + schema + seed # Open http://localhost:8080 → Live Demo → admin@demo.example.com / Demo@2026 ```
```bash sudo apt update && sudo apt install -y dotnet-sdk-10.0 mssql-server sudo /opt/mssql/bin/mssql-conf setup # Express edition, set SA password git clone <repo> && cd <repo>/NET\ Project dotnet user-secrets set "ConnectionStrings:ZohoDesk" "Server=localhost;Database=Assistra;User Id=assistra_app;Password=<APP_PASSWORD>;Encrypt=True;TrustServerCertificate=True" sqlcmd -S localhost -U sa -P '<SA_PASSWORD>' -i ../database/schema.sql sqlcmd -S localhost -U sa -P '<SA_PASSWORD>' -i ../database/seed.sql dotnet run --project src/ZohoDesk.Web # Open http://localhost:5295 ```
```powershell # Install .NET 10 Hosting Bundle, SQL Server 2019+ Express # Run database\schema.sql + database\seed.sql in SSMS cd "NET Project\src\ZohoDesk.Web" dotnet publish -c Release -o C:\inetpub\Assistra # IIS Manager: New Site → Assistra → C:\inetpub\Assistra → port 80 # App Pool → .NET CLR Version: No Managed Code # Environment Variables (applicationHost.config or web.config): # ConnectionStrings__ZohoDesk = Server=.;Database=Assistra;User Id=assistra_app;Password=<pwd>;... # DemoAccounts__Enabled = true # DemoAccounts__Password = Demo@2026 iisreset ```
Quality report
Manually reviewedHow to read the quality report
What this is. Every project on Vibe96 goes through an automated audit of its source code before a reviewer in Dubai checks it by hand. The score is out of 100; 75 is the minimum to be listed, and any single failing check blocks a listing regardless of the score.
- Security
- No real credentials in the code, every data-changing route protected, admin areas role-gated, no SQL built from user input.
- Code structure
- A developer can navigate and extend it: clear module boundaries, no giant files, little copy-paste.
- Docs & completeness
- The setup guide, example config, schema and required files the builder committed to are actually in the archive.
- Dependency health
- Packages pinned, no known critical vulnerabilities, no abandoned libraries in production paths.
- Build & deploy
- A clean machine can restore, build and start it by following the shipped instructions.
Warnings are problems that didn't block the listing; they stay visible here until a later version clears them. The audit reads the code — it does not run it — so always try the live demo before you buy. Lines of code are counted from the same audited archive.
Reviewer notes (3 minor)
No critical vulnerabilities; some packages outdated, no lockfile for docker base image; weak demo password ships to production; no real credentials found; moderate code duplication and some oversized files; architecture generally sound. None of these stop the software from working; the developer has been told and improvements come in a future update.
Versions & updates
No updates yet. New versions appear here with a changelog.
Buyers receive updates free for 1 year.
What you get
- </>Full source codeThe complete audited source, delivered as a download from your account. No obfuscation.
- ▤DocumentationSetup guide, architecture notes, CLAUDE.md and AGENTS.md.
- ↻One year of updatesEvery new version the builder publishes, free for 12 months.
- ♧30 days of supportInstallation and defect support through Vibe96 tickets.