scisearch is a basic implementation of a server capable of searching arxiv.org papers by keywords and managing bookmark. The server is multi-tenant, although it was initially designed for the author's personal usage.
The projects uses scala in purely functional style. The only runtime dependency is PostgreSQL. Tested on scala 2.13 (Java 17) and PostgreSQL 16.
scisearch exposes RESTFul HTTP API with search-, subscription- and bookmarks-related endpoints: see docs/openapi.yml OpenAPI specification for details.
The server should be configured with environment variables:
SCISEARCH_BIND(default:0.0.0.0)SCISEARCH_PORT(default: 3000)SCISEARCH_POSTGRESQL_HOSTSCISEARCH_POSTGRESQL_PORTSCISEARCH_POSTGRESQL_DATABASESCISEARCH_POSTGRESQL_USERNAMESCISEARCH_POSTGRESQL_PASSWORDSCISEARCH_POSTGRESQL_POOL_SIZE(default:4)
scisearch uses pbkdf2 to hash user passwords:
SCISEARCH_TOKEN_SALTSCISEARCH_TOKEN_SECRET
You can either build the project manually:
sbt clean compile runor use predefined docker image:
docker build --tag scisearch:1.0.0 .
# or `sbt docker:publishLocal`
docker compose upTo run unit tests:
sbt testThere are some basic E2E tests:
sbt IntegrationTest/test