
Show HN: Wikifeat – a wiki/collaboration system made using Go and CouchDB - jcadam
https://www.wikifeat.com
======
jcadam
I've been working on a little side project and thought I'd share:

Wikifeat is an extensible wiki system (support for plugins and additional
custom services, etc.) written in Golang intended for
organizational/enterprise use. It uses CouchDB as its main database and Etcd
for its service registry.

The frontend is written in Backbone/Marionette (using Bootstrap for layout).

Project site (running Wikifeat on FreeBSD):
[https://www.wikifeat.com](https://www.wikifeat.com)

Plugin example: [https://www.wikifeat.com/app/wikis/developer-
documentation/p...](https://www.wikifeat.com/app/wikis/developer-
documentation/pages/plugin-development-guide)

Github repo:
[https://github.com/rhinoman/wikifeat](https://github.com/rhinoman/wikifeat)

I've also written a Blog post with some more detail:
[http://jamesadam.me/index.php/2015/11/03/making-an-
extensibl...](http://jamesadam.me/index.php/2015/11/03/making-an-extensible-
wiki-system-with-go/)

Lots of rough edges and yet-to-be-implemented features to be sure (especially
on the front end), but I believe it is at the point it might be minimally
usable :)

~~~
jfindley
Some feedback:

1) On chrome, this site breaks the back button. Once I get to the site, no
amount of pressing 'back' will take me back to where I came from -
additionally, if I visit a second page on the site, then the back button
actually rotates between the front page and the second page indefinitely.

2) It loads in an odd fashion, loading the sidebar first and then the content.
It's not a deal breaker, but it looks odd when reading the page, and I wonder
how well this would work on slower connections. It does also make me wonder
how well it might actually scale in practice.

3) CouchDB is an unusual choice for a product like this - if you're shipping a
product with an embedded database, something lower maintenance (and with
better HA capabilities) might improve the lives of your users.

4) Minor point, but why is the 'View Raw' button given such prominence? I'm
not sure what purpose it solves for an end user, and it could perhaps be
better hidden under 'Page tools'.

Overall though, I like the architecture and design. Thanks for sharing!

~~~
jcadam
Thanks for the feedback! As you can probably tell, the front end needs some
work.

1.) The back button breaks in most (all?) browsers. I'm doing something odd
with the history and I definitely need to fix it.

2.) The application does start loading the sidebar before it does much of
anything else. It's kind of arbitrary and I suppose I could change it.

3.) I wasn't thinking of a self-contained product with an embedded database. I
suppose Couch is higher maintenance than say, SQLite, but I haven't found it
to be more onerous to administrate than Postgres or (especially) Oracle. I
suppose a lack of familiarity on the part of sysadmins could be a possible
issue.

4.) It was/is a useful feature during development, but I take your point most
end users aren't going to use this feature as much as I have. Moving it is a
good idea :)

------
maze-le
Did you resolve the 'concurrent editing' problem, or: What happens if 2 users
edit the same resource?

~~~
jcadam
First one to submit their changes wins. The second update is rejected.

The revision # of the document must be included in the header of the PUT
request (If-Match), if it doesn't match the revision # of the document in the
database, you get a 409 error back.

