We're going to start from the very beginning by installing the software necessary to develop with Apostrophe and setting up an empty project to work with. At the end of this tutorial you will have all the tools you need to start building a website.
These instructions are for MacOS X, which most developers use to test code that will eventually deploy to Linux. Also see this lovely HOWTO for Windows contributed by Michael Brown.
This will get you set up on a Mac running OSX 10.9 or better.
We're going to install the following software:
- XCode (required for all compilation on Macs)
- Homebrew (for easy installing)
- Node & NPM
- Imagemagick (for image manipulation- required by Apostrophe)
XCode is provided free of charge by Apple. Install it via the Mac App Store.
You will also need the Xcode Command Line Tools, which can be installed by going to Xcode -> Preferences ... -> Downloads.
Launch the "Terminal" app. From this point on, anything
formatted like this is meant to be run at the terminal prompt. Basic familiarity with the terminal is very helpful for node and Apostrophe development.
Homebrew is a convenient software manager that makes it easier to keep track of and update your software packages.
Installing Homebrew is easy:
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
One command is all it takes:
brew install node
The terminal prompt finds commands in folders listed in an environment variable called PATH. We'll need to add node's directory to our $PATH in order for it to work its magic.
Create a plaintext file called
.profile in your home directory if you don't already have one and open it with your text editor (if you haven't used one before, you'll get TextEdit):
touch ~/.profile && open ~/.profile
In this new file, add these two lines:
export NODE_PATH="/usr/local/lib/node" export PATH="/usr/local/share/npm/bin:$PATH”
You should verify that this worked by opening a new Terminal tab and running:
It should echo the current PATH setting as a set of colon-separated values, beginning with your additions.
NPM may or may not have been installed with Node. Try:
If you get a "not found" error, run this:
curl -L https://npmjs.org/install.sh | sh
You'll need git to manage your source code. Macs come with it, but we suggest you get the latest via homebrew:
brew install git
MongoDB is the database that Apostrophe uses. You can install it with homebrew:
brew install mongo
During the mongo install, it will print out instructions for starting mongo on login (recommended for developers), which should look like this:
==> Caveats To have launchd start mongodb at login: ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents Then to load mongodb now: launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist Or, if you don't want/need launchctl, you can just run: mongod
Run those, open a new tab and try:
It should start an interactive mongo prompt. ctrl+c to exit.
brew install imagemagick
Now you have the
identify command line tools, which Apostrophe uses to scale and crop images.
The Apostrophe Sandbox is a great starting point for new projects. It has all of the files we'll need to get started and it can easily be "gutted" to create an empty site.
Clone the sandbox with
git. You'll have to
cd into the directory where you keep your projects (
Sites in this example).
cd Sites git clone https://github.com/punkave/apostrophe-sandbox cd apostrophe-sandbox
Node's package manager to the rescue! Just type:
This file contains settings that distinguish your servers from one another... TL;DR: just copy the provided example!
mkdir data cp local.example.js data/local.js
Edit the new
local.js to remove or comment out the
node app apostrophe:reset
Use this task carefully! This creates a new database with a homepage in it. If there's already a database it will overwrite it.
This task creates a mongo database called
apostrophe-sandbox. When configuring your project you can provide a
shortName which it will use as the real database name.
http://localhost:3000 to see your sandbox site.
To log in, visit:
http://localhost:3000/login or use the provided login button. You can get rid of the login button and Apostrophe admin bar for logged-out users by setting
loginButton: false in
The test username is
admin and the test password is
demo. If you've never used the Apostrophe interface before, now would be a good time to play around, add some pages, and use the editing tools!
Now that you have the Apostrophe Sandbox there are a few steps you can take to turn it into your own project with a dedicated git repo.
Start by editing
package.json to reflect your project. You should also change the
shortName variable in
app.js– this is what your database will be called.
apostrophe-demo-login module from
app.js and from your
You probably don't want the Sandbox's git history associated with your project. To remove it we have to run the following command within your project folder in the terminal, which will remove the existing git repo and create a new one (watch out for typos!):
rm -rf .git && git init
At this point you could create an initial commit to get your new git repo started:
git add -A && git commit -m 'initial commit'
If you're adding your project to GitHub, follow these instructions. If not, skip this step!
Create an empty repo on GitHub, BitBucket, or whatever git service you are using. Grab the remote url, which should look something like
To point your local git repo to your remote repo, run the following command using your remote URL:
git remote set-url origin firstname.lastname@example.org:myaccount/myproject.git
If you've made an initial commit you can now push your repo to the remote server:
git push origin master
Now that you have your own project set up it's time to dig in and learn how to navigate an Apostrophe project. The next tutorial will give you a sense of the file structure and how to create your own page templates.