A quick photo sharing app built during some spare time on holiday break.
This was basically an excuse for me to learn Pocketbase and PrimeVue.
There is a demo instance running at https://picfolio.mattcampbell.dev
- Go (1.23): The backend is built on top of PocketBase.
- node (22): The frontend is built on Vue's Vite template, which the Go backend will proxy.
The app uses GitHub OAuth to handle authentication. The environent variables OAUTH_GITHUB_CLIENT
and OAUTH_GITHUB_SECRET
are required. You will have to create your own GitHub OAuth project and set the redirect URL to http://localhost:8080/api/oauth2-redirect - see PocketBase docs for more information.
There is a ~40MB prebuilt image available in GitHub Packages:
- Copy
.env.example
file to.env
and fill in the required values. - Create a folder for your data:
mkdir data
- Run the image:
docker run --env-file .env -v ./data:/pb_data --rm -it ghcr.io/codingcampbell/picfolio:latest
The app will be available at http://localhost:8080
The admin UI is available at http://localhost:8080/\_/
The admin login information is specified by the
SUPERUSER_EMAIL
and SUPERUSER_PASSWORD
environment variables.
To simplify above requirements, there is devcontainer config available, tested with VSCode's Dev Containers extension.
- Open this repository in VSCode
- Copy
.env.example
file to.env
and fill in the required values - Run "Reopen in container" from command palette
- Run default build command to start the server
- Alternatively, in terminal:
go run server.go serve --http 0.0.0.0
- Browse to http://localhost:8080