We have been huge fans of https://bg.translit.cc/ for the past 25 years.
In fact after 25 years of use the phonetic mapping, correct or not, has now become canon.
Here it is:
So here we preserve the bg.translit.cc mapping for future use (such as in this Racket Toy racket-toys/Latin-to-Cyrillic.rkt at main · draychev/racket-toys · GitHub)
{
"а": ["a"],
"б": ["b"],
"в": ["v", "w"],
"г": ["g"],
"д": ["d"],
"е": ["e"],
"ж": ["zh"],
"з": ["z"],
"и": ["i"],
"й": ["j"],
"к": ["k"],
"л": ["l"],
"м": ["m"],
"н": ["n"],
"о": ["o"],
"п": ["p"],
"р": ["r"],
"с": ["s"],
"т": ["t"],
"у": ["u"],
"ф": ["f"],
"х": ["h", "x"],
"ц": ["c"],
"ч": ["ch"],
"ш": ["sh"],
"щ": ["sht"],
"ъ": ["\""],
"ь": ["y"],
"ю": ["ju", "yu", "ü"],
"я": ["ja", "ya", "q"],
"№": ["#"],
"§": ["§"],
"«": ["«"],
"»": ["»"]
}