This is a skeleton project that provides essentials most web blogs need - MVC pattern, user authorisation, orm, admin dashboard, javascript form validation, rss feeds, etc.
You can check out GinShop for a more modern e-shop bundle.
It consists of the following core components:
- GIN - A web microframework (with best performance atm) for Golang - https://github.com/gin-gonic/gin
- GIN middlewares gin-csrf, gin/contrib/sessions
- gorm - The orm library for go - http://gorm.io/
- Comments with oauth2 authentication
- logrus - advanced Go logger - https://github.com/Sirupsen/logrus
- Twitter Bootstrap 4 - popular HTML, CSS, JS framework for developing responsive, mobile first web projects - http://getbootstrap.com
- Webpack asset compiler
- Parsley JS - form validation - http://parsleyjs.org
- CKEditor 5 with image upload - https://ckeditor.com/ckeditor-5/
- bluemonday - html sanitizer (for excerpts, etc) - https://github.com/microcosm-cc/bluemonday
- RSS feeds - https://github.com/gorilla/feeds
- sitemap - XML sitemap for search engines - https://github.com/denisbakhtin/sitemap
- gocron - periodic task launcher (for sitemap generation, etc) - https://github.com/jasonlvhit/gocron
- Site search with Postgresql full text search (okish for most websites) - http://www.postgresql.org/docs/9.4/static/textsearch-intro.html
- Social plugins (share, like buttons)
- Auto posting previews to social walls
git clone https://github.com/denisbakhtin/ginblog.git
cd ginblog
go get .
Copy sample config cp config/config.json.example config/config.json, create postgresql database, modify config/config.json accordingly.
Install npm, webpack, run npm install in the project directory.
Type go run main.go to launch web server, npm run build to rebuild assets.
npm run build
make build
Upload ginblog binary config, views and public directory to your server.
/config
Contains application configuration file & go wrapper.
/controllers
MVC controllers
/models
Database models.
/public
All web-site static files
/views
Web-site views.
main.go
Main file that starts the application, initializes subsystems and web routes
I assume you have followed installation instructions and you have ginblog installed in your GOPATH location.
Let's say you want to create Amazing Website. Add a new GitHub repository https://github.com/denisbakhtin/amazingblog (of course replace that with your own repo).
Prepare ginblog: delete its .git directory.
Issue:
rm -rf src/github.com/denisbakhtin/ginblog/.git
Replace all references of github.com/denisbakhtin/ginblog with github.com/denisbakhtin/amazingblog:
grep -rl 'github.com/denisbakhtin/ginblog' ./ | xargs sed -i 's/github.com\/denisbakhtin\/ginblog/github.com\/denisbakhtin\/amazingblog/g'
Move all files to the new location:
mv src/github.com/denisbakhtin/ginblog/ src/github.com/denisbakhtin/amazingblog
And push it to the corresponding repo:
cd src/github.com/denisbakhtin/amazingblog
git init
git add --all .
git commit -m "Amazing Blog First Commit"
git remote add origin https://github.com/denisbakhtin/amazingblog.git
git push -u origin master
You can now go back to your GOPATH and check if everything is ok:
go install github.com/denisbakhtin/amazingblog
And that's it.
For Continuous Development a good option is to install fresh - https://github.com/pilu/fresh
Then simply run fresh in the project directory.
To rebuild assets on change install run npm run watch.