├── .gitignore ├── README.md ├── art └── arch-design-url-short.jpg ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle.kts └── src ├── main ├── kotlin │ └── com │ │ └── himanshoe │ │ ├── Application.kt │ │ ├── Status.kt │ │ ├── base │ │ ├── Routing.kt │ │ ├── Serialization.kt │ │ └── provider │ │ │ ├── BaseUseCase.kt │ │ │ ├── database │ │ │ ├── DatabaseProvider.kt │ │ │ └── DatabaseProviderImpl.kt │ │ │ ├── domain │ │ │ ├── DomainProvider.kt │ │ │ └── DomainProviderImpl.kt │ │ │ ├── exception │ │ │ ├── ExceptionProvider.kt │ │ │ └── ExceptionProviderImpl.kt │ │ │ ├── repository │ │ │ ├── RepositoryProvider.kt │ │ │ └── RepositoryProviderImpl.kt │ │ │ └── service │ │ │ ├── ServiceProvider.kt │ │ │ └── ServiceProviderImpl.kt │ │ ├── di │ │ ├── DatabaseLocator.kt │ │ ├── DomainLocator.kt │ │ ├── ExceptionLocator.kt │ │ ├── RepositoryLocator.kt │ │ └── ServiceLocator.kt │ │ ├── feature │ │ ├── frontend │ │ │ ├── FrontendRouting.kt │ │ │ └── views │ │ │ │ ├── LandingPage.kt │ │ │ │ └── ResponsePage.kt │ │ └── url │ │ │ ├── domain │ │ │ ├── CreateShortUrlUseCase.kt │ │ │ ├── FindShortUrlUseCase.kt │ │ │ └── FindUrlHitCountUseCase.kt │ │ │ ├── entity │ │ │ └── UrlEntity.kt │ │ │ ├── repository │ │ │ ├── UrlRepository.kt │ │ │ └── UrlRepositoryImpl.kt │ │ │ ├── request │ │ │ └── UrlRequest.kt │ │ │ ├── routing │ │ │ ├── UrlLocation.kt │ │ │ └── UrlRoute.kt │ │ │ └── service │ │ │ ├── UrlService.kt │ │ │ └── UrlServiceImpl.kt │ │ └── util │ │ ├── RequestExt.kt │ │ ├── Response.kt │ │ └── Util.kt └── resources │ ├── application.conf │ └── logback.xml └── test └── kotlin └── com └── himanshoe ├── ApplicationTest.kt ├── MainCoroutineRule.kt └── feature └── url └── domain └── CreateShortUrlUseCaseTest.kt /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/.gitignore -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/README.md -------------------------------------------------------------------------------- /art/arch-design-url-short.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/art/arch-design-url-short.jpg -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/gradle.properties -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/gradle/wrapper/gradle-wrapper.properties -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/gradlew -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/gradlew.bat -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | rootProject.name = "url-shortner" 2 | -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/Application.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/Application.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/Status.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/Status.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/base/Routing.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/base/Routing.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/base/Serialization.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/base/Serialization.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/base/provider/BaseUseCase.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/base/provider/BaseUseCase.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/base/provider/database/DatabaseProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/base/provider/database/DatabaseProvider.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/base/provider/database/DatabaseProviderImpl.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/base/provider/database/DatabaseProviderImpl.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/base/provider/domain/DomainProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/base/provider/domain/DomainProvider.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/base/provider/domain/DomainProviderImpl.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/base/provider/domain/DomainProviderImpl.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/base/provider/exception/ExceptionProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/base/provider/exception/ExceptionProvider.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/base/provider/exception/ExceptionProviderImpl.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/base/provider/exception/ExceptionProviderImpl.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/base/provider/repository/RepositoryProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/base/provider/repository/RepositoryProvider.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/base/provider/repository/RepositoryProviderImpl.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/base/provider/repository/RepositoryProviderImpl.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/base/provider/service/ServiceProvider.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/base/provider/service/ServiceProvider.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/base/provider/service/ServiceProviderImpl.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/base/provider/service/ServiceProviderImpl.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/di/DatabaseLocator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/di/DatabaseLocator.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/di/DomainLocator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/di/DomainLocator.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/di/ExceptionLocator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/di/ExceptionLocator.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/di/RepositoryLocator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/di/RepositoryLocator.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/di/ServiceLocator.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/di/ServiceLocator.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/feature/frontend/FrontendRouting.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/feature/frontend/FrontendRouting.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/feature/frontend/views/LandingPage.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/feature/frontend/views/LandingPage.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/feature/frontend/views/ResponsePage.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/feature/frontend/views/ResponsePage.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/feature/url/domain/CreateShortUrlUseCase.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/feature/url/domain/CreateShortUrlUseCase.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/feature/url/domain/FindShortUrlUseCase.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/feature/url/domain/FindShortUrlUseCase.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/feature/url/domain/FindUrlHitCountUseCase.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/feature/url/domain/FindUrlHitCountUseCase.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/feature/url/entity/UrlEntity.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/feature/url/entity/UrlEntity.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/feature/url/repository/UrlRepository.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/feature/url/repository/UrlRepository.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/feature/url/repository/UrlRepositoryImpl.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/feature/url/repository/UrlRepositoryImpl.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/feature/url/request/UrlRequest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/feature/url/request/UrlRequest.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/feature/url/routing/UrlLocation.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/feature/url/routing/UrlLocation.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/feature/url/routing/UrlRoute.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/feature/url/routing/UrlRoute.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/feature/url/service/UrlService.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/feature/url/service/UrlService.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/feature/url/service/UrlServiceImpl.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/feature/url/service/UrlServiceImpl.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/util/RequestExt.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/util/RequestExt.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/util/Response.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/util/Response.kt -------------------------------------------------------------------------------- /src/main/kotlin/com/himanshoe/util/Util.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/kotlin/com/himanshoe/util/Util.kt -------------------------------------------------------------------------------- /src/main/resources/application.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/resources/application.conf -------------------------------------------------------------------------------- /src/main/resources/logback.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/main/resources/logback.xml -------------------------------------------------------------------------------- /src/test/kotlin/com/himanshoe/ApplicationTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/test/kotlin/com/himanshoe/ApplicationTest.kt -------------------------------------------------------------------------------- /src/test/kotlin/com/himanshoe/MainCoroutineRule.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/test/kotlin/com/himanshoe/MainCoroutineRule.kt -------------------------------------------------------------------------------- /src/test/kotlin/com/himanshoe/feature/url/domain/CreateShortUrlUseCaseTest.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hi-manshu/ktor-url-shortener/HEAD/src/test/kotlin/com/himanshoe/feature/url/domain/CreateShortUrlUseCaseTest.kt --------------------------------------------------------------------------------