2.4 KiB
2.4 KiB
Project Overview
This project is a hybrid ASP.NET Core + Next.js application combining:
- Backend: ASP.NET Core 9.0 Web API built on ABP Framework (ASP.NET Boilerplate) with JWT authentication
- Frontend: Next.js 15 with React 19 admin dashboard using shadcn-ui components
The application implements dynamic OIDC (OpenID Connect) authentication with external providers that can be configured at runtime.
Backend:
- Framework: ASP.NET Core 9.0
- O/RM: Entity Framework Core 9.0.5
- Authentication: OpenID Connect (OIDC)
- Database: PostgreSQL
Frontend:
- Framework: Next.js 15.3.2
- Language: TypeScript 5.7.2
- Styling: Tailwind CSS v4
- Components: Shadcn-ui
- State Management: Zustand
- Forms: React Hook Form
- API Communication: @hey-api/openapi-ts
Building and Running
.NET Backend
Build solution:
dotnet build ASPBaseOIDC.sln
Run Web API:
cd src/ASPBaseOIDC.Web.Host
dotnet run
Run database migrations:
cd src/ASPBaseOIDC.Migrator
dotnet run
Run tests:
cd test/ASPBaseOIDC.Tests
dotnet test
Add EF Core migration:
cd src/ASPBaseOIDC.EntityFrameworkCore
dotnet ef migrations add <MigrationName> --startup-project ../ASPBaseOIDC.Web.Host
Next.js Frontend
Location: All commands run from src/ASPBaseOIDC.Web.Ui/
Install dependencies:
pnpm install
Run dev server (with Turbopack):
pnpm dev
Build for production:
pnpm build
Start production server:
pnpm start
Lint:
pnpm lint
Lint and fix:
pnpm lint:fix
Format code:
pnpm format
Generate API types (from OpenAPI spec):
pnpm generate:api
Note: Backend must be running at https://localhost:44313
Development Conventions
- Backend: The backend follows the standard ASP.NET Core conventions.
- Frontend: The frontend uses ESLint and Prettier for linting and formatting. There are also pre-commit hooks set up with Husky to ensure code quality.
- API: The frontend uses @hey-api/openapi-ts to generate a typed API client from the backend's Swagger/OpenAPI specification. The generation script is defined in
package.json. - Changelog: For every change made to the codebase, update
CHANGELOG.mdfollowing Keep a Changelog format.