How can I continue frontmatter numbering in backmatter?

You can look at the package anti-matter – Typst Universe.

If you don’t want to use a package, then a simple PoC would be

#let frontmatter(body) = {
    set page(numbering: "i")
    body
}
#let mainmatter(body) = {
    set page(numbering: "1")
    context counter("antimatter").update(counter(page).get())
    body
}
#let backmatter(body) = {
    set page(numbering: "i")
    context counter(page).update(counter("antimatter").get())
    body    
}

#show: frontmatter
#lorem(100)
#pagebreak()
#lorem(100)

#show: mainmatter
#lorem(100)
#pagebreak()
#lorem(100)

#show: backmatter
#lorem(100)
#pagebreak()
#lorem(100)

2 Likes