https://github.com/jonathanpotts/recipecatalog
Recipe Catalog is a multilayered .NET 8 project showcasing a Web catalog for recipes with AI capabilities.
https://github.com/jonathanpotts/recipecatalog
asp-net-core asp-net-core-identity azure-app-service azure-openai blazor bootstrap csharp dotnet dotnet-core entity-framework-core minimal-api openai semantic-kernel
Last synced: 4 months ago
JSON representation
Recipe Catalog is a multilayered .NET 8 project showcasing a Web catalog for recipes with AI capabilities.
- Host: GitHub
- URL: https://github.com/jonathanpotts/recipecatalog
- Owner: jonathanpotts
- Created: 2024-01-17T00:03:42.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-13T17:54:52.000Z (8 months ago)
- Last Synced: 2024-11-13T18:39:22.593Z (8 months ago)
- Topics: asp-net-core, asp-net-core-identity, azure-app-service, azure-openai, blazor, bootstrap, csharp, dotnet, dotnet-core, entity-framework-core, minimal-api, openai, semantic-kernel
- Language: C#
- Homepage: https://jonathanpotts-recipecatalog.azurewebsites.net
- Size: 11.6 MB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Recipe Catalog
[](https://github.com/jonathanpotts/RecipeCatalog/actions/workflows/dotnet.yml) [](https://codecov.io/gh/jonathanpotts/RecipeCatalog)
Recipe Catalog is a multilayered [.NET](https://dotnet.microsoft.com/) 8 project showcasing a Web catalog for recipes with AI capabilities.
This project contains continuous integration (CI) and continuous deployment (CD) workflows using [GitHub Actions](https://docs.github.com/actions). Code coverage reports are uploaded to [Codecov](https://codecov.io/). The web app is deployed to [Azure Web Apps (Azure App Service)](https://azure.microsoft.com/products/app-service/web/).
## Projects
### RecipeCatalog.AIDataGenerator
[RecipeCatalog.AIDataGenerator](src/RecipeCatalog.AIDataGenerator/) is a console app that generates example data for the catalog. Technologies used:
- [.NET](https://dotnet.microsoft.com/)
- [Generic Host](https://learn.microsoft.com/dotnet/core/extensions/generic-host)
- [Semantic Kernel](https://learn.microsoft.com/semantic-kernel/overview/?tabs=Csharp)
- [SkiaSharp](https://github.com/mono/SkiaSharp)
- [Spectre.Console](https://spectreconsole.net/)### RecipeCatalog.Application
[RecipeCatalog.Application](src/RecipeCatalog.Application/) is the application layer for the project. Technologies used:
- [Resource-based Authorization](https://learn.microsoft.com/aspnet/core/security/authorization/resourcebased)
- [FluentValidation](https://github.com/FluentValidation/FluentValidation)
- Markdown ([Markdig](https://github.com/xoofx/markdig))
- Snowflake IDs ([IdGen](https://github.com/RobThree/IdGen))### RecipeCatalog.Application.Contracts
[RecipeCatalog.Application.Contracts](src/RecipeCatalog.Application.Contracts/) contains the service interfaces and DTO models for the application layer.
### RecipeCatalog.BlazorApp
[RecipeCatalog.BlazorApp](src/RecipeCatalog.BlazorApp/) is a Blazor web app for viewing and managing recipes. Technologies used:
- [ASP.NET Core](https://dotnet.microsoft.com/apps/aspnet)
- [Blazor](https://learn.microsoft.com/en-us/aspnet/core/blazor)
- [ASP.NET Core Identity](https://learn.microsoft.com/aspnet/core/security/authentication/identity)
- [Library Manager (LibMan)](https://learn.microsoft.com/aspnet/core/client-side/libman)
- [Bootstrap](https://getbootstrap.com/)
- [Bootstrap Icons](https://icons.getbootstrap.com/)
- [Dark Mode](https://getbootstrap.com/docs/5.3/customize/color-modes/)### RecipeCatalog.BlazorApp.Client
[RecipeCatalog.BlazorApp.Client](src/RecipeCatalog.BlazorApp.Client/) contains the Blazor WebAssembly components for the RecipeCatalog.BlazorApp project.
### RecipeCatalog.Domain
[RecipeCatalog.Domain](src/RecipeCatalog.Domain/) is the domain layer for the project. Technologies used:
- [Entity Framework Core](https://learn.microsoft.com/ef/core/)
- [Migrations](https://learn.microsoft.com/ef/core/managing-schemas/migrations/)
- [SQLite](https://www.sqlite.org/)### RecipeCatalog.Domain.Shared
[RecipeCatalog.Domain.Shared](src/RecipeCatalog.Domain.Shared/) contains the value objects for the domain layer.
### RecipeCatalog.WebApi
[RecipeCatalog.WebApi](src/RecipeCatalog.WebApi/) is a REST Web API that uses the [RecipeCatalog.WebApi.Shared class library](src/RecipeCatalog.WebApi.Shared/) to provide CRUD operations for managing recipes. Technologies used:
- [ASP.NET Core](https://dotnet.microsoft.com/apps/aspnet)
- [Minimal APIs](https://learn.microsoft.com/aspnet/core/fundamentals/minimal-apis/overview)
- [ASP.NET Core Identity](https://learn.microsoft.com/aspnet/core/security/authentication/identity)
- [Swagger / OpenAPI](https://swagger.io/) ([Swashbuckle](https://github.com/domaindrivendev/Swashbuckle.AspNetCore))### RecipeCatalog.WebApi.Shared
[RecipeCatalog.WebApi.Shared](src/RecipeCatalog.WebApi.Shared/) contains the minimal APIs that provide CRUD operations for managing recipes. Technologies used:
- [ASP.NET Core](https://dotnet.microsoft.com/apps/aspnet)
- [Minimal APIs](https://learn.microsoft.com/aspnet/core/fundamentals/minimal-apis/overview)### Tests
#### RecipeCatalog.Application.Tests
[RecipeCatalog.Application.Tests](tests/RecipeCatalog.Application.Tests/) is a project containing tests for the [RecipeCatalog.Application](src/RecipeCatalog.Application/) project. Technologies used:
- [xUnit](https://xunit.net/)
- [Moq](https://github.com/devlooped/moq)#### RecipeCatalog.BlazorApp.Tests
[RecipeCatalog.BlazorApp.Tests](tests/RecipeCatalog.BlazorApp.Tests/) is a project containing tests for the [RecipeCatalog.BlazorApp](src/RecipeCatalog.BlazorApp/) project. Technologies used:
- [xUnit](https://xunit.net/)
- [bUnit](https://bunit.dev/)#### RecipeCatalog.BlazorApp.Client.Tests
[RecipeCatalog.BlazorApp.Client.Tests](tests/RecipeCatalog.BlazorApp.Client.Tests/) is a project containing tests for the [RecipeCatalog.BlazorApp.Client](src/RecipeCatalog.BlazorApp.Client/) project. Technologies used:
- [xUnit](https://xunit.net/)
- [bUnit](https://bunit.dev/)#### RecipeCatalog.Domain.Tests
[RecipeCatalog.Domain.Tests](tests/RecipeCatalog.Domain.Tests/) is a project containing tests for the [RecipeCatalog.Domain](src/RecipeCatalog.Domain/) project. Technologies used:
- [xUnit](https://xunit.net/)
#### RecipeCatalog.WebApi.Shared.Tests
[RecipeCatalog.WebApi.Shared.Tests](tests/RecipeCatalog.WebApi.Shared.Tests/) is a project containing tests for the [RecipeCatalog.WebApi.Shared](src/RecipeCatalog.WebApi.Shared/) project. Technologies used:
- [xUnit](https://xunit.net/)
- [Moq](https://github.com/devlooped/moq)#### RecipeCatalog.WebApi.Tests
[RecipeCatalog.WebApi.Tests](tests/RecipeCatalog.WebApi.Tests/) is a project containing tests for the [RecipeCatalog.WebApi](src/RecipeCatalog.WebApi/) project. Technologies used:
- [xUnit](https://xunit.net/)
- [ASP.NET Core Integration Tests](https://learn.microsoft.com/aspnet/core/test/integration-tests) ([Microsoft.AspNetCore.Mvc.Testing](https://www.nuget.org/packages/Microsoft.AspNetCore.Mvc.Testing))## Seed Data
Seed data was created using the [RecipeCatalog.AIDataGenerator](src/RecipeCatalog.AIDataGenerator/) project with [GPT-3.5 Turbo](https://platform.openai.com/docs/models/gpt-3-5), [Embedding V3 small](https://platform.openai.com/docs/models/embeddings), and [DALL-E 3](https://platform.openai.com/docs/models/dall-e).