CardStock is a cross-platform tool for quickly and easily building programs. It provides a drawing-program-like editor for visually laying out your programs' parts, and a code editor for adding event-driven python code.
Python
287
1,082 commits
updated Aug 12, 2026
CardStock is a cross-platform tool for quickly and easily building graphical programs, called stacks, which can be made up of multiple pages called cards. It provides a drawing-program-like editor for building Graphical User Interfaces, and a code editor for adding event-driven python code.

There have been many open source projects in the past that tried to capture the fun and simplicity of building programs in HyperCard, but in my opinion, none of them offered the open-ended possibilities and ease of use that made HyperCard such a magical-feeling tool. So in the grand open source tradition, I built my own.
The guiding principles behind my vision for CardStock are the following, in order of importance:
The prebuilt applications for Mac and Windows have no external dependencies.
Running CardStock from source requires Python 3.9 or newer (3.12+ recommended), and wxPython 4.2.2 or newer (wxPython 4.2.4 currently recommended).
CardStock requires installing the python modules attrdict3(linux-only), wxpython,simpleaudio, PyInstaller, and requests.
For mp3 playback support, you'll need to install the lame package (mp3 decoder), and python's streamp3-313compat.
You can either:
install python3
download or clone this repository
Linux-only: apt install libasound2-dev libmp3lame-dev libwebkit2gtk-4.0-dev # or equivalent on non-debian/ubuntu distros
Mac-only: brew install lame
To include mp3 support: pip3 install streamp3-313compat
Note that this may require setting LDFLAGS and CPPFLAGS to allow finding the lame header and library files.
You may need to run this as something like
CPPFLAGS=-I/opt/homebrew/include LDFLAGS=-L/opt/homebrew/lib pip3 install streamp3-313compat or
CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib pip3 install streamp3-313compat
depending on where the lame library was installed.
pip3 install attrdict3 # installing this first is required for wxpython
pip3 install -r requirements.txt # note that wxpython can take a long time to build
run as: python -m cardstock or python3 designer.py
optionally run build.py to create your own standalone applications for the CardStock Designer application.
Linux-only: apt install libasound2-dev libmp3lame-dev libwebkit2gtk-4.0-dev # or equivalent on non-debian/ubuntu distros
Mac-only: brew install lame
To include mp3 support: pip3 install streamp3-313compat
Note that this may require setting LDFLAGS and CPPFLAGS to allow finding the lame header and library files.
You may need to run this as something like
CPPFLAGS=-I/opt/homebrew/include LDFLAGS=-L/opt/homebrew/lib pip3 install streamp3-313compat or
CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib pip3 install streamp3-313compat
depending on where the lame library was installed.
pip3 install attrdict3 # installing this first is required for wxpython
pip3 install cardstock # note that the dependency wxpython can take a very long time to build
run using the newly installed cardstock command, or python -m cardstock
Python
100.0%
CardStock is a cross-platform tool for quickly and easily building programs. It provides a drawing-program-like editor for visually laying out your programs' parts, and a code editor for adding event-driven python code.
Python
287
1,082 commits
updated Aug 12, 2026
CardStock is a cross-platform tool for quickly and easily building graphical programs, called stacks, which can be made up of multiple pages called cards. It provides a drawing-program-like editor for building Graphical User Interfaces, and a code editor for adding event-driven python code.

There have been many open source projects in the past that tried to capture the fun and simplicity of building programs in HyperCard, but in my opinion, none of them offered the open-ended possibilities and ease of use that made HyperCard such a magical-feeling tool. So in the grand open source tradition, I built my own.
The guiding principles behind my vision for CardStock are the following, in order of importance:
The prebuilt applications for Mac and Windows have no external dependencies.
Running CardStock from source requires Python 3.9 or newer (3.12+ recommended), and wxPython 4.2.2 or newer (wxPython 4.2.4 currently recommended).
CardStock requires installing the python modules attrdict3(linux-only), wxpython,simpleaudio, PyInstaller, and requests.
For mp3 playback support, you'll need to install the lame package (mp3 decoder), and python's streamp3-313compat.
You can either:
install python3
download or clone this repository
Linux-only: apt install libasound2-dev libmp3lame-dev libwebkit2gtk-4.0-dev # or equivalent on non-debian/ubuntu distros
Mac-only: brew install lame
To include mp3 support: pip3 install streamp3-313compat
Note that this may require setting LDFLAGS and CPPFLAGS to allow finding the lame header and library files.
You may need to run this as something like
CPPFLAGS=-I/opt/homebrew/include LDFLAGS=-L/opt/homebrew/lib pip3 install streamp3-313compat or
CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib pip3 install streamp3-313compat
depending on where the lame library was installed.
pip3 install attrdict3 # installing this first is required for wxpython
pip3 install -r requirements.txt # note that wxpython can take a long time to build
run as: python -m cardstock or python3 designer.py
optionally run build.py to create your own standalone applications for the CardStock Designer application.
Linux-only: apt install libasound2-dev libmp3lame-dev libwebkit2gtk-4.0-dev # or equivalent on non-debian/ubuntu distros
Mac-only: brew install lame
To include mp3 support: pip3 install streamp3-313compat
Note that this may require setting LDFLAGS and CPPFLAGS to allow finding the lame header and library files.
You may need to run this as something like
CPPFLAGS=-I/opt/homebrew/include LDFLAGS=-L/opt/homebrew/lib pip3 install streamp3-313compat or
CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib pip3 install streamp3-313compat
depending on where the lame library was installed.
pip3 install attrdict3 # installing this first is required for wxpython
pip3 install cardstock # note that the dependency wxpython can take a very long time to build
run using the newly installed cardstock command, or python -m cardstock
Python
100.0%