Credits
Built With
- Go - API and server-side tile rendering
- Canvas (tdewolff) - vector rendering in Go
- SQLite 3 (zombiezen) - fast single-file database
- Vue 3 - frontend framework
- BalmUI - Material UI components
- OpenLayers - in-browser tiled image rendering
- geoBoundaries for geographic boundary data used for reverse geolocation
- more Go libraries
- more npm libraries
Special Thanks
- Open Images Dataset for the sample image dataset
- OpenSeadragon tiled image rendering library used previously
- sams96/rgeo for previous reverse geolocation implementation and inspiration
- Best-README-Template and readme.so for readme ideas
Third Party Libraries
Thanks to all the authors of the third party libraries used in this project.
API
mod
module photofield
go 1.23.0
toolchain go1.24.5
require (
github.com/EdlinOrg/prominentcolor v1.0.0
github.com/alecthomas/assert/v2 v2.2.2
github.com/alecthomas/participle/v2 v2.0.0
github.com/deepmap/oapi-codegen v1.8.2
github.com/dgraph-io/ristretto v0.1.2-0.20230929213430-5239be55a219
github.com/docker/go-units v0.4.0
github.com/felixge/fgprof v0.9.5
github.com/gammazero/deque v0.2.1
github.com/go-chi/chi/v5 v5.0.4
github.com/go-chi/cors v1.2.0
github.com/go-chi/render v1.0.1
github.com/goccy/go-yaml v1.7.17
github.com/golang-migrate/migrate/v4 v4.15.0-beta.1
github.com/golang/geo v0.0.0-20230421003525-6adc56603217
github.com/gosimple/slug v1.10.0
github.com/grafana/pyroscope-go v1.2.0
github.com/hako/durafmt v0.0.0-20200605151348-3a43fc422dd9
github.com/imdario/mergo v0.3.13
github.com/joho/godotenv v1.3.0
github.com/karrick/godirwalk v1.15.6
github.com/kelindar/intmap v1.1.0
github.com/lpar/gzipped v1.1.0
github.com/matoous/go-nanoid/v2 v2.0.0
github.com/mostlygeek/go-exiftool v0.0.0-20190130212521-a0e5de16f760
github.com/petar/GoLLRB v0.0.0-20210522233825-ae3b015fd3e9
github.com/peterstace/simplefeatures v0.44.0
github.com/pixiv/go-libjpeg v0.0.0-20190822045933-3da21a74767d
github.com/prometheus/client_golang v1.11.0
github.com/prometheus/client_model v0.2.0
github.com/rjeczalik/notify v0.9.3
github.com/rwcarlsen/goexif v0.0.0-20190401172101-9e8deecbddbd
github.com/sheerun/queue v1.0.1
github.com/smilyorg/tinygpkg v0.2.1
github.com/tdewolff/canvas v0.0.0-20200504121106-e2600b35c365
github.com/x448/float16 v0.8.4
github.com/zelenko/go v0.0.0-20210326203833-2c97fc39fc36
golang.org/x/exp v0.0.0-20231108232855-2478ac86f678
golang.org/x/image v0.29.0
golang.org/x/sync v0.16.0
modernc.org/sqlite v1.34.5
zombiezen.com/go/sqlite v1.4.0
)
require (
github.com/ByteArena/poly2tri-go v0.0.0-20170716161910-d102ad91854f // indirect
github.com/ajstarks/svgo v0.0.0-20200320125537-f189e35d30ca // indirect
github.com/alecthomas/repr v0.2.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/buger/jsonparser v1.0.0 // indirect
github.com/cespare/xxhash/v2 v2.1.1 // indirect
github.com/dsnet/compress v0.0.1 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/fatih/color v1.9.0 // indirect
github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90 // indirect
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
github.com/golang/gddo v0.0.0-20210115222349-20d68f94ee1f // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/gosimple/unidecode v1.0.0 // indirect
github.com/grafana/pyroscope-go/godeltaprof v0.1.8 // indirect
github.com/hashicorp/errwrap v1.0.0 // indirect
github.com/hashicorp/go-multierror v1.1.0 // indirect
github.com/hexops/gotextdiff v1.0.3 // indirect
github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5 // indirect
github.com/klauspost/compress v1.17.8 // indirect
github.com/lucasb-eyer/go-colorful v1.0.3 // indirect
github.com/mattn/go-colorable v0.1.9 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
github.com/ncruces/go-strftime v0.1.9 // indirect
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 // indirect
github.com/oliamb/cutter v0.2.2 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/prometheus/common v0.26.0 // indirect
github.com/prometheus/procfs v0.6.0 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
github.com/tdewolff/minify/v2 v2.7.1-0.20200112204046-70870d25a935 // indirect
github.com/tdewolff/parse/v2 v2.4.2 // indirect
github.com/wcharczuk/go-chart v2.0.2-0.20191206192251-962b9abdec2b+incompatible // indirect
go.uber.org/atomic v1.7.0 // indirect
golang.org/x/sys v0.22.0 // indirect
golang.org/x/text v0.27.0 // indirect
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
gonum.org/v1/plot v0.0.0-20190410204940-3a5f52653745 // indirect
google.golang.org/protobuf v1.26.0 // indirect
modernc.org/libc v1.55.3 // indirect
modernc.org/mathutil v1.6.0 // indirect
modernc.org/memory v1.8.0 // indirect
)
UI
json
{
"name": "photofield",
"version": "0.0.0",
"license": "MIT",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build"
},
"dependencies": {
"@fontsource/roboto": "^5.2.5",
"@unhead/vue": "^2.0.2",
"@vitejs/plugin-vue": "^5.2.3",
"@vueuse/core": "^13.0.0",
"balm-ui": "^10.31.0",
"copy-image-clipboard": "^1.0.1",
"date-fns": "^2.28.0",
"fast-deep-equal": "^3.1.3",
"kalmanjs": "^1.1.0",
"ol": "^6.15.1",
"plyr": "^3.7.8",
"qs": "^6.14.0",
"swrv": "^1.1.0",
"throttle-debounce": "^5.0.2",
"vue": "^3.5.17",
"vue-concurrency": "^5.0.3",
"vue-multiselect": "^3.2.0",
"vue-router": "^4.5.0"
},
"devDependencies": {
"eslint": "^9.29.0",
"eslint-plugin-vue": "^9.33.0",
"rollup-plugin-visualizer": "^6.0.3",
"vite": "^6.2.3",
"vite-plugin-compression": "^0.5.1"
}
}