defaultproject

by elcct

Web Application bootstrap for Go

201 Stars 28 Forks Last release: about 6 years ago (0.1) MIT License 33 Commits 1 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

Default Project Build Status

Provides essentials that most web applications need - MVC pattern and user authorisation that can be easily extended.

It consists of 3 core components:

  • Goji - A web microframework for Golang - http://goji.io/
  • Gorilla web toolkit sessions - cookie (and filesystem) sessions - http://www.gorillatoolkit.org/pkg/sessions
  • mgo - MongoDB driver for the Go language - http://labix.org/mgo

Dependencies

Default Project requires

Go
,
MongoDB
and few other tools installed.

Instructions below have been tested on

Ubuntu 14.04
.

Installation

If you don't have

Go
installed, follow installation instructions described here: http://golang.org/doc/install

Then install remaining dependecies:

sudo apt-get install git mercurial subversion bzr

MongoDB:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
sudo echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
sudo apt-get update
sudo apt-get install mongodb-org

No go to your GOPATH location and run:

go get github.com/elcct/defaultproject

And then:

go install github.com/elcct/defaultproject

In your GOPATH directory you can create

config.json
file:
{
    "secret": "secret",
    "public_path": "./src/github.com/elcct/defaultproject/public",
    "template_path": "./src/github.com/elcct/defaultproject/views", 
    "database": {
        "hosts": "localhost",
        "database": "defaultproject"
    }
}

Finally, you can run:

./bin/defaultproject

That should output something like:

2014/06/19 15:31:15.386961 Starting Goji on [::]:8000

And it means you can now direct your browser to

localhost:8000

Project structure

/controllers

All your controllers that serve defined routes.

/helpers

Helper functions.

/models

You database models.

/public

It has all your static files mapped to

/assets/*
path except
robots.txt
and
favicon.ico
that map to
/
.

/system

Core functions and structs.

/views

Your views using standard

Go
template system.

server.go

This file starts your web application and also contains routes definition.

Make it your own

I assume you have followed installation instructions and you have

defaultproject
installed in your
GOPATH
location.

Let's say I want to create

Amazing Website
. I create new
GitHub
repository
https://github.com/elcct/amazingwebsite
(of course replace that with your own repository).

Now I have to prepare

defaultproject
. First thing is that I have to delete its
.git
directory.

I issue:

rm -rf src/github.com/elcct/defaultproject/.git

Then I want to replace all references from

github.com/elcct/defaultproject
to
github.com/elcct/amazingwebsite
:
grep -rl 'github.com/elcct/defaultproject' ./ | xargs sed -i 's/github.com\/elcct\/defaultproject/github.com\/elcct\/amazingwebsite/g'

Now I have to move all

defaultproject
files to the new location:
mv src/github.com/elcct/defaultproject/ src/github.com/elcct/amazingwebsite

And push it to my new repository at

GitHub
:
cd src/github.com/elcct/amazingwebsite
git init
git add --all .
git commit -m "Amazing Website First Commit"
git remote add origin https://github.com/elcct/amazingwebsite.git
git push -u origin master

You can now go back to your

GOPATH
and check if everything is ok:
go install github.com/elcct/amazingwebsite

And that's it.

Continuous Development

For Continuous Development I recommend using

Fresh
- https://github.com/pilu/fresh

You can install

Fresh
by issuing:
go get github.com/pilu/fresh

Then create a config file

runner.conf
in your
GOPATH
:
root:              ./src/github.com/elcct/amazingwebsite
tmp_path:          ./tmp
build_name:        runner-build
build_log:         runner-build-errors.log
valid_ext:         .go, .tpl, .tmpl, .html
build_delay:       600
colors:            1
log_color_main:    cyan
log_color_build:   yellow
log_color_runner:  green
log_color_watcher: magenta
log_color_app:

Note: Remember to replace

./src/github.com/elcct/amazingwebsite
with your own location

Now if you run:

./bin/fresh -c runner.conf

Project should automatically rebuild itself when a change occurs.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.