GraphQL API for the KStreamlined mobile apps.
The API combines multiple Kotlin-related RSS feeds into a single list of FeedEntry and supports filtering by feed sources.
Currently supported feed sources:
- Kotlin Blog - Latest news from the official Kotlin Blog
- Kotlin YouTube Channel - Videos from the official Kotlin YouTube channel
- Talking Kotlin - Podcast on Kotlin and more by JetBrains
- Kotlin Weekly - Weekly community Kotlin newsletter
Setup the required environment variables:
KS_REDIS_REST_URL
KS_REDIS_REST_TOKEN
KS_GCLOUD_PROJECT_ID
KS_CF_BASE_URL
KS_CF_ACCOUNT_ID
KS_CF_API_TOKEN
Run gcloud auth application-default login to authenticate Firestore.
To compile the project:
./gradlew assembleTo run unit tests and static analysis:
./gradlew checkTo run the service as a Spring Boot application:
./gradlew bootRunThe GraphQL playground is available at:
http://localhost:8000/graphiql
To assemble an executable jar archive:
./gradlew bootJarIntegration tests are run against local HTTP stubs and Firestore emulator managed by Testcontainers.
Start Docker Desktop (or a compatible alternative like OrbStack), then run:
./gradlew integrationTestMake sure the required version of GraalVM JDK is installed.
To compile a native executable:
./gradlew nativeCompileTo run the native executable:
./gradlew nativeRunNative image hints are declared in code and generated by Spring AOT.
Native compatibility tests run the native executable against native metadata dependent code paths using local HTTP stubs and Firestore emulator managed by Testcontainers.
Start Docker Desktop (or a compatible alternative like OrbStack), then run:
./gradlew nativeCompatibilityTestCopyright 2022 Yang Chen
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.