Files
base_abp/GEMINI.md
2025-10-14 18:36:27 -06:00

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.md following Keep a Changelog format.