You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.9 KiB
Markdown
70 lines
1.9 KiB
Markdown
2 years ago
|
# Go Vite Kit
|
||
|
|
||
|
Minimal boilerplate project for a Golang server using [Fiber](https://github.com/gofiber/fiber) and [ViteJS](https://github.com/vitejs/vite) for static pages
|
||
|
|
||
|
## Features
|
||
|
|
||
|
- ⚡️ [Go Fiber](https://github.com/gofiber/fiber)
|
||
|
- 📦 [ViteJS](http://vitejs.dev/)
|
||
|
- 🎨 [Sass](https://sass-lang.com/)
|
||
|
- 🗄️ [Sqlite3](https://github.com/mattn/go-sqlite3)
|
||
|
|
||
|
## Architecture
|
||
|
|
||
|
- `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 the `HtmlEntrypoints` 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 the `HtmlEntrypoints` variable. This is also used while developing to let Vite know add all necessary entrypoints to the dev server.
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
To setup the project first install the required npm packages
|
||
|
|
||
|
```bash
|
||
|
# Install all JS dependencies
|
||
|
$ npm install
|
||
|
```
|
||
|
|
||
|
then you can start versioning the **lock file** of your package manager.
|
||
|
|
||
|
### Development
|
||
|
|
||
|
```bash
|
||
|
# Development
|
||
|
$ MODE=dev go run -v ./cmd/server
|
||
|
|
||
|
# Development with watcher
|
||
|
$ fd -e go | MODE=dev entr -r go run -v ./cmd/server
|
||
|
```
|
||
|
|
||
|
### Production
|
||
|
|
||
|
You can build everything with the following command, it will build first the frontend and then the backend and generate `./out/server`.
|
||
|
|
||
|
```bash
|
||
|
# Build
|
||
|
$ go run -v ./cmd/build
|
||
|
|
||
|
# Run
|
||
|
$ ./out/server
|
||
|
```
|