Minimal boilerplate project for a Golang server using Fiber and ViteJS for static pages
-
frontend/
This is a Vite project for building all the static pages used by this app.
-
backend/
This keeps all server related files
-
config/
Loads env variables and keeps them as globals
-
database/
Module with a
Database
interface and two implementation:memDB
is an in-memory database for testing purposes.sqliteDB
is a wrapper for working with an SQLite database. -
routes/
Various functions for configuring all the server routes.
A very important file is
backend/routes/router.go
that contains theHtmlEntrypoints
variable that is used both by the backend and ViteJS to mount HTML entrypoints.When building the frontend ViteJS will call
go run ./meta/routes
to read the content of theHtmlEntrypoints
variable. This is also used while developing to let Vite know add all necessary entrypoints to the dev server.
-
To setup the project first install the required npm packages
# Install all JS dependencies
$ npm install
then you can start versioning the lock file of your package manager.
# Development
$ MODE=dev go run -v ./cmd/server
# Development with watcher
$ fd -e go | MODE=dev entr -r go run -v ./cmd/server
You can build everything with the following command, it will build first the frontend and then the backend and generate ./out/server
.
# Build
$ go run -v ./cmd/build
# Run
$ ./out/server