``` fun main(args: Array<String>) { val ma...
# getting-started
h
Copy code
fun main(args: Array<String>) {
  val mapper = ObjectMapper()
  val json = Book::class.java.getResource("/books.json")
  
  mapper.registerModule(KotlinModule())
  val app = Javalin.create().apply {
    port(7070)
    enableStaticFiles("/public")
  }
  BookRepo.init()
  
  app.get("/new") { new(it) }
  
  <http://app.post|app.post>("/new-auto") { it.html("This has not been supported yet.") }
  
  <http://app.post|app.post>("/new-book-manual") { manual(it) }
  
  app.get("/books/:id") { book(it) }
  
  app.get("/books") { it.renderVelocity("/velocity/book/Books.vm", mutableMapOf("books" to BookRepo.getAll())) }
  
  app.get("/") { it.redirect("/books") }
  
  //incomplete
  app.get("/find") {
    return@get
    it.html(get(
      "<https://api.isbndb.com/book/1484746430>", mapOf("X-API-Key" to args.component1()),
      timeout = 120000.0).text)
  }
  
  app.event(EventType.SERVER_STARTED) { e ->
    val bridge: BookBridge = mapper.reader().forType(BookBridge::class.java).readValue(json)
    bridge.books.forEach(BookRepo::add)
  }
  
  app.event(EventType.SERVER_STOPPING) { e ->
      val bridge = BookBridge(BookRepo.getAll())
      mapper.writeValue(File(json.file), bridge)
  }
  
  app.start()
  
}