Use this app as a starting point for your own customized PocketBase backend with SvelteKit frontend. This is a high-performance frontend+backend combination, since frontend is static and backend is a single compiled Golang binary (JAMstack baby!).
adapter-static
and ssr
is OFF.main.go
/api/hello
)
and database event hooks (e.g. executing Go handler functions when a database row is created)vite
)modd
when you edit Go code./pb/pb_hooks
To understand the backend, see ./pb/README.md ("pb" == PocketBase) To understand the frontend, see ./sk/README.md ("sk" == SvelteKit)
Read those README files before proceeding.
Follow these steps CAREFULLY, or else it won't work. Also read the README files referred above before proceeding.
This method is the most recommended method for setting up this application in most use cases, especially when customizing with Go code.
Make sure your Docker daemon is running then complete the following steps:
.env.example
to .env
and then edit it to match your environment.
Also, if you wish, copy docker-compose.override.yml
to docker-compose.override.yml
and edit it to your taste before proceeding.
And then just run docker compose up -d
./sk
directory. Install dependencies by
running npx pnpm install
npm run dev:backend
This runs go build
in the /pb
directory and runs modd
for live development on a
backend server/sk
directory, and run the command npm run dev
.
This starts the frontend dev server.This method is a good alternative for simple use cases that don't use either Docker or Go, and instead uses JavaScript-exclusive customizations.
pocketbase.exe
from the .zip
file you downloaded into the /pb
folder within your project./sk
directory and run the command npm run backend
"backend"
script in the ./sk/package.json
file to cd .. && cd pb && pocketbase serve --publicDir=../sk/build
/sk
directory and run the followingnpx pnpm install
npm run dev
This method works if you have Go Tools installed and want to set up the machine directly on your specific OS and you don't want to use Docker.
go version
. If there is an error, set up the go compiler in acccordance with the type of OS you are using.go.mod
file is ready to be built by navigating to the /pb
directory and running go mod tidy
in the terminal, especially if the file is throwing errors.go build
. This may take a momentmodd
for live devlopment, after building, install the latest version by running go install github.com/cortesi/modd/cmd/modd@latest
, test the installation by running modd
. If successful, data migration should occur and a backend development server should be running. You can learn more by reading about it in the README located in the /pb
directory.cd sk && npm run develop
. When you open the localhost page in your browser, the “Hello” page should have an “Hello World” message coming from the API responseVisit http://localhost:5173 (sk) or http://localhost:8090 (pb)
If you are running modd
, making changes in the Svelte code (frontend) or Go code (backend) will show
results (almost) immediately.
To use the app as a user / tester ...
hello
page shows and example of frontend calling a custom backend API implemented in Go.posts
page shows all existing posts. If that page is empty, then you might want to create some posts. You must be logged in to be able to create posts.Login
form, you can enter an existing username/password, or check the register
checkbox to create a new account (it registers the user and log in immediately).The above are just some sample features. Now go ahead and implement all kinds of new features.
See the build process details in the README files for backend and frontend.
Please read about the "hooks" system in ./pb/README.md It is a very easy and powerful way to extend your application with minimal configuration and perhaps no code.
Please provide feedback by opening an issue or starting a discussion.