You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This project is a backend application that serves as an advanced link management system, extending the functionality of
traditional link shorteners. Instead of shortening a single URL, each entry in the database corresponds to a unique
code (e.g., 33333) that maps to multiple different links, effectively providing multiple "slots" per code. This
allows for greater flexibility in organizing and accessing grouped links under a single identifier.
Features
Multi-Link Codes: Associate multiple URLs with a single short code for grouped link management.
Asynchronous and Non-Blocking Operations: Leveraging Kotlin coroutines and suspend functions to ensure high
performance and scalability.
Database Integration: Utilizes MongoDB for flexible and scalable data storage.
Containerized Deployment: Deployable via Docker for consistency across environments.
Technology Stack
Kotlin: Primary programming language used for its modern features and interoperability with Java.
Quarkus: Supersonic Subatomic Java framework tailored for Kubernetes and GraalVM integrations.
Kotlin Coroutines: Enables asynchronous programming with a simple and concise codebase.
Jackson: Facilitates JSON parsing and serialization for seamless data interchange.
MongoDB: NoSQL database chosen for its scalability and flexibility in handling diverse data structures.
Docker: Ensures the application can be easily deployed and run in isolated environments.
Architecture
The application is designed with a focus on asynchronicity and non-blocking operations:
Asynchronous Request Handling: All HTTP requests are processed using non-blocking I/O, improving throughput and
resource utilization.
Suspend Functions: Core operations are implemented with Kotlin's suspend functions to manage concurrency
efficiently.
Reactive Database Access: Interaction with MongoDB is performed asynchronously, avoiding blocking threads and
enhancing performance under load.
Configuration can be done using Docker environment variables. The most commonly used ones are listed below.
Additional configuration options are available: https://quarkus.io/guides/all-config
Note: When converting Quarkus-style property keys to environment variable format, use the following conventions: