Skip to content

Repository files navigation

MeadTools

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.


Features

  • 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.

Installation

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.


Prerequisites

  • Node.js (latest LTS recommended)
  • npm
  • Docker Desktop (must be running)

Quick Start (Recommended)

This is the fastest and safest way to get MeadTools running locally.

1. Clone the repository

   git clone https://github.com/ljreaux/meadtools-nextjs-migration
   cd meadtools

2. Install dependencies

npm install

3. Run the setup script

npm run dev:setup

This 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

4. Start the dev server

npm run dev

Manual Setup (Advanced)

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 dev

Database

MeadTools 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

Resetting the Database

To completely wipe and reseed the local database:

npm run db:reset

WARNING: This deletes all local data.
The command is protected by an environment guard and will not run against production databases.


i18n / Translations

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.


Tech Stack

  • 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)

Contributing

Contributions are welcome.

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Open a pull request

Contribution Guidelines

  • Follow existing code style (default Prettier config)
  • Document new features
  • Test changes locally before submitting

MDX Content Pages

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

License

This project is licensed under the MIT License.


Community & Support

Join the community on Discord to discuss features, get help, and contribute:


MeadTools is also live here.

Sponsor this project

Used by

Contributors

Languages