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)