Giter Club home page Giter Club logo

journey's Introduction

Journey

A blog engine written in Go, compatible with Ghost themes.

Editor

About

Please note that Journey is still in alpha and has not been tested in production. Not all Ghost theme helpers have been implemented yet so there is bound to be trouble with some Ghost themes. Please open a New Issue if you encounter a theme that doesn't work.

Easy to work with

Create or update your posts from any place and any device. Simply point your browser to yourblog.url/admin/, log in, and start typing away!

Extensible

Write plugins in Lua to implement custom behavior when generating pages. Learn how to do it on the Wiki!

Good stuff available right away

Use Ghost themes to design your blog. There's already a great community of designers working on Ghost compatible themes. Check out the Ghost Marketplace to get an idea. You can also migrate your existing Ghost installation to Journey with a few simple steps.

Good stuff to come

Hopefully. Planning the future of Journey, high priority goals are support of MySQL, PostgreSQL, and Google App Engine.

Easily secure

Other blog engines require you to install Nginx or Apache just to enable HTTPS. With Journey, simply enable HTTPS in the configuration and start using it for development purposes. For production, simply replace the generated certificates with your own and you are ready to go.

No dependencies

Don't worry about installing the correct version of Node.js, Python, or anything else. Just download the latest release for your operating system and cpu architecture, then place the folder anywhere you like and run the Journey executable. Done!

Lightweight and fast

Journey is still in an early stage of development. However, initial tests indicate that it is much faster at generating pages than Ghost running on Node.js. It also eats very little of your precious memory. For example: Testing it on Mac OS X, it takes about 3.5 MB of it and then happily carries on doing its job.

This slimness makes Journey an ideal candidate for setting up micro blogs or hosting it on low-end vps machines or micro computers such as the Raspberry Pi.

Deployable anywhere

Download the release package for Linux (AMD64, i386, ARM), Mac OS X (AMD64, i386) or Windows (AMD64, i386) and start using Journey right away. Build Journey from source to make it work on a multitude of other operating systems!

Installing Journey

To get started with Journey, go to the the Releases Page and download the zip file corresponding to your operating system and cpu architecture. Then extract Journey anywhere you like. Why not place it in your home folder (e.g. /home/youruser/journey/)?

After that, head over to Setting up Journey to configure your Journey blog on your local machine.

If you'd like to set up Journey on a Linux server, head over to Installing Journey on Ubuntu Server for a step-by-step tutorial.

Journey even runs as a Windows Azure Web App. It's a great way to try out or host a low traffic Journey blog for free on the internet! Head over to Hosting Journey as a Windows Azure Web App for a step-by-step tutorial.

Plugins

Did you create a Journey plugin? Write me @kabukky or [email protected] and I'll add a link to it here.

Questions?

Please read the FAQ Wiki page or write to [email protected].

Troubleshooting

Please refer to the FAQ Wiki page if you experience any trouble running Journey.

If your issue isn't discussed there, please create a New Issue.

Building from source

Please refer to the Building Journey from source Wiki page for instructions on how to build Journey from source.

If you'd like to turn off the plugin system, you can use the build tag 'noplugins' to do so.

Contributing to Journey

Pull requests are very much welcome. But please create them on the development branch. The master branch will only be updated for a new release.

journey's People

Contributors

awoodbeck avatar kabukky avatar lukehowelldev avatar rainyear avatar specode avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

journey's Issues

RSS Feed

The feed title and all posts get wrapped in extraneous <![CDATA[ and ]]> tags. Tested on latest Firefox in Windows 8.1.

Imgur

/rss/ source:

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0">
  <channel>
    <title>&lt;![CDATA[My Blog]]&gt;</title>
    <link></link>
    <description>&lt;![CDATA[Just another Blog]]&gt;</description>
    <pubDate>25 Apr 15 15:41 EDT</pubDate>
    <item>
      <title>&lt;![CDATA[Hello World]]&gt;</title>
      <link>/hello-world</link>
      <description>&lt;![CDATA[&lt;p&gt;&lt;strong&gt;Test&lt;/strong&gt;&lt;br /&gt;&#xA;Markdown here&lt;/p&gt;&#xA;]]&gt;</description>
      <author>Aditya</author>
      <guid>8e5b0b49-7c5d-4789-b64e-271cb9018c5e</guid>
      <pubDate>25 Apr 15 19:18 UTC</pubDate>
    </item>
  </channel>
</rss>

segmentation fault when building from source

Seeing this

26357 segmentation fault  go get github.com/kabukky/journey

My go env

go env
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/uri/go"
GORACE=""
GOROOT="/usr/lib/go"
GOTOOLDIR="/usr/lib/gcc/x86_64-linux-gnu/5"
CC="/usr/bin/gcc-5"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="/usr/bin/g++-5"
CGO_ENABLED="1"

Logging should goto stderr

There's no reason to log to an arbitrary file, the user can configure that easily enough using their shell. The current method requires unnecessarily digging through documentation, or attempting to divine where log messages are going. See the Principle of Least Astonishment.

Lua plugin functionality to return this post

I've written a Ghost plugin which contains a helpers to return post content and excerpts. It does this by grabbing this.html, where this is whatever post wraps my custom helper when it's called. getPost(1) achieves the same result if there's only one post on the page, but falls short inside a {{#foreach posts}} loop.

I'm trying to port it over to Journey, but I'm not sure there's a way to get "this post" in that way using Journey's plugin system without writing a new {{#foreach posts}} helper that works with array indices or something drastic like that. If I'm wrong, please explain what I'm missing and close this – otherwise consider it a feature request.

(On a related note, I also have no idea how to tell Journey not to HTML encode certain returned strings)

Issue when from 0.1.6 to 0.1.7

log.txt is full of messages as such:

2015/05/07 11:44:38 Error: Couldn't generate blog data: sql: no rows in result set

and the blog is not responding.

Roll back to the previous version helps

Cwd should not be set to the binary location

Shell/OS have support for setting the current working directory already. Setting this unexpectedly on the user increases the learning curve and complexity without advantage. See again Principle of Least Astonishment.

Add startup options to override filename paths

I am building docker image for journey.
In order for it to run it would be nice to be able to change file locations so I can mount external folder to journey docker container in order to preserve data, since once container stops all data is lost.

I was thinking something like:
journey --filenames-path /var/some-path

If you would allow, I would be happy to fork the repo and implement these changes.

Couple issues

Really like your project. Couple issues I found so far:

  1. No logout
  2. /about, /projects
    sql: no rows in result set

Thanks for your work

Add Post Scheduling

Is this a possibility? It's the missing featuring which is preventing me from moving to ghost at the moment, but I'm more interested in using a Go based blog than a Node.js based one.

feeds: W3C feed validator report

I can't create a new issue in your fork of feeds, so I report problems here.

According to the report from W3C feed validator https://validator.w3.org/feed/#validate_by_input of my feed output at /rss/,

  • Line 1: there should be a line break after <?xml version="1.0" encoding="UTF-8"?>
  • The validator says guid must be a full URL, unless isPermaLink attribute, so all <guid> should become <guid isPermaLink="false">
  • It says pubDate must be an RFC-822 date-time. Replacing UTC with GMT in Mon, 27 Jul 2015 15:49:30 UTC fixes the issue. See https://validator.w3.org/feed/docs/error/InvalidRFC2822Date.html
  • Don't output something like <author>Tom Kwok</author>. Ghost doesn't do this. The validator says Tom Kwok is an invalid email address. https://validator.w3.org/feed/docs/error/InvalidContact.html. Follow Ghost's engine. Output something like <dc:creator><![CDATA[John O'Nolan]]></dc:creator>
  • <media:content medium="image" url="http://127.0.0.1:9084/images/2015/06/test.png"><title>blah</title></media:content>: remove the title tag

Fixing all of the above issues will make the feed validate.

It also give the following recommendations: (if we are not following these, the feed still validates)

I've discovered one more problem:

  • Line 6: <pubDate>Mon, 27 Jul 2015 15:49:30 HKT</pubDate>
    thepubDate tag should be replaced by a lastBuildDate tag,

Issue with Ghost themes

Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.findHelper(0xc2080c4000, 0x1741, 0x1741, 0xc208030800, 0x6, 0x8, 0x0, 0x0, 0x0, 0x0, ...)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:107 +0xba0
Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.findHelper(0xc208106800, 0x1781, 0x1781, 0xc208030800, 0x6, 0x8, 0x0, 0x0, 0x0, 0x0, ...)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:118 +0xaea
Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.findHelper(0xc208105000, 0x179a, 0x179a, 0xc208030800, 0x5, 0x8, 0x0, 0x0, 0x0, 0x0, ...)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:118 +0xaea
Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.findHelper(0xc208103800, 0x17b3, 0x17b3, 0xc2080bc5a0, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, ...)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:118 +0xaea
Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.findHelper(0xc208102000, 0x17cd, 0x17cd, 0xc2080bc5a0, 0x3, 0x4, 0x0, 0x0, 0x0, 0x0, ...)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:118 +0xaea
Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.findHelper(0xc208062800, 0x17e7, 0x17e7, 0xc2080d5950, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0, ...)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:107 +0xba0
Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.findHelper(0xc208061000, 0x17fe, 0x17fe, 0xc2080d5950, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0, ...)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:107 +0xba0
Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.findHelper(0xc208094b00, 0x180c, 0x180c, 0xc2080d5950, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0, ...)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:118 +0xaea
Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.findHelper(0xc208093200, 0x1820, 0x1820, 0xc20800d180, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, ...)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:118 +0xaea
Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.findHelper(0xc208091900, 0x182e, 0x182e, 0xe742b0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:107 +0xba0
Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.findHelper(0xc208090000, 0x183e, 0x183e, 0xe742b0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:107 +0xba0
Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.compileTemplate(0xc2080f6000, 0x1856, 0x1a56, 0xc20803bc69, 0x7, 0x0)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:171 +0x283
Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.createTemplateFromFile(0xc20803bc40, 0x34, 0x34, 0x0, 0x0)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:193 +0x2ac
Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.compileFile(0xc20803bc40, 0x34, 0x0, 0x0)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:198 +0x44
Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.inspectTemplateFile(0xc20803bc40, 0x34, 0x7f83eb942418, 0xc20802ef50, 0x0, 0x0, 0x0, 0x0)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:208 +0xca
Apr 18 02:42:32 Asgard su[1290]: path/filepath.walk(0xc20803bc40, 0x34, 0x7f83eb942418, 0xc20802ef50, 0xac5150, 0x0, 0x0)
Apr 18 02:42:32 Asgard su[1290]: /usr/local/go/src/path/filepath/path.go:347 +0x91
Apr 18 02:42:32 Asgard su[1290]: path/filepath.walk(0xc20803d830, 0x28, 0x7f83eb942418, 0xc20802fc70, 0xac5150, 0x0, 0x0)
Apr 18 02:42:32 Asgard su[1290]: /usr/local/go/src/path/filepath/path.go:372 +0x51d
Apr 18 02:42:32 Asgard su[1290]: path/filepath.Walk(0xc20803d830, 0x28, 0xac5150, 0x0, 0x0)
Apr 18 02:42:32 Asgard su[1290]: /usr/local/go/src/path/filepath/path.go:394 +0xf2
Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.compileTheme(0xc20803d830, 0x28, 0x0, 0x0)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:221 +0x234
Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.checkThemes(0x0, 0x0)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:257 +0x16e
Apr 18 02:42:32 Asgard su[1290]: github.com/kabukky/journey/templates.Generate(0x0, 0x0)
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/templates/generation.go:293 +0xcd
Apr 18 02:42:32 Asgard su[1290]: main.main()
Apr 18 02:42:32 Asgard su[1290]: /go/src/github.com/kabukky/journey/main.go:73 +0x54a
Apr 18 02:42:32 Asgard su[1290]: goroutine 5 [chan receive]:
Apr 18 02:42:32 Asgard su[1290]: database/sql.(*DB).connectionOpener(0xc20803f9a0)
Apr 18 02:42:32 Asgard su[1290]: /usr/local/go/src/database/sql/sql.go:589 +0x4c
Apr 18 02:42:32 Asgard su[1290]: created by database/sql.Open
Apr 18 02:42:32 Asgard su[1290]: /usr/local/go/src/database/sql/sql.go:452 +0x31c
Apr 18 02:42:32 Asgard su[1290]: goroutine 17 [syscall, locked to thread]:
Apr 18 02:42:32 Asgard su[1290]: runtime.goexit()
Apr 18 02:42:32 Asgard su[1290]: /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1
Apr 18 02:42:32 Asgard systemd[1]: journey.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Apr 18 02:42:32 Asgard su[1290]: pam_unix(su-l:session): session closed for user wesley
Apr 18 02:42:32 Asgard systemd[1]: journey.service: Unit entered failed state.
Apr 18 02:42:32 Asgard systemd[1]: journey.service: Failed with result 'exit-code'.

Having trouble loading up alternative themes, seems Journey crashes when a i select a new theme and reload the service, tried odin and casper themes.

Any idea what may be causing this?

Import/migrate feature

HI Kai - great work on journey!!

just wondering if there are plans to add an import/migration feature?

  • jekyll/octpress/wordpress/ghost etc .

Cheers

Justin

Add build tags to let users conditionally compile the plugin system

Some users, like me, may find directly modifying the source code a better approach to add small features / helpers as this avoids the of overhead of a Lua (or possibly JS #15) VM.

So maybe adding build tags to let users conditionally compile the plugin system (including the VM) would be a good idea.

two timezones in one rss feed

The rss feed shows CEST (current) timezone for the channel/pubDate and UTC for channel/item/pubDate. I guess this is allowed by the standard but a bit confusing. Maybe it should be configurable which TZ to use (in all cases).

Conditional checks inside homepage

Blogs should check whether the user has changed the links for the icons (GitHub, Twitter, LinkedIn, etc.) to custom URLs. If they haven't, it shouldn't show the buttons. About/Projects links also shouldn't show onthe main page if the pages have not been made yet.

Markdown formatting posts

Running journey-linux-amd64.zip v0.1.9
Markdown previews in admin area editor, but after saving, both the post list and the actual blog display unprocessed markdown source.

Error handling for incorrect urls / pages that have no posts

  • The current code handles output for incorrect page numbers (non-natural numbers), including /page/0/, /page/-1/, etc. as if it is /, and displays item listings for page 1 with something like Page 0 of 1 in the pagination area. It should return a 404, or redirect visitors to /.
  • Also, /page/1/ and /tag/blahblah/page/1/ (etc.) should be redirected (301 or 302?) to / and
    /tag/blahblah/ respectively.
  • Furthermore, /page/9999/ or non-existent pages should be redirected (301 or 302?) to home /.
// TODO: Error handling if there is no Posts[values.CurrentPostIndex]

uuid.Formatter

install on centos 6.5, git version:2.8.3, go version:1.6.2
go get github.com/kabukky/journey

github.com/kabukky/journey/database

src/github.com/kabukky/journey/database/initialization.go:146: undefined: uuid.Formatter
src/github.com/kabukky/journey/database/initialization.go:146: too many errors

Tracking bugs and parity with Ghost [ongoing]

Here's a reference for @kabukky and everyone who would like to contribute to this project. I've discovered multiple bugs and features that are lacking. I know I'm kind of demanding, but I hope Journey can be a full replacement for Ghost which has a pretty high memory footprint (80MB+), while the memory usage of Journey is around 10MB.

This list will be updated from time to time.


TODO

Admin:

  • post: add date/time field (currently the publish date/time of a post can't be changed to an arbitrary value)
  • post scheduling #43
  • markdown keyboard shortcuts, all those implemented in Ghost
  • tag management: meta_description / slug / name of tags should be modifiable
  • markdown engine: ==blah== for <mark>blah</mark>

Code cleanup

  • controller code in /built-in/admin/admin-angular.js is quite redundant
    • $scope.navbarHtml = $sce.trustAsHtml('<blah blah blah>'); appears 4 times
    • EditCtrl and CreateCtrl can share a large portion of code
  • <nav class="navbar navbar-default navbar-fixed-top">blah blah</nav> repeatedly appears in multiple html template files

Template:

  • {{next_post}} and {{prev_post}} helpers http://themes.ghost.org/docs/prev_next_post
  • {{is}} helper #50; {{has}} helper #69
  • use error.hbs in theme when 500 / 404 / etc. is returned (no more sql: no rows in result set and HTTP 500 response)
  • SEO metadata / post schema for sharing to Facebook / Twitter / social networking sites

Extra miscellaneous enhancement (maybe less frequently used / less important):

  • for SEO purposes, generate and serve /sitemap.xml
  • helpers & admin: tag settings: name / slug / description / image
    • currently there are warnings in logs: Warning: This helper is not implemented: tag.image Warning: This helper is not implemented: tag.description
  • admin: notify users when session expired / server rebooted / is disconnected from the Internet, which causes loss of settings

Also those @kabukky has mentioned on HN:

  • hashes for serving static assets (which should be optional; can be turned off in config.json)
  • gzip support (which should also be optional)
  • MySQL, PostgreSQL support #61
  • Google App Engine support #23
  • multi-user support

Plus my suggestions:

  • new option: listen to UNIX socket rather than TCP ports (and users can specify path to socket file descriptor via config.json)
  • post search in admin UI (For a public blog post search feature, I think we can simply include a Google CSE box, if we'd like to.)
    • post filtering: exactly like this one: TryGhost/Ghost#2640, with search functionality by keywords
    • intra-site hyperlink auto-complete: suggest links when users insert anchors ![blah](/) in the markdown editor
      • That would be a time-saving feature for users who frequently insert hyperlinks to their own blog posts.
      • It is inspired by the auto-complete feature here on GitHub: whenever I type # in the editor right here, a list of project issues pops up. I can click or press key up/down to select a link, or type in keywords to search for a post.
  • "Channels", a WIP feature in Ghost. Take a look here: https://github.com/TryGhost/Ghost/wiki/Channels-101

Done

General:

  • navigation #25
  • user: add author name field (for example, the user name slug tomkwok is output (instead of a customizable name field in which I can fill in Tom Kwok) for {{#author}}{{name}}{{/author}})
  • post: meta_description
  • markdown: support for footnotes
  • SEO: canonical url output
  • noplugins build tag; conditional compilation of the plugin system

RSS:

  • change: use absolute URL in link to post, not something like <link>/new-post</link>
  • bugfix: CDATA tag output #9
  • bugfix: wrong date format; it should be like <pubDate>Sat, 30 Aug 2014 08:54:00 GMT</pubDate>
  • enhancement: ability to use post image in RSS feed, like <media:content url="https://example.com/blah.jpg" medium="image"/>

Implement CI and merge control

Are there options? Travis perhaps. I forked to make some changes and have a build that needs changes to get working.

"github.com/kabukky/journey/date" cant find this for example

Change "sql: no rows in result set"

I propose changing "sql: no rows in result set" for yet to be created pages to something more understandable by the average user, such as "Page not found, add a custom slug to create it!"

Slash and backslash on Windows

On Windows, the uploaded post cover image filepaths begins with /images but then comes the remaining part of the location \2015\4\hash.jpg which gives /images\2015\4\hash.jpg in the rendered page.

App Engine support

Hi there, how hard would be to add App Engine support? I'm mainly java dev but keen on trying GO and have experience with App Engine - had a quick look into database package and seems to me like I would need to add just a new impl for GAE datastore and then somehow inject differenet database impl into main code - is that right or are there any other catches?

Settings don't save

I just started the debian stable version on my debian server, and the settings page doesn't want to save when I try to change something there.

OS X compatible ?

I use pelican for my blogging but want to change the engine.
I saw the "journey is compatible with Windows, OSX, LInux" but I couldn't find any link to get started with OSX.

Could you guide me where to get started, please?

Ghost themes support bug.

panic: runtime error: slice bounds out of range

goroutine 1 [running]:
github.com/kabukky/journey/templates.findHelper(0xc820184000, 0x2de, 0x4de, 0xf4b5c0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
    /var/www/src/github.com/kabukky/journey/templates/generation.go:94 +0xc4d
github.com/kabukky/journey/templates.compileTemplate(0xc820184000, 0x2de, 0x4de, 0xc8201754df, 0x7, 0x0)
    /var/www/src/github.com/kabukky/journey/templates/generation.go:172 +0x258
github.com/kabukky/journey/templates.createTemplateFromFile(0xc8201754a0, 0x4a, 0x0, 0x0, 0x0)
    /var/www/src/github.com/kabukky/journey/templates/generation.go:194 +0x29d
github.com/kabukky/journey/templates.compileFile(0xc8201754a0, 0x4a, 0x0, 0x0)
    /var/www/src/github.com/kabukky/journey/templates/generation.go:199 +0x3b
github.com/kabukky/journey/templates.inspectTemplateFile(0xc8201754a0, 0x4a, 0x7fcb125d0768, 0xc820175540, 0x0, 0x0, 0x0, 0x0)
    /var/www/src/github.com/kabukky/journey/templates/generation.go:209 +0xbc
path/filepath.walk(0xc8201754a0, 0x4a, 0x7fcb125d0768, 0xc820175540, 0xb4ecc0, 0x0, 0x0)
    /usr/local/go/src/path/filepath/path.go:349 +0x80
path/filepath.walk(0xc8200e6680, 0x3e, 0x7fcb125d0768, 0xc82014a500, 0xb4ecc0, 0x0, 0x0)
    /usr/local/go/src/path/filepath/path.go:374 +0x4fc
path/filepath.Walk(0xc8200e6680, 0x3e, 0xb4ecc0, 0x0, 0x0)
    /usr/local/go/src/path/filepath/path.go:396 +0xe1
github.com/kabukky/journey/templates.compileTheme(0xc8200e6680, 0x3e, 0x0, 0x0)
    /var/www/src/github.com/kabukky/journey/templates/generation.go:222 +0x257
github.com/kabukky/journey/templates.checkThemes(0x0, 0x0)
    /var/www/src/github.com/kabukky/journey/templates/generation.go:258 +0x195
github.com/kabukky/journey/templates.Generate(0x0, 0x0)
    /var/www/src/github.com/kabukky/journey/templates/generation.go:294 +0xeb
main.main()
    /var/www/src/github.com/kabukky/journey/main.go:73 +0x5da


Use this code block:
    endPos := -1
    if startPos != -1 {
        endPos = bytes.Index(data[startPos:], closeTag)
        if endPos != -1 {
            endPos += startPos
        }
    }
instead of
    endPos := bytes.Index(data[startPos:], closeTag)

can resolve the issue.
on file: github.com/kabukky/journey/templates/generation.go:89

Ctrl+c

ubuntu 14.04

when it is running ,ctrl+c,then:

[root journey]# ./journey
2015/05/28 21:14:23 UUID.State.init: address error:
panic: runtime error: slice bounds out of range

goroutine 1 [running]:
github.com/kabukky/journey/templates.findHelper(0xc208106600, 0x2f4, 0x2f4, 0xc208105800, 0x6, 0x8, 0x0, 0x0, 0x0, 0x0, ...)
/go/src/github.com/kabukky/journey/templates/generation.go:93 +0xc1c
github.com/kabukky/journey/templates.findHelper(0xc208106600, 0x2f4, 0x2f4, 0xc208105800, 0x6, 0x8, 0x0, 0x0, 0x0, 0x0, ...)
/go/src/github.com/kabukky/journey/templates/generation.go:118 +0xaea
github.com/kabukky/journey/templates.findHelper(0xc2080d5180, 0x303, 0x303, 0xc208105800, 0x5, 0x8, 0x0, 0x0, 0x0, 0x0, ...)
/go/src/github.com/kabukky/journey/templates/generation.go:118 +0xaea
github.com/kabukky/journey/templates.findHelper(0xc2080d4e00, 0x312, 0x312, 0xc2080cc3c0, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, ...)
/go/src/github.com/kabukky/journey/templates/generation.go:107 +0xba0
github.com/kabukky/journey/templates.findHelper(0xc2080d4a80, 0x357, 0x357, 0xc2080cc3c0, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, ...)
/go/src/github.com/kabukky/journey/templates/generation.go:118 +0xaea
github.com/kabukky/journey/templates.findHelper(0xc2080d4700, 0x37a, 0x37a, 0xc2080cc3c0, 0x3, 0x4, 0x0, 0x0, 0x0, 0x0, ...)
/go/src/github.com/kabukky/journey/templates/generation.go:118 +0xaea
github.com/kabukky/journey/templates.findHelper(0xc208105400, 0x397, 0x397, 0xc20810fb30, 0x2, 0x2, 0x0, 0x0, 0x0, 0x0, ...)
/go/src/github.com/kabukky/journey/templates/generation.go:118 +0xaea
github.com/kabukky/journey/templates.findHelper(0xc208105000, 0x3b4, 0x3b4, 0xc208086080, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, ...)
/go/src/github.com/kabukky/journey/templates/generation.go:118 +0xaea
github.com/kabukky/journey/templates.findBlock(0xc20800be08, 0x3, 0x3, 0xc208104805, 0x4, 0x3d2, 0xc208104c00, 0x2, 0x0, 0x0, ...)
/go/src/github.com/kabukky/journey/templates/generation.go:145 +0x782
github.com/kabukky/journey/templates.findHelper(0xc208104c00, 0x3ce, 0x3ce, 0xc2080fff00, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, ...)
/go/src/github.com/kabukky/journey/templates/generation.go:113 +0x72b
github.com/kabukky/journey/templates.findHelper(0xc208104800, 0x3d7, 0x3d7, 0xc2080fff00, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, ...)
/go/src/github.com/kabukky/journey/templates/generation.go:118 +0xaea
github.com/kabukky/journey/templates.compileTemplate(0xc2080ca000, 0x3e5, 0x5e5, 0xc2080d2b65, 0x4, 0x0)
/go/src/github.com/kabukky/journey/templates/generation.go:171 +0x283
github.com/kabukky/journey/templates.createTemplateFromFile(0xc2080d2b40, 0x2d, 0x2d, 0x0, 0x0)
/go/src/github.com/kabukky/journey/templates/generation.go:193 +0x2ac
github.com/kabukky/journey/templates.compileFile(0xc2080d2b40, 0x2d, 0x0, 0x0)
/go/src/github.com/kabukky/journey/templates/generation.go:198 +0x44
github.com/kabukky/journey/templates.inspectTemplateFile(0xc2080d2b40, 0x2d, 0x7f6c1cd91320, 0xc208102e60, 0x0, 0x0, 0x0, 0x0)
/go/src/github.com/kabukky/journey/templates/generation.go:208 +0xca
path/filepath.walk(0xc2080d2b40, 0x2d, 0x7f6c1cd91320, 0xc208102e60, 0xac5150, 0x0, 0x0)
/usr/local/go/src/path/filepath/path.go:347 +0x91
path/filepath.walk(0xc208039830, 0x24, 0x7f6c1cd91320, 0xc20802dc20, 0xac5150, 0x0, 0x0)
/usr/local/go/src/path/filepath/path.go:372 +0x51d
path/filepath.Walk(0xc208039830, 0x24, 0xac5150, 0x0, 0x0)
/usr/local/go/src/path/filepath/path.go:394 +0xf2
github.com/kabukky/journey/templates.compileTheme(0xc208039830, 0x24, 0x0, 0x0)
/go/src/github.com/kabukky/journey/templates/generation.go:221 +0x234
github.com/kabukky/journey/templates.checkThemes(0x0, 0x0)
/go/src/github.com/kabukky/journey/templates/generation.go:257 +0x16e
github.com/kabukky/journey/templates.Generate(0x0, 0x0)
/go/src/github.com/kabukky/journey/templates/generation.go:293 +0xcd
main.main()
/go/src/github.com/kabukky/journey/main.go:73 +0x54a

goroutine 2 [runnable]:
runtime.forcegchelper()
/usr/local/go/src/runtime/proc.go:90
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2232 +0x1

goroutine 3 [runnable]:
runtime.bgsweep()
/usr/local/go/src/runtime/mgc0.go:82
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2232 +0x1

goroutine 4 [runnable]:
runtime.runfinq()
/usr/local/go/src/runtime/malloc.go:712
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2232 +0x1

goroutine 5 [runnable]:
database/sql.(*DB).connectionOpener(0xc20803ba40)
/usr/local/go/src/database/sql/sql.go:588
created by database/sql.Open
/usr/local/go/src/database/sql/sql.go:452 +0x31c

goroutine 17 [syscall, locked to thread]:
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:2232 +0x1

hbs file missing

Hi, I clone the code from your project, and when I run the project, it report the following error:
Couldn't compile templates: Couldn't compile template 'index'. Is index.hbs missing?

Where can I find the index.hbs file? how can I generate it?

Thanks very much!

Question about support for PostgreSQL

Hello,

I have found this project while looking for some foundation on which to build our new church web site. Now it is my understanding that this project is using SQLite which is sadly not usable for Heroku deployment as a file system there is ephemeral. What would be the prospects to adapt this project to use PostgreSQL?

Making Posts accessable on every page

I may be wrong, but Ghost only has the complete list of posts on the main page. By making it accessible everywhere it allows you to make great content pages and landing pages and have the root of your blog on a different page. Right now the solution for this is to grab the rss feed and parse it with javascript which is annoying and probably not necessary.

This is also great for having complete glossaries on each blog post like so: http://vidrack.com/blog/

Can't cross compile for ARM v7

I've tried differents things. The target is the Raspberry Pi 2.

Host OS: Ubuntu 15.10 i386
The error is gcc: error: unrecognized command line option ‘-marm’

Here are the commands i have tried:

env GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=1 go build
and inspired by https://gist.github.com/steeve/6905542

CC=arm-linux-gnueabihf-gcc GOOS=linux GOARCH=arm GOARM=7 CGO_ENABLED=1 go build -v -o myprogram -ldflags="-extld=$CC"

404 on /admin/register

▶ curl http://127.0.0.1:8084/admin/ -Lv
* Hostname was NOT found in DNS cache
*   Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 8084 (#0)
> GET /admin/ HTTP/1.1
> User-Agent: curl/7.37.1
> Host: 127.0.0.1:8084
> Accept: */*
>
< HTTP/1.1 302 Found
< Location: /admin/register/
< Date: Sun, 26 Apr 2015 04:20:45 GMT
< Content-Length: 39
< Content-Type: text/html; charset=utf-8
<
* Ignoring the response-body
* Connection #0 to host 127.0.0.1 left intact
* Issue another request to this URL: 'http://127.0.0.1:8084/admin/register/'
* Found bundle for host 127.0.0.1: 0x7ff4d0414df0
* Re-using existing connection! (#0) with host 127.0.0.1
* Connected to 127.0.0.1 (127.0.0.1) port 8084 (#0)
> GET /admin/register/ HTTP/1.1
> User-Agent: curl/7.37.1
> Host: 127.0.0.1:8084
> Accept: */*
>
< HTTP/1.1 404 Not Found
< Content-Type: text/plain; charset=utf-8
< Date: Sun, 26 Apr 2015 04:20:45 GMT
< Content-Length: 19
<
404 page not found
* Connection #0 to host 127.0.0.1 left intact

Login by name? Not slug?

Hi,

I've had a lot of trouble logging in to Journal after setting it up and playing with the database. It took me some time to figure out, but I wonder if you shouldn't think through the login process again?

It currently checks the user's name and password, but the name field is a blob in the database which I think is a bit strange for a login value... And even more, on the Admin page it seems pretty clear that Name can be changed to something different, for instance the full name of the user, instead of just a short username.

So after I had changed the Name field to a long, proper name, I suddenly found myself unable to log back in. :-)

Would you consider modifying the login procedure to check the slug or email fields instead of the name field, or possibly allow a match on either of the three fields? I'd be happy to do the change for you, but I'm not sure if the current process is by design or not. In case you'd like to keep checking against the name field, I think it should be specified a bit clearer on the login page which data to input.

Also, I think this is an awesome project. I hope to start contributing a bit within the next few days.

Best regards,
Tore M. Havn

/admin/ page issue

Hey there.

cool little app you have going on here. From a User perspective it may be wise to redirect to Login page from /admin/ when a user already exists (or adding a login button).

manually typing /admin/login will lose some users who don't know better ;)

Can't wait to see more!

-Ozzadar

Serve Minified Jquery

The un minified version is hard coded in the source, please change to minified so that low bandwith clients feel less pain.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.