Netlify install
Best for most first-time installs. Netlify builds the Next.js app, hosts it with HTTPS, and stores production data with Netlify Blobs.
Deploy to NetlifyThis guide is written for someone who has never installed a web app before. Start with Netlify if you want the easiest private hosted version. Local hosting is still included below for people who want to run it from their own computer or server.
For most people, Netlify is the simpler install because it gives you hosting, HTTPS, and an always-on URL without keeping your own computer running.
Best for most first-time installs. Netlify builds the Next.js app, hosts it with HTTPS, and stores production data with Netlify Blobs.
Deploy to NetlifyBest when you want to test Shoot Desk on your own computer or run it from a server you manage. It only works while the app is running.
Use local hostingUse this when you want Shoot Desk online behind your own login. Netlify reads the Shoot Desk source from GitHub, builds the app, and gives you a hosted URL.
You need GitHub to access the Shoot Desk source code and a Netlify account for hosting. Signing in to Netlify with GitHub is the simplest path.
Open the Shoot Desk repo on GitHub and click Fork. A fork is
just a copy of the app source so Netlify can build it from your account.
Your login settings and workspace data are added in later steps.
release branch for installs. Do not deploy from
main; main is the active development branch and
may include unfinished changes.
In Netlify, choose Add new project, then
Import an existing project, then connect GitHub and select
your Shoot Desk fork. In the deploy settings, set the production branch to
release.
If Netlify asks for build settings, use the values already in
netlify.toml:
Build command: npm run build
Publish directory: .next
Node version: 22
Before using the site, add these variables in Netlify under
Site configuration or Project configuration,
then Environment variables.
The private username for the Shoot Desk login screen.
A long password. Do not reuse an important personal password.
A long random value used to sign the app login cookie.
Generate an auth secret locally if you have Node installed:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
These are not required for the app to boot, but they make invoices and the public gear list feel like yours before you start editing inside the app.
WORKSPACE_NAME, WORKSPACE_OWNER_NAME, WORKSPACE_EMAILWORKSPACE_CHECK_PAYABLE_TO, WORKSPACE_ZELLE, WORKSPACE_VENMOPUBLIC_GEARLIST_BRAND_NAME, PUBLIC_GEARLIST_CONTACT_EMAIL, PUBLIC_GEARLIST_INTRO
The full list lives in .env.example. Leave blank any field you
do not use.
Trigger a deploy in Netlify. When the deploy finishes, open the Netlify URL. You should land on the Shoot Desk login page.
/gearlist to the end of the URL.APP_USERNAME and APP_PASSWORD.Use this path when you want Shoot Desk on your own computer or a server you manage. Run each command in Terminal on macOS or PowerShell on Windows.
Install Node.js 22 and Git. Node runs the app. Git downloads the repo. npm comes bundled with Node.
Pick a folder where you keep projects, then clone the public repository. Cloning means Git downloads the app files to your computer.
git clone --branch release https://github.com/JustinMDigital/shoot-desk.git
cd shoot-desk
git is not found, Git is not installed or
Terminal needs to be reopened.
Dependencies are the packages Shoot Desk needs to run. This can take a few minutes the first time.
npm install
Copy the example environment file, then edit the new .env.local
file. This file stays on your computer and supplies the local login screen.
cp .env.example .env.local
On Windows PowerShell, use this instead:
copy .env.example .env.local
Set these values inside .env.local:
APP_USERNAME: the username you type on the login screen.APP_PASSWORD: a long private password.AUTH_SECRET: a random secret used to sign login cookies.Generate an auth secret with Node:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
Copy the private app config example. Then edit
private-app-config.json with your name, email, invoice defaults,
payment fields, and public gear-list text.
cp private-app-config.example.json private-app-config.json
On Windows PowerShell, use this instead:
copy private-app-config.example.json private-app-config.json
.env.local, private-app-config.json, and
anything in data/ on your computer. They can contain private
contact, payment, address, login, and workspace data.
Start the development server:
npm run dev
Open http://localhost:3000 in your browser. Log in with the
APP_USERNAME and APP_PASSWORD you set.
Skip this for a fresh install. Use it only when you already have local Shoot Desk data and want that same data inside a Netlify site.
Run this from the local Shoot Desk folder. It creates an ignored export file.
npm run data:export
This checks what would be written without touching Netlify.
npm run data:import:blobs -- --dry-run
Set NETLIFY_SITE_ID and NETLIFY_AUTH_TOKEN locally,
then run the import. Keep the token only in your local Terminal session or
local environment.
npm run data:import:blobs
Most first-time problems are missing tools, commands run from the wrong folder, or environment variables that were never added to Netlify.
git is not found: install Git, then reopen Terminal.node or npm is not found: install Node.js 22, then reopen Terminal.npm install fails: make sure you are inside the shoot-desk folder.npm run dev is still running and open http://localhost:3000.npm run dev. Local installs are not always-on websites unless the computer stays awake and the app keeps running.npm run build and the publish directory is .next.APP_USERNAME, APP_PASSWORD, and AUTH_SECRET are set in the same place the app is running.