sheng-jie/LearningMpaAbp
27.2
Weak · 20 September 2026
5k
lines of production code
JavaScript
with C#
4
measurements over time
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.