TallyJ 4 is a full-stack election management and ballot tallying system for Bahá’í communities. The current repository contains a .NET 10 backend API, a Vue 3 + Vite frontend, shared localization assets, and xUnit/Vitest test suites.
backend/- ASP.NET Core Web API and web hostBackend.Application/- application services and shared business logicBackend.Domain/- entities, DbContext, identity models, and domain contractsBackend.Tests/- xUnit unit and integration testsfrontend/- Vue 3 + TypeScript SPAdocs/- deployment documentation only.zenflow/tasks/- historical planning and reverse-engineering artifacts; useful for background, but not the source of truth for current commands or runtime configuration
- .NET SDK 10
- Node.js 20+
- SQL Server Express, SQL Server Developer Edition, or Docker SQL Server
cd backend
dotnet restore
dotnet ef database update
dotnet runDefault development URLs:
- API:
http://localhost:5016 - Swagger:
http://localhost:5016/swagger - HTTPS profile:
https://localhost:7262
cd frontend
npm install
npm run devDefault frontend URL:
- App:
http://localhost:8095
The frontend reads VITE_API_URL from .env.development or falls back to http://localhost:5016.
With the default development backend configuration, the database is seeded on startup.
| Password | Role | |
|---|---|---|
admin@tallyj.test |
TestPass123! |
Admin |
teller@tallyj.test |
TestPass123! |
Teller |
voter@tallyj.test |
TestPass123! |
Voter |
cd backend
dotnet buildcd backend
dotnet ef migrations listcd ..
dotnet test Backend.Tests/Backend.Tests.csprojcd frontend
npm run checkcd frontend
npm run test:runcd frontend
npm run validate:i18nUse npm run start when you need to regenerate the OpenAPI client before starting Vite.
These are the canonical docs to keep current:
backend/README.md- backend setup and local configurationfrontend/README.md- frontend development workflowdocs/DEPLOYMENT.md- deployment notes and production checklistDEPLOYING_LOCALLY.md- local deployment setup (non-development)E2E_TESTING_GUIDE.md- smoke testing and validation workflowAGENTS.md- repo-specific instructions for AI agents and contributors
The source of truth for API routes and schemas is the running Swagger/OpenAPI document exposed by the backend at /swagger.
Do not rely on older hand-written endpoint summaries when the running API disagrees with them.