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/Countdown kanban 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/expired statuses
- 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/delete action
- user
- timestamp
- old/new values
- IP address
- user agent; filterable by module
- action
- user
- date range
- Demo data: seed script (database/seed.sql) creates 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.