diff --git a/README.md b/README.md new file mode 100644 index 0000000..89b30cd --- /dev/null +++ b/README.md @@ -0,0 +1,108 @@ +

+ + Project logo +

+ +

Organizátorské Kartografické OKO - server

+ +
+ +[![Status](https://img.shields.io/badge/status-active-success.svg)]() +[![GitHub Issues](https://img.shields.io/github/issues/Cernobor/oko-server.svg)](https://github.com/Cernobor/oko-server/issues) +[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/Cernobor/oko-server.svg)](https://github.com/Cernobor/oko-server/pulls) + + +
+ +--- + +## 📝 Table of Contents + +- [About](#about) +- [Building](#building) +- [Usage](#usage) +- [Built Using](#built_using) +- [Authors](#authors) +- [Acknowledgments](#acknowledgement) + +## 🧐 About + +Central server for the [OKO](https://github.com/Cernobor/oko-app) app. +Manges users, provides map tiles and the whole map tile pack, receives geo features submitted by users and serves them back. + +## 🏗 Building + +The only requirement to build the server is [go](https://go.dev). + +In the root of the project, run + +``` +go build +``` + +which will produce the executable ``oko-server`` which you can just run (see [Usage](#usage)). + +## 🎈 Usage + +### Using docker + +Dockerfile is included, therefore to build the docker image, all that is needed to do is to run + +``` +docker build -t name:tag /path/to/the/root/of/the/repository +``` +or, if you have no local changes, you can build the image even without cloning the repository at all +``` +docker build -t name:tag https://github.com/Cernobor/oko-server.git +``` + +The image can then be run using the ``name:tag`` that you have given in the previous step. +Volume ``/data`` is available to share data between the host and the container. + +``` +docker run -v /path/to/data:/data name:tag [options...] +``` + +### Without docker + +Just run the previously built (see [Building](#building)) executable +``` +/path/to/oko-server [options...] +``` + +### Options + +The server is configurable via a set of options, some of which are required. +The table of options follows: + +| option | description | +| ------ | ----------- | +| ``-tilepack `` | **Required.** File that will be sent to clients when they request a tile pack, also used to serve tiles in online mode. | +| ``-port `` | Port where the server will listen. Default is ``8080``. | +| ``-dbfile `` | Path to the sqlite3 database file used for data storage. Will be created, if it does not exist upons startup. Default is ``./data.sqlite3``. | +| ``-reinit-db`` | If specified, the DB will be reinitialized, i.e. the DB schema will be recreated, deleting all data. | +| ``-min-zoom `` | Minimum supported zoom. Clients will receive this value during handshake. Default is ``1``. | +| ``-default-center-lat `` | Latitude of the default map center, formatted as a floating point number of degrees. Clients will receive this value during handhake. Default is ``0``. | +| ``-default-center-lng `` | Longitude of the default map center, formatted as a floating point number of degrees. Clients will receive this value during handhake. Default is ``0``. | +| ``-max-photo-width `` | Maximum width of stored pohotos. Uploaded photos exceeding this width will be rescaled to fit (keeping aspect ratio). If ``0``, no scaling will be done. Default is ``0``. | +| ``-max-photo-height `` | Maximum height of stored pohotos. Uploaded photos exceeding this height will be rescaled to fit (keeping aspect ratio). If ``0``, no scaling will be done. Default is ``0``. | +| ``-photo-quality `` | JPEG photo quality. Photos are reencoded to JPEG with this quality setting when uploaded. Default is ``90``. | +| ``-debug`` | If specified, logging level will be set do debug instead of info. w + +## ⛏️ Built Using + +- [Go](https://go.dev/) - Programming language +- [Gin](https://gin-gonic.com/) - HTTP handler +- [SQLite](https://www.sqlite.org/) - Database +- [mbtileserver](https://github.com/consbio/mbtileserver) - MBTiles tile server + +## ✍️ Authors + +- [@zegkljan](https://github.com/zegkljan) - Idea & Initial work +- [@0x416E64](https://github.com/0x416E64) - Docker and deployment tweaks + +See also the list of [contributors](https://github.com/Cernobor/oko-server/contributors) who participated in this project. + +## 🎉 Acknowledgements + +- Hat tip to anyone whose code was used diff --git a/main.go b/main.go index e17bd2a..866ea77 100644 --- a/main.go +++ b/main.go @@ -23,7 +23,6 @@ func main() { tilepackFileArg := flag.String("tilepack", "", "File that will be sent to clients when they request a tile pack, also used to serve tiles in online mode. Required.") portArg := flag.Int("port", 8080, "Port where the server will listen to. Default is 8080.") dbFileArg := flag.String("dbfile", "./data.sqlite3", "File that holds the server's sqlite3 database. Will be created if it does not exist. Default is \"./data.sqlite3\".") - apkFileArg := flag.String("apk", "", "APK file with the client app. If not specified, no APK will be available (404).") reinitDBArg := flag.Bool("reinit-db", false, "Reinitializes the DB, which means all the tables will be recreated, deleting all data.") minZoomArg := flag.Int("min-zoom", 1, "Minimum zoom that will be sent to clients.") defaultCenterLatArg := flag.Float64("default-center-lat", 0, "Latitude of the default map center.") @@ -57,7 +56,6 @@ func main() { Port: *portArg, DbPath: *dbFileArg, TilepackPath: *tilepackFileArg, - ApkPath: *apkFileArg, ReinitDB: *reinitDBArg, MinZoom: *minZoomArg, DefaultCenter: models.Coords{ diff --git a/server/server.go b/server/server.go index c9a4e94..72a9a38 100644 --- a/server/server.go +++ b/server/server.go @@ -46,7 +46,6 @@ type ServerConfig struct { Port int DbPath string TilepackPath string - ApkPath string ReinitDB bool MinZoom int DefaultCenter models.Coords