LinkDish saves recipes from links and turns them into a clean, portable recipe library across web and mobile.
- Web: app.linkdish.ca
- Product site: linkdish.ca
- API: api.linkdish.ca
Repository
This pnpm workspace contains:
apps/web: React and Vite web applicationapps/mobile: Expo and React Native mobile applicationservices/extractor-api: Fastify recipe extraction APIpackages: shared contracts, domain logic, API client, UI, and utilitiessite: public product, privacy, and support pages
See docs/architecture.md for a high-level system map.
Local development
Requirements:
- Node.js 20 or newer
- pnpm 10.8.0
Install and validate the workspace:
pnpm install --frozen-lockfile pnpm validate
Copy the relevant example environment file before running an application:
apps/web/.env.exampleapps/mobile/.env.exampleservices/extractor-api/.env.example
Start a development target:
pnpm dev:site pnpm dev:web pnpm dev:mobile pnpm dev:api
The static product site is served at http://localhost:4173; its analytics are
disabled on localhost. pnpm validate also checks its internal links, metadata,
sitemap, support form contract, and social-preview image. See
site/README.md for website development and deployment details.
Do not commit credentials, production data, or private environment files.
Contributions and security
Please read CONTRIBUTING.md before opening an issue or pull request. Report security concerns privately as described in SECURITY.md.
License
This repository is source-visible, not open source. Copyright (c) 2026 Robert Gordon. All rights reserved.
The source is published for transparency and review. No permission is granted to copy, modify, distribute, deploy, sublicense, sell, or create derivative works without prior written permission. See LICENSE.