{"id":43523185,"url":"https://github.com/fxnn/gone","last_synced_at":"2026-02-03T14:35:49.072Z","repository":{"id":77583873,"uuid":"42404457","full_name":"fxnn/gone","owner":"fxnn","description":"KISS wiki engine. Edits any text file. Written in Go.","archived":false,"fork":false,"pushed_at":"2019-01-27T22:08:26.000Z","size":1100,"stargazers_count":18,"open_issues_count":13,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-08-14T15:45:55.241Z","etag":null,"topics":["convention-over-configuration","golang","kiss","markdown","server","wiki-engine"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fxnn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-09-13T16:58:19.000Z","updated_at":"2025-07-23T14:57:29.000Z","dependencies_parsed_at":"2023-06-18T23:23:03.987Z","dependency_job_id":null,"html_url":"https://github.com/fxnn/gone","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fxnn/gone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxnn%2Fgone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxnn%2Fgone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxnn%2Fgone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxnn%2Fgone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fxnn","download_url":"https://codeload.github.com/fxnn/gone/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fxnn%2Fgone/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29047566,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T10:09:22.136Z","status":"ssl_error","status_checked_at":"2026-02-03T10:09:16.814Z","response_time":96,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["convention-over-configuration","golang","kiss","markdown","server","wiki-engine"],"created_at":"2026-02-03T14:35:48.951Z","updated_at":"2026-02-03T14:35:49.057Z","avatar_url":"https://github.com/fxnn.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gone\n\nGone is a wiki engine written in [Go](http://golang.org). It's\n\n* KISS,\n* Convention over Configuration and\n* designed with Developers and Admins in mind.\n\nWith Gone, you can\n\n* display Markdown, HTML and Plaintext straight from the filesystem.\n* edit just any file that's made of text.\n* have all this without setup, no database needed, not even the tinyest configuration.\n\nSo go get it!\n\n[![Build Status](https://travis-ci.org/fxnn/gone.svg?branch=master)](https://travis-ci.org/fxnn/gone)\n[![GoDoc](https://godoc.org/github.com/fxnn/gone?status.svg)](https://godoc.org/github.com/fxnn/gone)\n[![Coverage Status](https://coveralls.io/repos/fxnn/gone/badge.svg?branch=master\u0026service=github)](https://coveralls.io/github/fxnn/gone?branch=master)\n\n\n## Installation\n\nAssure that you have [Go installed](https://golang.org/doc/install).\nNow, install the application via `go get`.\n\n```console\n$ go get github.com/fxnn/gone\n```\n\nBinary releases will follow.\n\n\n## Usage\n\nYou can simply start Gone by calling its binary.\n\n```console\n$ gone\n```\n\nThe current working directory will now be served on port `8080`.\n\n* *Display content.*\n  The file `test.md` in that working directory is now accessible as `http://localhost:8080/test.md`.\n  It's a [Markdown](https://en.wikipedia.org/wiki/Markdown) file, but Gone delivers a rendered webpage.\n  Other files (text, HTML, PDF, ...) would simply be rendered as they are.\n* *Editing just anything that's made of text.*\n  In your browser, append `?edit` in the address bar.\n  Gone now sends you a text editor, allowing you to edit your file.\n  Your file doesn't exist yet? Use `?create` instead.\n* *Customize everything.*\n  Change how Gone looks.\n  Call `gone export-templates`, and you will get the HTML, CSS and JavaScript behind Gone's frontend.\n  Modify it as you like.\n\nSee `gone -help` for usage information and configuration options.\n\n\n## Access Control\n\n_**NOTE,** that these features **only** apply to **UNIX** based OSs.\nEspecially the Windows implementation currently does not support most of the\naccess control features._\n\nGone uses the file system's access control features.\nOf course, the Gone process can't read or write files it doesn't have a\npermission to.\nFor example, if the Gone process is run by user `joe`, it won't be able to read\na file only user `ann` has read permission for (as with `rw-------`).\n\nLikewise, an anonymous user being not logged in can't read or write files\nthrough Gone, except those who have _world_ permissions.\nFor example, a file `rw-rw-r--` might be read by an anonymous user, but he\nwon't be able to change that file.\nAlso, in a directory `rwxrwxr-x`, only a user being logged in may create new files.\n\nUsers can login by appending `?login` to the URL.\nThe login information is configured in a good old `.htpasswd` file, placed in the working directory\nof the Gone process.\nAuthenticated users can read and write all files that are readable\nresp. writeable by the Gone process.\n\nNote that there's a brute force blocker.\nAfter each failed login attempt, the login request will be answered with an\nincreasing delay of up to 10 seconds.\nThe request delay is imposed per user, per IP address and globally.\nThe global delay, however, grows ten times slower than the other delays.\n\n### Security considerations\n\n* Authentication information are submitted without encryption, so *use SSL*!\n* Anyone may read *and write* files just by assigning world read/write permissions, so better\n  `chmod -R o-rw *` if you want to keep your stuff secret!\n* Gone uses the working directory for content delivery, so better use a start script which\n  invokes `cd`!\n\n\n## Index documents, file names\n\nCalling a directory, Gone will look for a file named `index`.\nCalling any file that does not exist (including `index`), Gone will try to look\nfor files with a extension appended and use the first one in alphabetic order.\n\nSo, the file `http://localhost:8080/test.md` could also be referenced as\n`http://localhost:8080/test`, as long as no `test` file exists.\nIn the same way, an `index.md` file can be used as index document and will fulfill\nthe above requirements.\n\nThis mechanism is transparent to the user, no redirect will happen.\n\n\n## Links\n\nWhen you create files with the extension `url` and put a URL inside it, Gone will serve\nit as a temporary `302` redirect.\n\nExample:\n\n```console\n$ echo \"https://github.com\" \u003e github.url\n```\n\nA call to `http://localhost:8080/github` will get you redirected to GitHub now.\n\n\n## Templates\n\nGone uses some Go templates for its UI.\nThe templates are shipped inside the executable, but you can use custom versions of them.\nFor general information on Go HTML templates, see the [html/template godoc](https://golang.org/pkg/html/template/).\n\nWith your web root as working directory, invoke `gone export-templates`.\nIt creates a new folder `.templates` which will never be delivered via HTTP.\nYou'll find all templates inside and can modify them.\nIf you (re)start Gone now, it will use the templates from that directory.\n\nNote, that you can also supply a custom template path.\nSee `gone -help` for more information.\n\n\n## Future\n\nSome day, Gone might be\n* extensible. Plugin in version control, renderers, compilers or anything you like, cf. https://github.com/fxnn/gone/issues/29\n* granting file access on a group level, using a `htgroup` file.\n* searchable in full text.\n\n\n## Development\n\nIf you want to modify sources in this project, you might find the following information helpful.\n\n\n### Third party software\n\nPlease note that the project uses the vendoring tool https://github.com/kardianos/govendor.\nAlso, we use the standard go `vendor` folder, which means that all external projects are vendored and to be found in the `vendor` folder.\nA list of projects and versions is managed under [vendor/vendor.json](vendor/vendor.json).\nIf you build with go-1.5, enable the [GO15VENDOREXPERIMENT](https://golang.org/s/go15vendor) flag.\n\nGone imports code from following projects:\n\n* [abbot/go-http-auth](https://github.com/abbot/go-http-auth) for HTTP basic authentication\n* [fsnotify/fsnotify](https://github.com/fsnotify/fsnotify) for watching files\n* [gorilla](https://github.com/gorilla), a great web toolkit for Go, used for sessions and cookies\n* [russross/blackfriday](https://github.com/russross/blackfriday), a well-made markdown processor for Go\n* [shurcooL/sanitized_anchor_name](https://github.com/shurcooL/sanitized_anchor_name) for making strings URL-compatible\n* [golang.org/x/crypto](https://golang.org/x/crypto) for session-related cryptography\n* [golang.org/x/net/context](https://golang.org/x/net/context) for request-scoped values\n* [fxnn/gopath](https://github.com/fxnn/gopath) for easy handling of filesystem paths\n\nAlso, the following commands are used to build gone:\n\n* [pierre/gotestcover](https://github.com/pierrre/gotestcover) to run tests with coverage analysis on multiple packages\n* [mjibson/esc](https://github.com/mjibson/esc) for embedding files into the binary\n\nGone's frontend wouldn't be anything without\n\n* [ajaxorg/ace](https://github.com/ajaxorg/ace), a great in-browser editor\n\n\n## Architecture\n\n                   +------+\n                   | main |\n                   +------+\n                    |  | |\n          +---------+  | +---------+\n          v            v           v\n      +-------+    +------+    +--------+\n      | store |    | http |    | config |\n      +-------+    +------+    +--------+\n                   /   |  \\\n         +--------+    |   +--------+\n         v             v            v\n    +--------+    +--------+    +--------+\n    | viewer |    | editor |    | router |\n    +--------+    +--------+    +--------+\n\n`main` just implements the startup logic and integrates all other top-level\ncomponents.\nDepending on what `config` returns, a command is executed, which by default\nstarts up the web server.\nFrom now on, we have to main parts.\n\nOn the one hand, there is the `store` that implements the whole storage.\nCurrently, the only usable storage engine is the filesystem.\n\nOn the other hand, there is the `http` package that serves HTTP requests using\ndifferent handlers.\nThe `router` component directs each request to the matching handler.\nHandlers are implemented in the `viewer` and the `editor` package.\nWhile the `editor` serves the editing UI, the `viewer` is responsible for \nserving whatever file is requested.\n\nOther noteable packages are as follows.\n* The `http/failer` package delivers error pages for HTTP requests.\n* The `http/templates` package caches and renders the templates used for HTML\n  output.\n* The `resources` package encapsulates access to static resources, which are\n  bundled with each `gone` distribution.\n\nSee the [Godoc](http://godoc.org/github.com/fxnn/gone) for more information.\n\n\n## License (MIT)\n\nLicensed under the MIT License, see [LICENSE](LICENSE) file for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffxnn%2Fgone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffxnn%2Fgone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffxnn%2Fgone/lists"}