• Stars
    star
    220
  • Rank 180,422 (Top 4 %)
  • Language
    Go
  • License
    GNU General Publi...
  • Created about 4 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A tiny git forge written in Go

Smithy

smithy (n) A blacksmith's shop; a forge.

Smithy is a web frontend for git repositories. It's implemented entirely in Golang, compiles to a single binary, and it's fast and easy to deploy. Smithy is an alternative to cgit or gitweb, and doesn't seek to compete with Gitea and the like.

  • Golang
  • Single binary
  • Easy to deploy
  • Fast
  • Customizable
  • Free software
  • Javascript-free

Building

The only dependency is Golang 1.16 or higher. Contributors to smithy should have the optional scdoc for generating documentation.

$ git clone https://github.com/honza/smithy
$ make
$ ./smithy --help

Installing

We provide a make rule for installing/uninstall smithy. It will also install a sample configuration file at /usr/local/share/smithy/smithy.yml that you can later use as a guide.

$ make install
$ make uninstall

Configuration

You can generate a sample configuration by issuing make smithy.yml command or directly using the smithy binary:

$ make smithy.yml # will generate a smithy.yml file
$ smithy generate > config.yml
$ smithy serve --config config.yml

A sample configuration can be:

title: Smithy, a lightweight git forge
description: Publish your git repositories with ease
port: 3456
git:
  root: "/var/www/git"
  repos:
    - path: "some-cool-project"
      slug: "some-cool-project"
      title: "Some Cool Project"
      description: "Something really cool to change the world"
    - path: "ugly-hacks"
      exclude: true

static:
  root:
  prefix: /static/

templates:
  dir:

Customizing templates and css

Out of the box, smithy bundles templates and css in the binary. Setting static.root, and templates.dir to empty string will cause smithy to use the bundled assets.

If you'd like to customize the templates or the css, copy the include directory somewhere, and then set static.root, and templates.dir to that directory.

Demo

Smithy is currently hosting itself on my domain.

Contributing

Contributions are most welcome. You can open a pull request on GitHub, or email a patch to [email protected].

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

More Repositories

1

vim-snippets

vim-snipmate default snippets (Previously snipmate-snippets)
Vim Snippet
4,813
star
2

140medley

A micro-framework or a collection of small, helpful utilities for common javascript tasks.
JavaScript
351
star
3

anosql

Easy SQL in Python
Python
208
star
4

bibles

Machine-readable versions of popular English translations of the Bible
166
star
5

redish

A multi-threaded, TCP, key-value store inspired by Redis implemented in Haskell.
Haskell
137
star
6

node-thumbnail

Thumbnail worker queue for node.js
JavaScript
102
star
7

lenscap

Lenscap is a static site generator for creating beautiful photo narratives
Python
97
star
8

django-chef

django with chef template (no longer maintained)
Ruby
86
star
9

base16-st

Colors for the st terminal
C
82
star
10

inertia

A Lisp to Javascript compiler
JavaScript
78
star
11

vim2pygments

Convert vim colorschemes to Pygments styles
Python
72
star
12

suggestr.js

The dead simple javascript autocompleter
JavaScript
68
star
13

dockerfile.vim

Syntax highlighting for Dockerfiles
Vim Script
54
star
14

mutt-notmuch-py

Python
46
star
15

oauth-service

OAuth service in Django/Flask (proof of concept/example app)
Python
41
star
16

kindle-highlight-parser

Parse the highlights file from your Kindle and display it in JSON or Markdown
Go
41
star
17

socrates

socrates is a static site generator written in Python
Python
31
star
18

writer.vim

vim plugin for writing prose
Vim Script
25
star
19

dotfiles

My awesome dotfiles.
Emacs Lisp
25
star
20

clitwi

A dead-simple command line Twitter client
Python
21
star
21

cljs-node

A leiningen template for cljs scripts that target nodejs
Clojure
18
star
22

sheepskin

Document authoring utility
Shell
18
star
23

gif-maker

Make animated gifs from video clips
Shell
16
star
24

nigel

A simple IRC bot that responds to commands. Inspired by Hubot. Implemented in Python.
Python
15
star
25

ajax.js

Super simple ajax utility
JavaScript
14
star
26

jordan

Clojure library for Compojure that allows you to specify which routes require the user to be logged in or to be an administrator
Clojure
14
star
27

heroku-sprunge

Roll your own sprunge on your domain
Python
13
star
28

rembrant

rembrant is a photo organizational tool and an online gallery builder
JavaScript
9
star
29

Posterous-App-Engine

Posterous-style blogging on App Engine
Python
9
star
30

wharf-ci

Jenkins-like, docker-based, GitHub-backed build system
CSS
7
star
31

bond

Bond - the spy agent
Clojure
6
star
32

westminster-reference-bible

6
star
33

film-simulations

Fuji X Film Simulation Settings
Python
6
star
34

renaissance.css

The perfect page in CSS
CSS
5
star
35

honza.github.com

My website
HTML
5
star
36

vim.io

CoffeeScript
5
star
37

keylogger

keylogger output analyzer
Clojure
5
star
38

heroku-bouncer

Keep your app alive
4
star
39

email-parsing

Email parsing in Clojure
Clojure
4
star
40

solarized-pygments

Solarized pygments style
Python
4
star
41

photolab.coffee

Photolab is a photo organizational and sorting tool.
CoffeeScript
4
star
42

greek-new-testament

This is a tool which helps you read and study the New Testament in the original Greek.
Python
4
star
43

renodiff

Convert your git patch to a reno release note
Python
4
star
44

greekapp

This is a Django app that allows you to interact with the text of the New Testament in its original language.
Python
3
star
45

textual-criticism-game

3
star
46

pypass

python-based random password generator
Python
3
star
47

photolab.py

Python
3
star
48

server-sanity

Vim Script
3
star
49

jslintnode.js

Run your javascript files through the JSLint tool from the comfort of your command prompt.
JavaScript
3
star
50

1689

TeX
3
star
51

django-riemann

Send logs from Django to Riemann
Python
3
star
52

gopro-tools

Shell
3
star
53

ansel

Ansel, the photo gallery
Clojure
2
star
54

hnios

HN for iOS
Python
2
star
55

punctuation

Add real HTML punctuation
Python
2
star
56

todo.js

A fast, reliable, extensible, powerful todo list application written in Javascript.
JavaScript
2
star
57

film-detect

Rust
2
star
58

license.js

Detect a project's open source license on Github
JavaScript
2
star
59

stickies-app

StickiesApp
JavaScript
2
star
60

amara-chrome

JavaScript
2
star
61

clj-gpx

Clojure
2
star
62

textus-receptus

2
star
63

rediclus

A simple Redis clone in Clojure
Clojure
2
star
64

pygmented-markdown

Markdown script that parses your code with Pygments
Python
2
star
65

grab-free-machine

Python
2
star
66

finances.js

This is an example, proof-of-concept, application to showcase backbone.js
JavaScript
2
star
67

bolt

Real-time chat/Twitter clone in Node.js, Express, Socket.io, Redis
JavaScript
2
star
68

nathan-university

Homework for the "Create your own programming language" course at http://nathansuniversity.com/.
JavaScript
2
star
69

riddle

Riddle is a simple theme for Sphinx
1
star
70

merge-upstream

Shell
1
star
71

c25k-org

1
star
72

sifra

Python
1
star
73

gauges-clj

Clojure
1
star
74

web-development

1
star
75

trumpett

trumpett is a Twitter client for Android
Java
1
star
76

gemini

Rust
1
star
77

documents

1
star
78

hilltopfm

PHP
1
star
79

srt.clj

SRT parser in Clojure
Clojure
1
star
80

raised

Python
1
star
81

MdChrome

Markdown preview Chrome extension
JavaScript
1
star
82

magit-gerrit-plus

Emacs Lisp
1
star
83

CoffeeTodo

This is here for archiving purposes. It will probably be deleted soon.
Python
1
star
84

ggl

global git log
Rust
1
star
85

fluent-forever-625

1
star
86

bedfordbaptist.touch

Android application to allow quick access to Bedford Baptist Church information.
Java
1
star
87

gitutils

Fun git scripts written in Python
Python
1
star
88

cs-todo

Todo app in ClojureScript
CSS
1
star
89

chaperone

Chaperone is a command line, time tracking utility
Python
1
star
90

osis

A golang library for parsing OSIS values to English
Go
1
star
91

django-persistent-models

A drop-in replacement for django.db.models.Model that provides a persistent version of the model class
1
star
92

pyselecta

Fuzzy search
Go
1
star
93

vote

Python
1
star
94

filmdetect

Go
1
star
95

pannote

Search your text files
Python
1
star