Before going any further, make sure your project builds and runs from a clean environment. This will help clarify any wayward dependencies or specific installation requirement that may have been forgotten in an old build tree.
Creating a checklist
A snap’s requirements reflect those of the application itself.
If you’re a developer working on the application, or a technical user familiar with a project, a snap’s requirements won’t contain any surprises; they’re what you need to build your application.
Split roughly into their relevance, and the order you should tackle each requirement, here’s what you need to know:
1. Language/Framework/Build system (mandatory)
This is the foundation of your snap. It defines how your snap is built and is often an extension of the programming language you’re using. Examples include Python applications using PyPI and Go projects using go get, but also build systems like cmake and platforms like Electron.
Snapcraft uses plugins to create the build environment, and there are plugins for many of the most popular build systems. See Supported plugins for more details.
Applications can be built using a single part with a single plugin, or from multiple parts and multiple plugins, depending on their complexity.
2. Toolkits and desktop support (optional)
Many applications use a toolkit, such as Qt or GTK, to provide both functionality and better system integration.
There are recipes for incorporating many popular toolkits into your snap, either by pasting pre-configured snippets into your snap’s snapcraft.yaml, or by using a new Snapcraft feature called Extensions.