Skip to content
CAI
Software that uses CAICheck a score

sheng-jie/LearningMpaAbp

27.2

Weak · 20 September 2026

5k

lines of production code

JavaScript

with C#

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a multi-tenant task management application built on the ABP framework with .NET Framework 4.6 and MySQL. It provides core infrastructure for managing tenants, users, and roles, alongside services for creating, assigning, and tracking tasks with automatic notifications. The platform includes a Web API with OAuth2 authentication, a web interface, and tools for database migration and background job processing.

Features

Added Weixin demo application scaffolding with Bootstrap 3 UI

The LearningMpaAbp.Weixin project now includes a functional ASP.NET MVC scaffold to demonstrate WeChat integration. This adds a default route pointing to a Weixin controller, along with the Bootstrap 3.0.0 CSS framework (including theme styles and Glyphicons) to provide a responsive user interface for the demo.

LearningMpaAbp.Weixin · high confidence

Added custom repository interface for backend tasks

Introduced the IBackendTaskRepository interface in the core layer, extending the standard Abp IRepository to include a specific method for retrieving tasks assigned to a user by their ID.

LearningMpaAbp.Core/IRepositories · high confidence

Added database migration tool for multi-tenant environments

A new standalone migration utility (LearningMpaAbp.Migrator) has been added to the Tools directory. This tool allows administrators to execute database schema migrations for the host database and all configured tenants. It supports multi-tenant scenarios by iterating through tenant records, resolves connection strings per tenant, and includes logging via log4net to track migration progress and errors.

Tools · high confidence

Added extension methods and interface to access user email from AbpSession

The application now provides two ways to retrieve the current user's email address via the ABP session: a new \IAbpSessionExtension\ interface with an \Email\ property (implemented by \AbpSessionExtension\) and a static extension method \GetUserEmail\ on \IAbpSession\ (in \AbpSessionExtension2\). This allows services and components to easily access the user's email claim without directly manipulating the underlying claims principal.

LearningMpaAbp.Core/Extensions · high confidence

Initial Entity Framework setup with MySQL support and task repository

This change introduces the core Entity Framework configuration for the application, switching the database provider to MySQL via the \MySqlEFConfiguration\ attribute on the \LearningMpaAbpDbContext\. It enables SQL query logging to the Visual Studio debug output window during development. Additionally, it adds a base repository class for common data access patterns and implements a specific \BackendTaskRepository\ that allows retrieving tasks assigned to a specific user by their ID.

LearningMpaAbp.EntityFramework/EntityFramework · high confidence

Initial application layer scaffolding for multi-tenant task management

This change introduces the core application services and supporting infrastructure for the LearningMpaAbp project. It establishes a multi-tenant architecture with services for managing tenants, users, and roles, including permission handling. A comprehensive task management system is added, featuring CRUD operations, assignment logic, and support for paging, sorting, and filtering. The update also implements a notification system using background jobs to alert users about open tasks, alongside a background worker to automatically deactivate inactive users. Supporting infrastructure includes a localization service, a custom DTO mapping framework, and caching for task data.

LearningMpaAbp.Application · high confidence

Initial authorization and role management infrastructure

The application now includes a complete authorization framework within the core module, enabling role-based access control and permission definitions. This change introduces static role configurations for Host and Tenant administrators, defines a permission hierarchy covering Pages, Users, Tenants, and Tasks (including specific actions like assigning and deleting tasks), and implements the necessary infrastructure classes (LoginManager, PermissionChecker, RoleManager, RoleStore) to enforce these rules.

LearningMpaAbp.Core/Authorization · high confidence

Initial database seed data for host and tenant environments

The application now automatically populates the database with essential baseline data upon first run. This includes creating the default edition, pre-configuring system settings (such as SMTP email defaults), and seeding a list of supported languages. It also establishes the host-level infrastructure by creating the default tenant, a host administrator user with full permissions, and a tenant administrator user with corresponding roles and permissions. Additionally, sample task data is inserted to provide immediate content for the task management feature.

LearningMpaAbp.EntityFramework/Migrations/SeedData · high confidence

Initial implementation of custom User, UserManager, and UserStore components

The application now includes a custom User entity extending AbpUser, along with corresponding UserManager and UserStore implementations to handle user identity and persistence. The User class provides a default password and a factory method for creating tenant admin users, while the UserManager and UserStore integrate with the ABP framework's dependency injection and repository patterns. A stubbed LoginAsync method is present in the UserManager, indicating that authentication logic is currently incomplete.

LearningMpaAbp.Core/Users · high confidence

Initial project scaffolding and framework integration

The repository has been initialized with core project files, including NuGet configuration and MSBuild targets for package management. The backend now includes foundational multi-tenancy and edition management components (Tenant, EditionManager, FeatureValueStore) built on the ABP framework. On the frontend, AngularJS integration scripts have been added to handle HTTP interceptors and error handling, alongside a RequireJS plugin for dynamic service proxy generation.

(repo-wide) · high confidence

Initial project scaffolding and repository setup

The repository is initialized with the core solution structure for the LearningMpaAbp project, including the Visual Studio solution file that defines the Core, Application, EntityFramework, WebApi, Web, and Weixin projects. Essential configuration files are added, such as the MIT License, a comprehensive README with documentation links, and a Jekyll theme configuration for the GitHub Pages site. Additionally, the project is configured with a .gitignore file to exclude logs and publish profiles, and an Azure Pipelines CI/CD definition is introduced to automate building and testing the ASP.NET solution.

(repo-wide) · high confidence

Initial project scaffolding with .NET Framework 4.6 and ABP v2.1.1

The core module is introduced, establishing the application's foundation on .NET Framework 4.6 and ABP framework v2.1.1. This includes configuring multi-tenancy, setting up XML-based localization, registering the core authorization providers, and defining assembly binding redirects for Castle.Core, Newtonsoft.Json, and System.Collections.Immutable to ensure dependency compatibility.

LearningMpaAbp.Core · high confidence

OAuth2.0 authentication and Swagger UI integration for the Web API

The WebApi project now supports OAuth2.0-based authentication, introducing an AccountController for login, OAuth server options, and custom providers for authorization and refresh tokens. Additionally, Swagger UI is configured for API documentation, including a custom script to inject CSRF tokens for secure testing, and JSON serialization is standardized to use camelCase property names and a specific date format.

LearningMpaAbp.WebApi · high confidence

Task assignment and notification capabilities

The application now supports assigning tasks to specific users and automatically notifying them upon assignment. This is implemented via a new domain service (ITaskManager/TaskManager) that validates task state and handles the assignment logic, while a domain event (TaskAssignedEventData) triggers a notification handler to publish an in-app notification to the assigned user.

LearningMpaAbp.Core/Tasks · high confidence

Behavioural changes

Database migration infrastructure switched to MySQL

The application's Entity Framework migration setup now targets MySQL. This is implemented by adding a new migration class (Abp\_MoveTo\_MySql) that defines the database schema, registering the MySQL SQL generator in the Configuration class, and introducing the AbpZeroDbMigrator to handle migration execution. Users relying on the previous database provider will need to apply this migration to transition their data structure to the new MySQL-compatible schema.

LearningMpaAbp.EntityFramework/Migrations · high confidence

Migration to MySQL and .NET Framework 4.6

The data access layer has been updated to target .NET Framework 4.6 and switched from SQL Server to MySQL as the primary database provider. This change involves adding the necessary Entity Framework configuration for MySQL in the application config, registering the MySQL provider, and updating assembly binding redirects to ensure compatibility with the new runtime and database dependencies.

LearningMpaAbp.EntityFramework · high confidence

Updated ABP framework client-side libraries and web configuration

The web application's client-side ABP framework scripts (abp.js, abp.d.ts) and associated libraries (jQuery, SignalR, toastr, sweet-alert, spin.js, blockUI, jtable, moment) have been updated to a newer version, bringing changes to the JavaScript API and TypeScript definitions. Additionally, the web module configuration has been updated to include a new navigation provider defining application menus (Home, Tenants, Users, About, Task List, Backend Task List) and to configure Redis caching with specific sliding expiration times for all caches and the 'ControllerCache'.

LearningMpaAbp.Web · high confidence

Test coverage

Initial unit test suite for Task and User management

Added a comprehensive set of unit tests for the application's core services, including TaskAppService and UserAppService. The test infrastructure establishes a seeded database environment with pre-configured test users and tasks, enabling verification of task creation, retrieval, filtering, paging, and assignment logic, as well as user creation and listing operations.

Tests · high confidence

Dependencies

Upgrade to ABP Framework 2.1.3 and .NET Framework 4.6

The project dependencies have been updated to target the .NET Framework 4.6 and upgrade the ABP framework suite (including Abp, Abp.Zero, Abp.EntityFramework, Abp.Web, and related modules) to version 2.1.3. This change also introduces several supporting libraries such as Hangfire (1.6.13) for background job processing, Glimpse (1.8.6) for performance debugging, and MySql.Data (6.9.10) for database connectivity, alongside updates to AutoMapper (6.1.0) and Entity Framework (6.1.3).

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 35 → 27 (-7.8)
  • Rubric changed (rubric-2026.08.17 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 51 → 39 (-12.0)
  • Architecture 84 → 84 (-0.0)
  • Maturity 40 → 40 (+0.0)
  • Readiness 30 → 30 (-1.0)
  • Security 29 → 19 (-9.7)
  • Accessibility 53 → 29 (-23.6)

Resolved (13)

  • Bounded contexts not declared
  • Build did not complete in the analyzer
  • Coverage not measured — test suite did not build
  • Duplicated block (16 lines × 2) (LearningMpaAbp.Web/Controllers/AddressController.cs)
  • Duplicated block (9 lines × 2) (LearningMpaAbp.Web/Controllers/BackendTasksController.cs)
  • Duplicated block (9–12 lines × 2) (LearningMpaAbp.WebApi/Api/Controllers/AccountController.cs)
  • LLM evaluation failed
  • Mock framework: NSubstitute
  • No exposed public API
  • Test reliability not measured — no test run produced results
  • TodoComment (LearningMpaAbp.Web/Controllers/AccountController.cs)
  • TodoComment (LearningMpaAbp.Web/Controllers/AccountController.cs)
  • single-maintainer — knowledge-concentration (bus factor) risk

New (207)

  • AccountController.Register (cognitive 21) (LearningMpaAbp.Web/Controllers/AccountController.cs)
  • AccountController.TryExtractNameAndSurnameFromClaims (cognitive 20) (LearningMpaAbp.Web/Controllers/AccountController.cs)
  • Banned license: MySql.Data
  • Banned license: MySql.Data.Entity
  • ClassTooLong: abp (LearningMpaAbp.Web/Abp/Framework/scripts/abp.js)
  • Coverage not measured — no coverage collector is wired up
  • Documentation: no contributor guidance (README.md)
  • Documentation: no installation or build instructions (README.md)
  • Documentation: no usage examples (README.md)
  • Duplicated block (10 lines × 2) (LearningMpaAbp.Web/Controllers/BackendTasksController.cs)
  • Duplicated block (11 lines × 2) (LearningMpaAbp.Web/Controllers/AccountController.cs)
  • Duplicated block (15 lines × 3) (LearningMpaAbp.Web/Controllers/AddressController.cs)
  • Duplicated block (19 lines × 2) (LearningMpaAbp.Application/Users/Dto/UserListDto.cs)
  • Duplicated block (21 lines × 2) (LearningMpaAbp.Web/Controllers/AddressController.cs)
  • Duplicated block (21–25 lines × 2) (LearningMpaAbp.Web/Controllers/AccountController.cs)
  • Duplicated block (22–23 lines × 3) (LearningMpaAbp.Weixin/Controllers/WeixinController.cs)
  • Duplicated block (24 lines × 2) (LearningMpaAbp.EntityFramework/Migrations/SeedData/HostRoleAndUserCreator.cs)
  • Duplicated block (34–35 lines × 2) (LearningMpaAbp.Weixin/Controllers/WeixinController.cs)
  • FileTooLong: Scripts/bootstrap.js (LearningMpaAbp.Web/Scripts/bootstrap.js)
  • FileTooLong: Scripts/bootstrap.js (LearningMpaAbp.Weixin/Scripts/bootstrap.js)
  • …and 187 more

API surface

  • Unchanged — 1 HTTP endpoints

Architecture

  • Unchanged — 1 containers · 0 contexts · 0 edges

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

sheng-jie/LearningMpaAbp was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 2bf14b11370a916d063c2050bb0d575481e6c5c6 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-28e75b8e3254.