This design is a script to be used with OpenSCAD to create a bottle with a stopper. There are four bottles pre-made, which can be downloaded.
OpenSCAD is free software: https://openscad.org/
The script works with the 2021 version of OpenSCAD, but that is slow. It is better to use at least the 2024 version of OpenSCAD with "manifold" turned on.
The script "Bottle Designer.scad" can be opened in OpenSCAD. No other files are needed.
The bottle is designed in the preview mode (press F5 for the preview mode).
Select the top view (press Ctrl+4 for the top view).
The "Customizer" window should be turned on.
Use the sliders to adjust the x and y coordinates of the points.

The render mode will show the result (press F6 to render it). The option in the Customizer called “For Printing” should be selected when it is ready to print. That will put the stopper next to the bottle. After rendering, the stl or 3mf file can be exported.
The subdivision functions can be used for other things, therefor I put them in a library: https://github.com/Stone-Age-Sculptor/StoneAgeLib
When the top curls downwards, then support is needed. The "Fresh Water Potion" bottle needed support for the top. I used tree support (organic support) on the build plate.
Try to avoid too much overhang. The problems start often on the inside overhang curves. If that happens, then make a bottle that is less bulgy.
User Steve DeGroof has a "Vase Generator (with examples)". Read the description, it requires library files.
The "OpenSCAD wave vase designer" by jamcultur uses a sine wave for a curved vase: https://www.thingiverse.com/thing:4820713
Both the script and the created stl files have the license CC0 (Public Domain). You may design and print as many bottles as you want and sell them.
The author marked this model as their own original creation.