Quiz Platform is a Open Source knowledge testing platform for mobile apps.
- Framework: Ktor
- Language: Kotlin
- Architecture: Clean
- Threading: Coroutines + Flow
- DI: Koin
- DB: Exposed, PostgreSQL
- Logging: Logback
- Testing: JUnit, Mockk
./gradlew clean build
- build project../gradlew run
- run project.
./gradlew buildFatJar
- build fat jar../gradlew buildImage
- build docker image.
./gradlew buildImage
- build docker image.
ssh user@your-server-ip
scp /home/user/jib-image.tar user@your-server-ip:/home/user
- upload the image.
docker load < /home/user/jib-image.tar
- load the image.docker images
- check the image.
docker run -e DB_JDBC_URL="REPLACE" -e DB_JDBC_USER="REPLACE" -e DB_JDBC_PASSWORD="REPLACE" -e THEME_PROMPT_FILE="REPLACE" -e TASK_PROMPT_FILE="REPLACE" -p 8080:8080 -t quiz-platform:your_semiversion
- run the container. Use-d
instead oft
to run in detached mode.docker ps
- check the container.
sudo apt update
- update apt.sudo apt install nginx -y
- install Nginx.
Example commands:
sudo nano /etc/nginx/sites-available/yourdomain.com
Example commands:
systemctl start nginx
systemctl enable nginx
systemctl status nginx
ufw allow 'Nginx HTTP'
- if you haven't done it beforeufw status
- if you haven't done it beforesystemctl reload nginx
ssh user@your-server-ip
scp /home/user/jib-image.tar user@your-server-ip:/home/user
- upload the image.
docker load < /home/user/jib-image.tar
- load the image.docker images
- check the image.
docker ps
docker stop <container_name_or_id>
-container_name_or_id
is the name or ID of the running container.docker rm <container_name_or_id>
-container_name_or_id
is the name or ID of the stopped container.
docker run -e DB_JDBC_URL="REPLACE" -e DB_JDBC_USER="REPLACE" -e DB_JDBC_PASSWORD="REPLACE" -e THEME_PROMPT_FILE="REPLACE" -e TASK_PROMPT_FILE="REPLACE" -p 8080:8080 -t quiz-platform:your_semiversion
- run the container. Use-d
instead oft
to run in detached mode.docker ps
- check the container.
docker images
- check the images.docker rmi <image_name_or_id>
-image_name_or_id
is the name or ID of the old image you want to remove.
brew install postgresql
brew services start postgresql
psql postgres
- Switch to the PostgreSQL userCREATE DATABASE themes;
- Create a new databaseCREATE USER postgres WITH PASSWORD 'password';
- Create a new userGRANT ALL PRIVILEGES ON DATABASE themes TO postgres;
- Grant privileges to the user\q
- Exit the PostgreSQL terminal
- Open the Database window.
- Click the + sign and choose Data Source → PostgreSQL.
- In the Data Source Properties dialog, specify the data source name and the database connection settings.
brew services stop postgresql
Read Database setup for development
Copyright 2025 Roman Likhachev
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.