fengling-console/docs/task-01-create-project-structure.md

3.3 KiB

Task 1: Create Project Structure

Task Description

Files:

  • Create: src/Fengling.AuthService/Fengling.AuthService.csproj
  • Create: src/Fengling.AuthService/Program.cs
  • Create: src/Fengling.AuthService/appsettings.json

Implementation Steps

Step 1: Create project file

Run:

cd /Users/movingsam/Fengling.Refactory.Buiding/src
dotnet new webapi -n Fengling.AuthService -o Fengling.AuthService

Step 2: Update project file with dependencies

Edit: src/Fengling.AuthService/Fengling.AuthService.csproj

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net9.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="OpenIddict.AspNetCore" Version="7.2.0" />
    <PackageReference Include="OpenIddict.EntityFrameworkCore" Version="7.2.0" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="9.0.1" />
    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.3" />
    <PackageReference Include="Serilog.AspNetCore" Version="9.0.0" />
    <PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
    <PackageReference Include="OpenTelemetry" Version="1.11.0" />
    <PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.11.0" />
    <PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.11.0" />
    <PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.11.0" />
  </ItemGroup>
</Project>

Step 3: Create appsettings.json

Create: src/Fengling.AuthService/appsettings.json

{
  "ConnectionStrings": {
    "DefaultConnection": "Host=192.168.100.10;Port=5432;Database=fengling_auth;Username=movingsam;Password=sl52788542"
  },
  "OpenIddict": {
    "Issuer": "https://auth.fengling.local",
    "Audience": "fengling-api"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*"
}

Step 4: Commit

git add src/Fengling.AuthService/
git commit -m "feat(auth): create authentication service project structure"

Context

This is the first task of implementing the Fengling Authentication Service. We're building a standalone authentication service using OpenIddict for JWT token issuance and multi-tenant support. This task establishes the basic ASP.NET Core Web API project structure with all necessary dependencies including OpenIddict, EF Core, PostgreSQL, Serilog, and OpenTelemetry.

Architecture: ASP.NET Core Web API with OpenIddict for OAuth2/OIDC, PostgreSQL for user data.

Tech Stack: .NET 9.0, OpenIddict 7.2.0, EF Core 9.0, PostgreSQL, Serilog 9.0.0, OpenTelemetry 1.11.0.

Working Directory: /Users/movingsam/Fengling.Refactory.Buiding/src

Verification

  • Project file created successfully
  • Target framework set to net9.0
  • All NuGet packages added (latest versions)
  • appsettings.json configured with connection string and OpenIddict settings
  • Project builds successfully
  • Committed to git

Notes

  • OpenIddict packages updated to 7.2.0 (latest)
  • All dependencies updated to latest versions
  • Used .NET 9.0 as target framework