Go full-stack web app from scratch
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
go-maybe-list is a full-stack web application written in Go. It's written from scratch, without any pre-build web framework like Gin or Echo.
You can save links and ideas as "maybes" for later. Each maybe can have none or one to many tags.
You can either view all entries or only entries belonging to a tag.
If you update a maybe, tags will be dynamically added, updated or deleted.
I've deployed a demo (via GitOps/Gitlab CI) to a $5 Upcloud VPS (How?).
Sign up with a new account to test-drive the application (you can use a temporary email provider if you like).
- custom web service framework/handler to isolate dependencies and improve error handling
- middleware integration
- SQL database support using SQLite (easy to swap out to a different SQL database)
- no ORM, use of Go's standard
database/sql
library andjmoiron/sqlx
- user authentication and authorization with sessions
- profile view and change password
- form validation
- use of Docker, Docker Compose, Makefiles
- vendoring dependencies with Modules, requires Go 1.12 or higher
- Admin CLI with boilerplate templates to reduce repetitive copy/pasting.
- responsive HTML and CSS without media queries
- dark and light theme (via
prefers-color-scheme
)
To get a local copy up and running follow these steps.
You'll need Go (Go 1.12 or later) and SQLite.
-
Clone the repository.
git clone https://github.com/sophiabrandt/go-maybe-list.git
-
Run database migrations.
go run ./cmd/admin -action="migrate" go run ./cmd/admin -action="seed"
-
Run web server. Default port is 4000, you can change it with a command line flag.
go run ./cmd/web # go run ./cmd/web -addr="0.0.0.0:8000"
Alternatively, use the provided Makefile
for convenience.
Register for a new account, sign in, and add new "maybes".
See the open issues for a list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Apache 2.0 License, see LICENSE
.
Sophia Brandt - @hisophiabrandt
Project Link: https://github.com/sophiabrandt/go-maybe-list
- Let's Go
- https://github.com/dlsniper/gopherconuk
- How I write HTTP services after eight years.
- http.Handler and Error Handling in Go
- Develop A Production Ready REST API in Go
- https://github.com/ardanlabs/service
- Graceful shutdown of Golang servers using Context and OS signals
- Learning Cloud Native Go
- Every Layout