Vulcan uses a package-based architecture, meaning that the entirety of its codebase resides in packages.
Vulcan makes use of many different packages types, so it might be a good idea to get them straight before we move on.
These are listed in your
In addition to NPM, Meteor also features its own package management system used in parallel. Meteor Core Packages are the packages that make up the Meteor framework itself.
Meteor can also load packages from its package server. Remote packages must always follow the
username:package naming convention.
Finally, Meteor can also load packages from the local file system. These packages can be named whatever you want, and don’t need to follow the
Note that if both a local and remote Meteor package use the same name, Meteor will use the local copy.
Different Vulcan packages can play different roles. So here’s a quick overview of the different Vulcan package categories you’ll come across.
vulcan:core package contains the heart of Vulcan, and itself depends on a set of core packages:
Note that since
vulcan:core already includes these dependencies, you only need to make your own package depend on
These optional packages provide additional features for your Vulcan app.
Because Vulcan started its life as Telescope, a Hacker News-like forum app, it still includes quite a few packages that are made specifically to help you build a forum-type community app (enabled through the
As an example, the
vulcan:newsletter package can be used to send an email newsletter of your most recent posts and comments.
In addition, the following three packages contain the components, styles, and templates that make up the basic forum example:
Note that the majority of the forum packages specifically require the
vulcan:posts package. For example, the
vulcan:newsletter can currently only build a newsletter based on the
Posts collection. That being said, the goal is to eventually transform them into generic features package whenever possible, so that they can work with any Vulcan collection.
These contain the language strings used throughout Vulcan (for the app core, features packages, and forum packages). You need at least one of them enabled.
Accounts package contain the back-end authentication logic used by Meteor’s account system. You need at least one of them enabled.
Any other package that contains your own logic.
Out of the box, four example custom packages are provided:
example-moviescontains a bare-bones forms and data loading example.
example-instagramgoes a little bit further with a simple Instagram clone.
example-forumincludes the original Telescope forum app.
example-customizationshows how to customize and extend the forum example packages without having to modify their code directly.
Generally speaking, there are two ways a package can be added to your codebase. It can be a top-level dependency, or one of your packages can itself depend on it.
For example, the
example-movies package depends on
vulcan:core, so adding
example-movies will automatically add
vulcan:core as well. This is why
vulcan:core is not listed in your
example-movies can use the English text strings stored in
vulcan:i18n-en-us, it doesn’t depend on it. This means you can (for example) swap out
.meteor/packages to get French strings.
A complete list of all Meteor packages currently loaded is stored in the
Note that Meteor packages may be added even if they are not located within the Vulcan root directory, by setting the
METEOR_PACKAGE_DIRS environment variable. For example, the following commands will allow you to modify your
.profile file to add any package located in the
packages subdirectory of your home directory: