Chapter 6 · Own build6•1
CommonGround
A family app for the week: groceries, dinners and recipes, the freezer, to-dos and a shared calendar. Self-hosted, built for Kevin's own household first.
One Nx monorepo, written mostly with Claude Code. Every feature is cut the same way, and an MCP server lets an assistant add recipes and plan the week's dinners from the family's own data.
- Entrant
- Kevin, own build
- Period
- 2025 – now
- Status
- In use at home, self-hosted
Wiring key
CommonGround6•2
The app and an AI assistant come in separately and meet at the service, where a feature’s rules live.
Two columns that meet at the bottom. On the left, the app: an Angular page, its signal store, its API service and an Express route handler. On the right, an AI assistant such as Claude or ChatGPT reaches /api/mcp with a scoped token, and every call runs through a pipeline: a rate limit, the scope check, a confirmation gate for anything that deletes, the tool, a message to the household and an audit row. Both doors call the same service, which reads and writes through Prisma to PostgreSQL. When the assistant changes something, the household's socket.io room tells every open page, which updates on its own.
Each feature is a back-end and a front-end lib in one Nx monorepo. The four the assistant can reach keep their rules in services.
| Feature | Endpoints | Services | MCP tools |
|---|---|---|---|
| Groceries | 15 | 10 | |
| Meal planner | 9 | 8 | |
| Recipes | 18 | 8 | |
| Freezer | 5 | 5 | |
| To-do | 7 | not yet | · |
| Calendar | 6 | not yet | · |
| Households | 10 | not yet | · |
| Sign-in | 6 | not yet | · |
Plus get_context | 32 | ||
Every suggestion comes from the household’s own plan, history and recipes.
A sequence between you, the assistant, CommonGround and the open page. 1. You to Assistant: “Plan this week’s dinners”. 2. Assistant to CommonGround: get_meal_plan · get_meal_history. This week, and what you ate lately. 3. Assistant to CommonGround: search_recipes. Your own recipe library. 4. Assistant to You: A dinner for each empty day. Nothing is written until you agree. 5. Assistant to CommonGround: plan_meal. One per day, the whole recipe copied in. 6. Assistant to CommonGround: send_week_ingredients_to_groceries. Shared ingredients added up. 7. CommonGround to Open page: household:changed. The week and the list update live.
- A link in the chat
- add_recipeIngredient lines parsed into amount, unit and name
- set_recipe_imageDownloaded and kept by the server
- The open page follows
Notes
- Every count on these pages is read off the private Commonground-nx repo.