Pixel Code Platform
Self-hostable coding challenges platform
Unless there are obvious issues found later, I'm not going to change the API URIs or request/response schemas anymore.
Implementation changes might still happen though.
First, build the app with Gradle:
./gradlew build
Then, prepare public and private key pairs.
This will be put in the environment variables file.
openssl genrsa -out rsaPrivateKey.pem 2048
openssl rsa -pubout -in rsaPrivateKey.pem -out publicKey.pem
openssl pkcs8 -topk8 -nocrypt -inform pem -in rsaPrivateKey.pem -outform pem -out privateKey.pem
rm rsaPrivateKey.pem
You need to run the app with these environment variables, either from the command line or a .env
file.
MP_JWT_VERIFY_PUBLICKEY=
SMALLRYE_JWT_SIGN_KEY=
QUARKUS_DATASOURCE_DB_KIND=
QUARKUS_DATASOURCE_JDBC_URL=
QUARKUS_DATASOURCE_USERNAME=
QUARKUS_DATASOURCE_PASSWORD=
QUARKUS_HTTP_CORS_ORIGINS=
QUARKUS_REST_CLIENT_CODE_EXEC_SERVER_URL=
- QUARKUS_DATASOURCE_DB_KIND can either be
mysql
ormariadb
.src/main/resources/db/changeLog.sql
is tested on those. QUARKUS_REST_CLIENT_CODE_EXEC_SERVER_URL
is an instance of either coxecude or containexec. You can also create your own code execution server that exposes an API similar tocoxecude
.
Start the app with this command:
java -jar build/(build result file).jar
Original README from Quarkus below.
This project uses Quarkus, the Supersonic Subatomic Java Framework.
If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ .
You can run your application in dev mode that enables live coding using:
./gradlew quarkusDev
NOTE: Quarkus now ships with a Dev UI, which is available in dev mode only at http://localhost:8080/q/dev/.
The application can be packaged using:
./gradlew build
It produces the quarkus-run.jar
file in the build/quarkus-app/
directory.
Be aware that it’s not an über-jar as the dependencies are copied into
the build/quarkus-app/lib/
directory.
The application is now runnable using java -jar build/quarkus-app/quarkus-run.jar
.
If you want to build an über-jar, execute the following command:
./gradlew build -Dquarkus.package.type=uber-jar
The application, packaged as an über-jar, is now runnable using java -jar build/*-runner.jar
.
You can create a native executable using:
./gradlew build -Dquarkus.package.type=native
Or, if you don't have GraalVM installed, you can run the native executable build in a container using:
./gradlew build -Dquarkus.package.type=native -Dquarkus.native.container-build=true
You can then execute your native executable with: ./build/pcp-1.0-SNAPSHOT-runner
If you want to learn more about building native executables, please consult https://quarkus.io/guides/gradle-tooling.