Easy-to-manage touch screens
Free, open-source touch screens. Guided USB setup, a drag-and-drop editor and local control. Made for Home Assistant.
Keep recipes, pantry stock, shopping lists, and meal plans together with Kotlet.
LifestyleC# · TypeScriptGitHub @avresialOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Aplikacja do komponowania obiadów
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A calmer way to run your kitchen.
Kotlet keeps your recipes, pantry, meal plans, and shopping list in one thoughtful
place — so you can spend less time organizing and more time cooking. It's built for
real home kitchens, where the small daily question "what should we eat?" turns into
dinner on the table.
Everything in Kotlet is connected. Plan a meal and its ingredients flow into your
shopping list; track your pantry and see what's running low before it becomes a
last-minute surprise.Read the full README ↗A calmer way to run your kitchen.
Kotlet keeps your recipes, pantry, meal plans, and shopping list in one thoughtful place — so you can spend less time organizing and more time cooking. It's built for real home kitchens, where the small daily question "what should we eat?" turns into dinner on the table.
Everything in Kotlet is connected. Plan a meal and its ingredients flow into your shopping list; track your pantry and see what's running low before it becomes a last-minute surprise.
Open Kotlet and see what's cooking today — quick stats, the planned menu and its ingredients, household participants, shopping progress, newest recipes, recent ingredients, and what's running low in the pantry, all at a glance.
Create and edit family favorites and new discoveries with ingredients, servings, meal types, step-by-step instructions (written in Markdown), nutrition, costs, and up to ten photos. Upload images, reorder the gallery, set alt text, and search for recipe images from Pexels with source attribution. Recipe lists can be searched and filtered by meal type or multiple ingredients, and recipe pages can be shared publicly.
Paste a YouTube or TikTok link and Kotlet extracts a recipe draft from the video. Review the title, instructions, servings, and matched ingredients before saving; missing details, proposed new ingredients, and possible duplicates are called out for you. AI-assisted recipes retain their source URL and provenance.
Lay out five meal slots across a 28-day overview. Add recipes or single ingredients, drag meals between slots and days, copy a day or week, and set the household members and guests who are eating. Kotlet works out servings, calories, cost per meal, and a daily receipt, with a one-click path from planned meals to the shopping list.
Generate a list for a date range from your meal plan, or add items directly. Quantities, units, categories, and prices come from the ingredient catalogue; items are grouped for shopping, can be checked off, cleared when purchased, and printed as a receipt.
Track quantities, units, expiration dates, and storage locations such as the refrigerator, freezer, and cabinet. Search and filter your stock, see recipes you can make from what you have, and move low or empty items onto the shopping list.
Recipes, planning, pantry, and shopping all draw on one catalogue. Ingredients support categories, measurement and piece units, calories, prices, translations, allergens, attributes, and dietary suitability. Optional AI autofill can populate ingredient details, which you can review and edit.
Share a home with other accounts, invite or remove members, switch between multiple homes, and add guests to individual meals. Personal settings include profile and password management, English and Polish, dietary preferences, allergens, intolerances, and excluded ingredients. You can also configure a personal AI provider and connect assistants such as Claude or ChatGPT through Kotlet's OAuth-protected MCP integration for recipes, meal planning, shopping, and household data. Hosts that support MCP Apps can render recipes as interactive cards inside the conversation (see docs/mcp-apps-recipe-ui.md). Codex can install the same connection as a plugin, together with a recipe-import workflow skill (see plugins/kotlet/README.md).
Administrators get a role-protected area for searching and managing users and configuring video-transcription settings.
You'll need: the .NET 10 SDK, Node.js 22.22+ or 24.x with npm, and a Docker-compatible container runtime.
dotnet run --project src/aspire/Kotlet.AppHost
This starts everything together — the API, the Angular app, and a local PostgreSQL database — and shows their addresses in the .NET Aspire dashboard. Open the Angular app's URL to use Kotlet.
In development, two sample accounts are created automatically so you can sign in right away:
| Password | Role | |
|---|---|---|
[email protected] | TestUser123! | Regular user |
[email protected] | Admin123! | Administrator |
Sample accounts are only created in the Development environment.
For a quick spin without a container runtime, the API can use a temporary in-memory SQLite database:
dotnet run --project src/backend/Kotlet.Api --launch-profile sqlite
Then start the frontend in a second terminal:
npm --prefix src/frontend start
The backend is organized by feature (Recipes, Meal Planner, Ingredients, Pantry, Shopping, Auth, …) with dependencies pointing inward to the domain. The API is the only component that talks to the database; the browser never connects to it directly. For more detail see docs/frontend-architecture.md and docs/supabase-connection.md.
Kotlet is deployed as two pieces — an API and a static frontend — backed by a managed
PostgreSQL database. Pushing to the main branch deploys both automatically through
GitHub Actions.
| Piece | Hosted on | Workflow | Trigger |
|---|---|---|---|
| Backend API | Azure Web App | main_kotlet.yml | push to main |
| Frontend | GitHub Pages | github-pages.yml | push to main (frontend changes) |
| Database | Supabase (PostgreSQL) | applied manually (see below) | — |
Every pull request and every push to develop also runs the
CI workflow, which builds and tests both the frontend and
the backend.
On a push to main, the workflow builds the frontend, publishes the .NET API, signs
in to Azure with a federated identity, and deploys to the Kotlet Web App.
Configure these as secure settings on the Web App (never commit them):
# PostgreSQL connection string (Supabase)
$env:ConnectionStrings__kotletdb = 'Host=<host>;Port=5432;Database=postgres;Username=<user>;Password=<password>;SSL Mode=Require;Trust Server Certificate=true'
# JWT signing key — a unique random secret of at least 32 bytes
$env:Jwt__SigningKey = '<a-random-secret-of-at-least-32-bytes>'
Access tokens are short-lived JWTs; refresh tokens are delivered only through the
HTTP-only kotlet_refresh cookie and stored as SHA-256 hashes.
On a push to main that touches the frontend, the workflow builds the Angular app
with the correct base href, adds an SPA fallback, and publishes it to GitHub Pages.
The production build points at the deployed Azure API
(src/frontend/src/environments/environment.ts).
The database lives in a Supabase PostgreSQL project, isolated in the kotlet schema
(application tables and their EF Core migration history). Apply migrations from a
trusted machine with network access to Supabase:
# Review the SQL first when targeting a shared project
dotnet ef migrations script --idempotent `
--project src/backend/Kotlet.Infrastructure `
--startup-project src/backend/Kotlet.Api `
--output kotlet-migrations.sql
# Apply
dotnet ef database update `
--project src/backend/Kotlet.Infrastructure `
--startup-project src/backend/Kotlet.Api
Migrations must only create or modify objects inside the kotlet schema (including
kotlet.__EFMigrationsHistory); existing schemas and Supabase-managed objects must
stay untouched. If the kotlet schema is ever exposed through the Supabase Data API,
review and enable appropriate Row Level Security policies first. See
docs/supabase-connection.md for the exact connection
settings.
dotnet build Kotlet.slnx
npm --prefix src/frontend run build
tools/Kotlet.Bench measures two surfaces against the same seeded fixture and compares a
run against a recorded baseline: the MCP tool surface AI agents talk to (where the size of
the tool catalogue and the number of round trips matter far more than raw request latency),
and the REST endpoints the Angular app calls to paint each screen (response size and
database queries per call):
dotnet run --project tools/Kotlet.Bench # measure and diff against the baseline
dotnet run --project tools/Kotlet.Bench -- --save # record the current numbers as the baseline
It boots the API in-process against a private SQLite copy of the shared test fixture, so no database or deployment is needed. See docs/performance.md for what the numbers mean and how to point it at a deployed instance.