A Go web framework with user authentication, CSRF protection, templating, config handling, and simple migrations out of the box
Go to file
2023-07-31 18:41:49 -05:00
app Fix scheduler by adding a wait group 2023-04-06 09:55:56 -05:00
config Prepare config option to enable auto migrations 2023-02-13 23:28:36 -06:00
controllers Use ungrouped CSRF middleware on register and login POST routes 2023-07-21 11:59:55 -05:00
database Add checks to skip table and column creation if they already exist 2023-02-17 19:01:59 -06:00
middleware Pass in handler to middleware, create definition for MiddlewareFunc 2023-07-31 18:37:54 -05:00
models Remove old session query 2023-04-07 21:27:14 -05:00
restclient Fix nil error for GET requests 2023-07-26 13:09:01 -05:00
routes Refactor name 2023-07-22 23:37:38 -05:00
security Remove unneeded comments 2023-02-15 19:13:05 -06:00
static/css Add default theme and apply to pages 2023-03-06 12:44:20 -06:00
templates Properly set the name of the checkbox for parsing 2023-04-06 09:31:12 -05:00
templating Embed static and templates folder when compiling, RenderTemplate now renders and serves from the embedded filesystem 2023-02-05 12:46:47 -06:00
.gitattributes Add .gitattributes to force LF line endings 2023-05-05 12:19:17 -05:00
.gitignore Add more to .gitignore 2023-03-06 21:23:56 -06:00
env_example.json AutoMigrate changed to DbAutoMigrate to match correctly 2023-02-14 08:31:13 -06:00
go.mod Update crypto dependency 2023-07-25 15:36:25 -05:00
go.sum Update crypto dependency 2023-07-25 15:36:25 -05:00
LICENSE Add license 2023-01-07 22:08:25 -06:00
main.go Formatting 2023-04-06 12:01:29 -05:00
README.md Update README.md 2023-04-07 21:32:39 -05:00

GoWeb 🌐

GoWeb is a simple Go web framework that aims to only use the standard library. The overall file structure and development flow is inspired by larger frameworks like Laravel. It is partially ready for smaller projects if you are fine with getting your hands dirty, but I plan on having it ready to go for more serious projects when it hits version 2.0.


Current features 🚀

  • Routing/controllers
  • Templating
  • Simple database migration system
  • CSRF protection
  • Minimal user login/registration + sessions
  • Config file handling
  • Scheduled tasks
  • Entire website compiles into a single binary (~10mb) (excluding env.json)
  • Minimal dependencies (just standard library, postgres driver, and experimental package for bcrypt)

When to use 🙂

  • You need to build a dynamic web application with persistent data
  • You need to build a dynamic website using Go and need a good starting point
  • You need to build an API in Go and don't know where to start
  • Pretty much any use-case where you would use Laravel, Django, or Flask

When not to use 🙃

  • You need a static website (see Hugo)
  • You need a simple blog (see Hugo)
  • You need a simple site for your projects' documentation (see Hugo)

How to use 🤔

  1. Clone
  2. Run go get to install dependencies
  3. Copy env_example.json to env.json and fill in the values
  4. Run go run main.go to start the server
  5. Start building your app!

How to contribute 👨‍💻

  • Open an issue on GitHub if you find a bug or have a feature request.
  • Email me a patch if you want to contribute code.
    • Please include a good description of what the patch does and why it is needed, also include how you want to be credited in the commit message.

License and disclaimer 😤

  • You are free to use this project under the terms of the MIT license. See LICENSE for more details.
  • You and you alone are responsible for the security and everything else regarding your application.
  • It is not required, but I ask that when you use this project you give me credit by linking to this repository.
  • I also ask that when releasing self-hosted or other end-user applications that you release it under the GPLv3 license. This too is not required, but I would appreciate it.