MeadTools is an all-in-one mead, wine, and cider recipe-building calculator. It aims to have everything you need to build a recipe in one place, providing accurate estimates for volumes of fruit so you don't have to do a bunch of extra calculations.
- MeadTools
- Recipe Builder: Create, save, and manage your recipes.
- Extra Calculators: Various tools for calculations related to fermentation.
- User Accounts: Save recipes, manage preferences, and more.
- Public Recipe Sharing: Share recipes with other users.
- Wireless Hydrometer Integration: Connect Wireless Hydrometer devices to track fermentation data.
- API Access: API documentation is available at the /api route.
MeadTools runs locally using Next.js 16, PostgreSQL, and Docker for a consistent development environment.
The recommended setup uses a Dockerized Postgres database and a one-command bootstrap script so new developers can get up and running quickly.
The repository is an npm workspace: the production Next.js application lives
in apps/web, while reusable domain, schema, contract, and API client packages
live in packages.
- Node.js (latest LTS recommended)
- npm
- Docker Desktop (must be running)
This is the fastest and safest way to get MeadTools running locally.
git clone https://github.com/ljreaux/meadtools-nextjs-migration
cd meadtoolsnpm installnpm run dev:setupThis command will:
- Create .env.local from .env.example if it doesn’t exist
- Copy the local environment into the web workspace
- Start PostgreSQL via Docker
- Wait for the database to become healthy
- Push the Prisma schema
- Seed the database with test data
npm run dev- App: http://localhost:3000
- Prisma Studio opens automatically
If you prefer to run steps individually:
npm run db:up
npm run db:push --workspace @meadtools/web
ALLOW_DB_RESET=true npm run db:seed --workspace @meadtools/web
npm run devMeadTools uses PostgreSQL locally via Docker.
- The database is fully disposable
- No local PostgreSQL installation is required
- Schema is managed via prisma db push
- Seed data is deterministic and safe-guarded
To completely wipe and reseed the local database:
npm run db:resetWARNING: This deletes all local data.
The command is protected by an environment guard and will not run against production databases.
Translation JSON files under packages/i18n/locales/ are versioned in Git.
Feature work changes English source strings. After an English change reaches
preview, self-hosted Weblate generates German suggestions using the project
glossary and informal-tone rules, then commits them back to preview as
needing review. See the translation workflow
before changing translation files or reviewing German copy.
- Next.js 16
- React 19
- TypeScript
- Prisma
- PostgreSQL (Dockerized for local development)
- NextAuth (Google auth optional; recommended disabled in dev)
- Custom Auth (access + refresh token strategy)
- ShadCN UI / Radix UI
- Tailwind CSS
- i18next + react-i18next
- Weblate (self-hosted translation review and suggestions)
- MDX (for lightweight content pages like release notes)
Contributions are welcome.
- Fork the repository
- Create a feature branch
- Commit your changes
- Open a pull request
- Follow existing code style (default Prettier config)
- Document new features
- Test changes locally before submitting
This repo supports lightweight content pages written in MDX (Markdown + React components).
- MDX files are used for simple content like release notes.
- Currently, the only MDX page in the app is the 3.5 release notes, and it is English-only.
- MDX supports GitHub-flavored Markdown and can render React components as needed.
Notes:
- Existing routes will not be overwritten
- Be careful about file/route naming to avoid conflicts
This project is licensed under the MIT License.
Join the community on Discord to discuss features, get help, and contribute:
MeadTools is also live here.