forked / Architecture

1. Introduction and Goals

1.1 Requirements Overview

forked is an open-source (MIT), privacy-first recipe manager with a shopping list. It works offline and syncs optionally. Existing recipe managers tend to lock users into proprietary ecosystems, need connectivity, monetize data, and lack private household sharing.

CapabilityRequirement
RecipesCreate, edit, organize, search, plan; import from JSON files and photos; export to Schema.org and a lossless backup
Shopping listAdd recipe ingredients with amounts; categories group items by aisle
Offline-firstAll of the above works without a network
Optional syncKeep devices in sync. The deployment picks the mode: your own CouchDB with a login (self-hosted), or forked cloud with an account (Section 4.4)
PrivacyLocal storage first; AI import only with explicit consent; no tracking
LanguagesGerman and English, extendable

Target audience: home cooks, families sharing a household, privacy-conscious users, and contributors extending the open-source system.

The project is non-profit. An optional paid forked cloud is run by an operator outside this repository.

1.2 Quality Goals

PriorityQuality goalKey requirements
1UsabilityIntuitive mobile-first UI for kitchen and shopping tasks
2LearnabilityQuick to understand, minimal configuration
3Offline-FirstFull functionality without connectivity
4PrivacyUser-controlled data, local-first storage, secure handling of credentials and egress
5InternationalizationGerman and English, expandable

Secondary goals: Performance (fast search with 1000+ recipes), Reliability (convergent sync), Operability (env-driven Docker deployment for self-hosters), Evolvability (an operator can offer accounts without changing the client). Concrete scenarios are in Section 10.

1.3 Stakeholders

RoleExpectationWhere it shapes the architecture
End userEasy recipe management, offline access, privacyOffline-first, mobile-first UI
FamilyShared household collection across devicesShared-database sync, conflict convergence
Self-hosterSimple bootstrap, HTTPS, understandable recoveryDocker stack, login-only sync (Section 7.1)
OperatorRun forked cloud: accounts, device approval, sync tokensGateway outside the repository; the PWA fixes only the client contract (Section 7.3)
MaintainerSustainable complexity, clear decisionsOwns requirements and architecture decisions, reviews output
Coding agentComplete, unambiguous contextThese docs and CLAUDE.md are the primary interface; code and docs change together (Section 8.9)
ContributorTransparent contribution processPull requests welcome

View source on GitHub