Vertigo is blogging platform similar to Ghost, Medium or Tumblr. What makes Vertigo different is that it has JSON API for reading and writing data and it is written in Go. Therefore, Vertigo is not only fast, but can be run using single binary on all major operating systems like Windows, Linux and MacOSX without the language development tools.
The frontend code is powered by Go's template/html
package, which syntax is similar to Mustache.js. The template files are in plain HTML and JavaScript (vanilla) only appears on few pages. JavaScript in general is aimed to be stripped down as much as possible to provide a better user experience on different devices. Vertigo also ships without any CSS frameworks, so it is easy to start customizing the frontend with the framework of your choice.
Thanks to the JSON API, it is easy to add your preferred JavaScript MVC on top of Vertigo. This means that you can create users, submit posts and read data without writing a single line of Go code. So basically, one could write a SPA application on top of Vertigo just by using JavaScript. Whether you want to take that path or just edit the HTML template files found in /templates/
is up to you.
##Features
- Installation wizard
- JSON API
- SQLite and PostgreSQL support
- Search
- Multiple account support
- Auto-saving of posts to LocalStorage
- RSS feeds
- Password recovery
- Markdown support
##Demo
##Installation
Note: By default the HTTP server starts on port 3000. This can changed by declaring PORT
environment variable or by passing one with the binary execution command.
###Gitdeploy
Deploy and try out vertigo using gitdeploy:
###Heroku
For advanced usage, see Advanced Heroku deployment
###Source
- Install Go (I recommend using gvm)
go get github.com/tools/godep
git clone https://github.com/9uuso/vertigo
cd vertigo && godep go build
PORT="80" MARTINI_ENV="production" ./vertigo
###Docker
- Install docker
cd vertigo
docker build -t "vertigo" .
docker run -d -p 80:80 vertigo
###Environment variables
PORT
- the HTTP server portMARTINI_ENV
- used by Martini to enable production optimizations such as template cachingSMTP_LOGIN
- address from which you want to send mail from. Example: postmaster@example.comSMTP_PASSWORD
- Password for the mailbox defined with SMTP_LOGINSMTP_PORT
- SMTP port which to use to send email. Defaults to 587.SMTP_SERVER
- SMTP server hostname or IP address. Example: smtp.example.orgDATABASE_URL
- database connection URL for PostgreSQL - if empty, SQLite will be used
##Contribute
Contributions are welcome, but before creating a pull request, please run your code trough go fmt
and golint
. If the changes introduce new features, please also add tests for them. Try to also squash your commits into one big one instead many small, to avoid unnecessary CI runs.
##Support
If you have any questions in mind, please file an issue.
##License
MIT