Yadeh is a personal memory application for turning shared AI conversations into lasting, searchable knowledge. It preserves imported conversations as snapshots so an updated share link can be added to an existing conversation without losing earlier versions.
The application currently supports validating, downloading, and parsing public ChatGPT share links. The conversation domain model and SQLite persistence layer are implemented. Saving imports through the Blazor UI, search, knowledge extraction, and authentication are still in development.
- C# and .NET 8
- ASP.NET Core and Blazor Interactive Server
- Entity Framework Core 8 with SQLite
- Razor Components and CSS
- xUnit for domain and infrastructure tests
The solution follows a layered architecture:
Yadeh.Web
├── Yadeh.Application
└── Yadeh.Infrastructure
├── Yadeh.Application
└── Yadeh.Domain
Yadeh.Application
└── Yadeh.Domain
- Domain contains conversation aggregates, snapshots, messages, and domain validation.
- Application defines use-case models and persistence or external-service contracts.
- Infrastructure implements ChatGPT retrieval and parsing, repositories, Entity Framework Core mappings, migrations, and SQLite persistence.
- Web hosts the Blazor UI and application composition root.
Repository and Unit of Work patterns isolate persistence from application code. The next source-integration step introduces a shared-chat Adapter boundary and a Resolver so future providers can produce the same application snapshot model.
Install the .NET 8 SDK. SQLite is embedded in the application, so no database server or Docker container is required.
Restore dependencies and the repository-local Entity Framework tool:
dotnet restore Yadeh.sln
dotnet tool restoreApply the database migrations:
dotnet tool run dotnet-ef database update \
--project src/Yadeh.Infrastructure/Yadeh.Infrastructure.csproj \
--startup-project src/Yadeh.Web/Yadeh.Web.csprojRun the application over HTTP:
dotnet run --project src/Yadeh.Web --launch-profile httpOpen localhost:5050 in your browser.
To use HTTPS, first configure and trust the ASP.NET Core development certificate, then run:
dotnet run --project src/Yadeh.Web --launch-profile httpsThe HTTPS endpoint is localhost:7018.
dotnet build Yadeh.sln --configuration Release
dotnet test Yadeh.sln --configuration ReleaseThe default connection string is configured in
src/Yadeh.Web/appsettings.json:
Data Source=yadeh.db
SQLite database, shared-memory, and write-ahead log files are ignored by Git.
Schema changes are tracked through migrations in
src/Yadeh.Infrastructure/Persistence/Migrations.
Create a migration with:
dotnet tool run dotnet-ef migrations add YourMigrationName \
--project src/Yadeh.Infrastructure/Yadeh.Infrastructure.csproj \
--startup-project src/Yadeh.Web/Yadeh.Web.csproj \
--output-dir Persistence/MigrationsFor implementation details, see the developer documentation.