About this software
About EventTag Badge Platform
EventTag is an ASP.NET Core MVC (.NET 10) application on SQL Server (plain ADO.NET, 31 tables) that handles on-site badge printing for events. It ships two web portals, Customer Enabler (/enabler) for platform operators and Badge Admin (/admin) for event teams, plus a WPF Windows kiosk app where visitors search by name, registration ID or QR scan, preview and print their own badge. The source includes participant imports from CSV/XLSX, a badge designer, printer and kiosk management, a reprint-authorization workflow, audit logging, Docker/Caddy deployment files, demo seed data (15 events, about 1,300 participants) and an xUnit test suite (README cites 308 tests without a database). Review the Windows-only kiosk and printer drivers on your own hardware before relying on them.
Why EventTag Badge Platform
What makes it better
than the alternatives
- 01
Self-service Windows kiosk
A WPF app with search by name, registration ID or QR scan, badge preview, printing tracked via the Windows spooler, and a PIN-protected staff panel.
- 02
Print-once with controlled reprints
A badge prints once; a supervisor-created reprint authorization (reason, count, expiry) is required for replacements.
- 03
Two-portal separation
Customer Enabler and Badge Admin have separate path-scoped cookies, guards and endpoint policies, with per-action permissions checked by tests.
- 04
Hardened kiosk API
Per-device bearer tokens stored hashed, deny-by-default authorization, one PC per kiosk login, and rate limiting on activation.
- 05
Evidence of quality in the package
Security/authorization tests, SQL-safety tests, schema-sync checks, locked package restore, and a dependency vulnerability scan result in the README.
Customer Enabler
- Create and manage events (branding
- dates
- time zone
- status)
- Manage platform users and roles with permissions
- Own dashboard and sign-in/password reset
Participants and Attributes
- Participant objects (categories) with configurable attributes
- Attribute types with validation rules and a test endpoint
- Unique-ID and email-unique settings per object
- Participant list
- details
- forms and export to file
Imports
- Import wizard for CSV and XLSX with multi-sheet selection
- Column mappings
- import templates
- history and error reports
- Sample files and error/summary export
Badge Designer
- Visual badge designer with template preview
- Template duplicate
- import and export (.etpl.json)
- Image library with upload checks (magic bytes
- safe SVG
- 2 MB limit)
- PDF badge generation with QuestPDF
Printers and Print Management
- Printer discovery
- page config
- preferences
- test print and kiosk assignment
- Desk badge printing by staff
- Print history
- failed prints
- reprints and reports
Reprint Authorization
- Step-by-step authorization with reason
- reprint count and expiry
- Open authorizations and authorization history
Kiosk Administration
- Kiosk logins
- configuration and printer assignment
- Sponsor banners
- Heartbeat status and config-change checks
Security, Audit and Operations
- BCrypt password hashing
- lockout
- CSRF and rate limits
- Role permissions page and audit log
- Completed events become read-only
- Docker Compose with Caddy HTTPS
- DbTool for reset/upgrade
- SMTP password reset emails
| Language | Version | Framework | Used for | Share of code |
|---|---|---|---|---|
| SQL | — | — | Database | 41% |
| C# | — | — | Web, API, admin | 36% |
| C# (Razor) | — | — | Web pages | 12.4% |
| JavaScript | — | — | Front-end | 8.7% |
| CSS | — | — | Styling | 1.4% |
| Python | — | — | Web, API | 0.4% |
| Shell | — | — | Scripts | 0.1% |
| PowerShell | — | — | Scripts | 0% |
- Primary language
- C# / .NET 10
- Framework
- ASP.NET Core MVC on .NET 10 (Razor views) + WPF kiosk app
- Database
- SQL Server 2019+ (ADO.NET, parameterized SQL, no ORM)
- Authentication
- Cookie sign-in per portal with BCrypt passwords, lockout and password reset by email; kiosk devices use hashed bearer tokens plus a staff PIN
- Licence
- Single-site
- Screens
- 95
- Database tables
- 31
- Supported languages
- English only in the archive; no translation resources. No RTL support
- Browser support
- Modern evergreen browsers; no tested browser matrix in the archive
| Minimum | Recommended | |
|---|---|---|
| CPU | 2 vCPU | 4 vCPU |
| RAM | 4 GB RAM | 8 GB RAM |
| OS | Linux or Windows Server with .NET 10 runtime and SQL Server 2019+ (Docker 24+ optional); kiosk app needs Windows 10/11 and .NET 10 Desktop Runtime | Linux or Windows Server with .NET 10 runtime and SQL Server 2019+ (Docker 24+ optional); kiosk app needs Windows 10/11 and .NET 10 Desktop Runtime |
| Est. monthly hosting | $30 | $30 |
```bash cp .env.example .env # set MSSQL_SA_PASSWORD and EVENTTAG_DB_PASSWORD docker compose up -d --build docker compose logs -f db-init # wait for "Database ready." ``` Then open https://localhost/admin and https://localhost/enabler.
```bash cp .env.example .env # set EVENTTAG_SITE_ADDRESS=eventtag.example.com (DNS must point to the server) # set EVENTTAG_PUBLIC_ADMIN_URL and EVENTTAG_PUBLIC_ENABLER_URL to your https domain docker compose up -d --build ``` Caddy obtains a Let's Encrypt certificate automatically.
```bash cd "NET Project" dotnet restore EventTag.Web.slnf --locked-mode dotnet build EventTag.Web.slnf -c Release sqlcmd -S localhost -E -C -f 65001 -i ../database/schema.sql dotnet run --project src/EventTag.Web --launch-profile https ```
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 (4 minor)
No real credentials found; demo password, demo pin and permissive dev defaults ship to buyers; nuget versions are centrally pinned, but no lockfile and package contents were not visible; authz design looks sound but controllers were not provided, so guards and ownership checks are unverified; well-modularised solution with clear portal and layer separation; some oversized js files and hard-coded demo values; build likely works, but docs and scripts reference files and tools not visible or inconsistent with the tree; parameterized ado.net evident, but sql source and schema were mostly not visible; some gaps and unverified paths. 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.