feat(01-01): create HTTP routes and Main entry point

- HealthRoutes with GET /health returning 'ok'
- Routes composition point for all route modules
- Main extends ZIOAppDefault with HOCON config
- ASCII sun banner with SUMMERCMS branding
- Server reads port from application.conf
This commit is contained in:
Jakub Zych
2026-02-04 21:43:24 +01:00
parent 4278b84614
commit 3757cf883b
3 changed files with 69 additions and 0 deletions

35
summercms/src/Main.scala Normal file
View File

@@ -0,0 +1,35 @@
import zio.*
import zio.http.*
import zio.config.typesafe.TypesafeConfigProvider
import api.Routes
import _root_.config.{AppConfig as SummerConfig}
object Main extends ZIOAppDefault {
private val banner: String =
"""
| .
| \ | /
| '-.ooooo.-'
| --- ooooo ---
| .-'ooooo'-.
| / | \
| '
|
| S U M M E R C M S
|""".stripMargin
override val bootstrap: ZLayer[ZIOAppArgs, Any, Any] =
Runtime.setConfigProvider(TypesafeConfigProvider.fromResourcePath())
override def run: ZIO[Any, Any, Any] =
for {
cfg <- ZIO.config[SummerConfig](SummerConfig.config)
_ <- Console.printLine(banner)
_ <- Console.printLine(s" Starting on port ${cfg.server.port}...")
_ <- Console.printLine("")
_ <- Server.serve(Routes.routes).provide(Server.defaultWithPort(cfg.server.port))
} yield ()
}