-
Made-up example: 2.03 kg recorded. Production footprints use global averages. The example is not saved in your log.
-
The annual half-waste figure is a conditional scenario, not verified savings.
-
Record edible portions and see the proxy category and assumptions before adding an entry.
-
Fictional demo: 200 g in one completed week, 100 g in the next. This describes logs, not proven environmental impact.
-
Current phone view in dark mode, using the made-up example.
What Scraps does
Scraps helps households, shared flats and student kitchens record edible food waste and choose a habit to change. Log food in grams or familiar portions, see its estimated production footprint, and compare two fully recorded weeks. The log stays in the browser.
Why food waste
Households generated about 631 million tonnes of food waste in 2022, according to the UNEP Food Waste Index Report 2024. Its household estimate includes inedible parts. Scraps tracks edible portions, so it does not score a household against UNEP's 79 kg per-person annual average.
Small amounts can matter differently. The app uses global production averages from Poore & Nemecek (2018), via Our World in Data. Weight, greenhouse gas emissions and freshwater withdrawals are separate views, helping a household see which food to focus on.
Try it
- Open the live app and choose Show a made-up example week. This two-person example totals 2.03 kg and about 14 kg CO2e in estimated production emissions. It never replaces or saves over your own log.
- Find the food with the largest estimated emissions. In the example, beef leads; switch the chart to Weight and milk comes first.
- Choose Back to my log. Record the edible portion of food thrown away, using one of 29 food choices. For mixed meals, enter the ingredients separately. The form names the dataset category and any cooked-weight conversion.
- Mark each day complete after recording all its waste, including days with none. Unchecked days stay missing data. Adding or removing an entry reopens that day.
- After 14 completed days, compare the latest seven with the preceding seven. The app shows the change in recorded kilograms and, where the baseline is nonzero, the percentage change.
Watch the current captioned walkthrough. Every input in the recording is a labelled demonstration, not a household trial.
Environmental impact and its limits
Scraps connects a record to a practical next step: identify a high-footprint food, try a storage or portioning change, then compare completed logs. Recommendations follow the food group and the reason responsible for the most waste by weight. Food-safety reminders link to the UK Food Standards Agency; packaging and local guidance still apply.
The app has not demonstrated a real-world reduction in waste or emissions. A lower logged weight can reflect fewer meals, a different household size or different recording habits. Its comparison reports the logs, without claiming causation.
Annual projections appear only after all seven days are marked complete. They assume that week repeats for a year. The half-waste scenario uses the same assumption and global production factors; it is not verified savings. The made-up example illustrates the calculation only.
How it works
- React, TypeScript and Vite serve a static page. No account, upload or analytics is required. A Content Security Policy blocks application network connections; the hosting service still receives normal page requests.
- Global mean greenhouse gas and freshwater-withdrawal factors come from Poore & Nemecek (2018), as published by Our World in Data. They estimate production through retail, excluding cooking at home, the journey home and disposal.
- Food choices use proxy categories: bread and pasta use Wheat & Rye, beef uses Beef (beef herd), and fish uses Fish (farmed). A particular product may differ substantially.
- Cooked rice, pasta and pulses are converted to an approximate dry weight by dividing by 2.8, 2.4 and 2.5. These are assumptions, not measurements of a specific meal.
- The log is stored locally. Invalid stored rows are excluded with a warning; original malformed data is retained for recovery. A failed save is visible. Browser storage can still be cleared or become unavailable, and there is no account sync.
Validation
The current version passes 23 unit tests and 8 browser tests on the production build. Coverage includes calculation boundaries, invalid dates and rows, recovery of stored data, example isolation, incomplete weeks, zero baselines, completed-week comparisons, reloads and storage failure.
Browser checks also cover keyboard submission, phone-width overflow, light and dark modes, and axe accessibility scans with no reported violations in the tested states. These checks verify software behaviour, not environmental outcomes.
What changed during development
An incomplete log can look like a low-waste week. Explicit completion marks make the distinction visible. A household benchmark also needs the same measurement scope, so the app now reports edible-food weight per person in the current window instead of comparing it with UNEP's broader annual total. The example has its own temporary state to keep it out of personal records.
Credits and disclosure
Built during Green Shift Hacks 2026, beginning October 22, 2026. The initial project was built with Claude (Anthropic); Codex (OpenAI) assisted with the October 24 improvements, tests, recording script and documentation. The example data and walkthrough inputs are fictional.
Data: Poore & Nemecek (2018), Science 360(6392), via Our World in Data (CC BY 4.0); context from UNEP's Food Waste Index Report 2024. Libraries and tools: React, TypeScript, Vite, Vitest, Testing Library, Playwright and axe-core. The current walkthrough is captioned and has no narration.
Source code and local setup, MIT licensed.
Built With
- axe-core
- github
- our-world-in-data
- playwright
- react
- typescript
- vite
- vitest
Log in or sign up for Devpost to join the conversation.