You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Lightweight issue tracking for small dev teams that move fast.
VectorFlow is a full-stack project management tool built with ASP.NET Core 10 and Blazor WebAssembly. It gives small development teams a real-time Kanban board, a complete issue lifecycle, workspace collaboration, and a full audit trail — with zero enterprise overhead.
Screenshots
project-demo.mp4
Features
Core
Real-time Kanban board — drag issues across Backlog, Todo, In Progress, In Review, and Done. All moves broadcast instantly via SignalR
Issue lifecycle — auto-generated keys (e.g. VF-42), priority, type, assignee, due date, labels, and position ordering
Activity log — immutable, per-issue audit trail recording every field change with actor and timestamp
Comments — markdown-powered comment threads per issue, delivered in real time
Labels — custom labels with hex color, scoped per project
Collaboration
Workspaces — fully isolated environments with multiple projects per workspace
Invitation system — Owners and Admins invite members by email; invitations expire after 7 days and can be cancelled
Role-based access control — three roles (Owner, Admin, Member) with server-side enforcement on every request
Auth
JWT authentication via HttpOnly cookies (access token + refresh token)
Refresh token rotation — stolen tokens are invalidated on next use
Email verification on signup
Forgot password / reset password with SHA-256 hashed reset tokens
Silent token refresh via a DelegatingHandler in the Blazor client
Tech Stack
Layer
Technology
Backend API
ASP.NET Core 10
Frontend
Blazor WebAssembly
Real-time
SignalR — project-scoped hubs
ORM
Entity Framework Core
Database
PostgreSQL
Identity
ASP.NET Core Identity + JWT
UI components
MudBlazor
Email
MailKit (dev) / Resend (production)
Environment
DotNetEnv
Architecture
VectorFlow follows a clean, flat solution structure — deliberately avoiding over-engineering for a project of this scope:
VectorFlow.sln
├── VectorFlow.Api # ASP.NET Core — controllers, services, hubs, EF Core, Identity
├── VectorFlow.Client # Blazor WASM — SPA frontend
├── VectorFlow.Shared # DTOs, enums, SignalR event contracts (referenced by both)
└── VectorFlow.Tests #**** xUnit — service layer unit tests
Key patterns
Layered services — thin controllers delegate to scoped service classes; no business logic in controllers
EF Core configurations — each entity has its own IEntityTypeConfiguration<T> class; OnModelCreating only calls ApplyConfigurationsFromAssembly
IDesignTimeDbContextFactory — migrations work independently of Program.cs startup
SignalR broadcaster — an IProjectHubBroadcaster abstraction decouples domain services from SignalR internals, keeping services testable
Shared DTOs — VectorFlow.Shared eliminates type drift between the API and the Blazor client
HttpOnly cookie auth — tokens never touch localStorage; a DelegatingHandler on the Blazor HttpClient handles silent refresh transparently
API Reference
Auth
Method
Endpoint
Description
POST
/api/auth/register
Create account, send verification email
POST
/api/auth/login
Authenticate, set HttpOnly cookies
GET
/api/auth/me
Restore auth state from cookie (used on page reload)