- Install required tools.
- Fork and clone the repository.
- Open it in your favorite editor. VSC is recommended. For small changes you can also use web-based GitHub editor.
- Open terminal. You can use built-in VSC terminal.
- Run
deno installto install required client dependencies. - Run
go mod downloadto install required server dependencies (optional). - Run
deno task initto create.envfile and initialize the database.noenvandnodboptions are available. - Run
deno task compile:clientto create client files. - Change the
.envfile.- Set up server connection with SQLite.
- Set up JWT secret.
- Run
deno task devto start the server.
The best way is to use two terminals, with a third for other tasks:
Note
You can use Visual Studio Code's task commands: Tasks: Run Task.
- Compile Client & Watch
- Serve
deno task compile:client watchdeno task devBefore committing your changes, make sure to run the prepare task to format:
deno task prepare- https://shoelace.style
- https://htmx.org/docs/
- https://htmx.org/reference/
- https://pkg.go.dev/html/template
- https://docs.gofiber.io/next/
Write clear, concise PR titles that explain the "why" behind changes.
We use Conventional Commits. Since we
squash on merge, the PR title becomes the commit message in main, so it's
important to get it right.
Format: type(scope): description
Types: feat, fix, docs, style, refactor, perf, test, build,
ci, chore, revert
Scopes (optional): a11y, blog, deps, docs, i18n, ui
Examples:
fix: resolve search pagination issuefeat: add package version comparisonfix(i18n): update French translationschore(deps): update esbuild to v0.8
Where front end changes are made, please include before and after screenshots in your pull request description.
Note
Use lowercase letters in your pull request title. Individual commit messages within your PR don't need to follow this format since they'll be squashed.
Note
You should be a repository owner or have write access to create a release.
You can create new release and git tag automatically using GitHub workflow.
Available options:
patchminormajorreleasealpha patchalpha minoralpha majoralpha releasebeta patchbeta minorbeta majorbeta release
Examples:
| Release type | Result |
|---|---|
| major | 0.0.1 → 1.0.0 → 2.0.0 |
| minor | 0.0.1 → 0.1.0 → 0.2.0 |
| patch | 0.0.1 → 0.0.2 → 0.0.3 |
| patch | 0.0.1.alpha.1 → 0.0.1 |
| patch alpha | 0.0.1.alpha.1 → 0.0.2-alpha.0 |
| patch beta | 0.0.1.alpha.1 → 0.0.2-beta.0 |
| release | 0.0.1.alpha.1 → 0.0.1 |
| release alpha | 0.0.1.alpha.1 → 0.0.1-alpha.2 |
| release beta | 0.0.1.alpha.1 → 0.0.1-beta.0 |
| alpha | 0.0.1.alpha.1 → 1.0.0-alpha.0 |
| beta | 0.0.1.alpha.1 → 1.0.0-beta.0 |
You can get next version and changelog output without creating a release:
deno task releaseYou can also create a release from your machine, but it is not recommended:
deno task release --forceCreating a standalone server binary is useful for deploying the server to production or for distributing it as a standalone application.
Available go build tags:
- Environment:
[none]enables client files watching.prodnormal mode.
- Client embedding:
[none]enables client files embedding. The server binary will become standalone.litedisables files embedding. The server binary will use closest ./client/static and ./client/templates directories. This option makes the server binary more flexible and reduces its size.
Example: go -o dist/server.exe -tags lite,prod .
Available deno tasks:
# -tags prod
deno task compile:server
deno task compile:server:cross
# -tags lite
deno task compile:server dev
deno task compile:server:cross dev