Organizátorské Kartografické OKO - server
[]()
[](https://github.com/Cernobor/oko-server/issues)
[](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``. |
| ``-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