Argus is a modern multi-tenant application platform built with ASP.NET Core and React, using Microsoft Orleans for distributed computing.
- Multi-tenant architecture
- User management with invitation system
- Role-based authorization
- Distributed state management with Orleans
- React-based web interface
- REST API with Swagger documentation
Argus/
├── src/
│ ├── Core/ # Core shared functionality
│ │ ├── Common/ # Shared utilities
│ │ ├── Infrastructure/ # Cross-cutting concerns
│ │ └── Orleans/ # Orleans configuration
│ │
│ ├── Features/ # Feature modules
│ │ ├── Authentication/ # Authentication feature
│ │ ├── Users/ # User management
│ │ └── Tenants/ # Tenant management
│ │
│ ├── Argus.Api/ # API host application
│ ├── Argus.Web/ # React frontend
│ ├── Argus.Grains/ # Orleans grains
│ ├── Argus.Abstractions/ # Shared interfaces
│ ├── Argus.Infrastructure/ # Infrastructure services
│ └── Argus.Tests/ # Test projects
│
└── db/ # Database migrations
- .NET 8 SDK
- Node.js 18+
- Docker Desktop
- SQL Server (or SQL Server container)
-
Clone the repository
git clone https://github.com/aaronpeterson3/Argus.git
-
Start infrastructure services
docker-compose up -d
-
Run database migrations
dotnet ef database update
-
Start the API
cd src/Argus.Api dotnet run -
Start the frontend
cd src/Argus.Web npm install npm run dev
- Navigate to
/system/initto create the first tenant - Create an admin user for the tenant
- Use the admin account to manage users and tenants
- ASP.NET Core 8
- Microsoft Orleans
- Entity Framework Core
- PostgreSQL
- JWT Authentication
- React 18
- TypeScript
- TailwindCSS
- React Query
- React Router
- Formik & Yup
- Vertical slice architecture for features
- CQRS pattern using MediatR
- Orleans for distributed state management
- Multi-tenant data isolation
- RESTful API design
Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.
This project is licensed under the MIT License - see the LICENSE file for details