Olá Alex, parabéns pela conclusão do projeto e por ter usado uma forma alternativa de fazer esse projeto, eu sinceramente achei bem interessante essa ideia de usar classes para fazer a renderização do seu projeto.
Pelo que percebi, parece que você se baseou no React para fazer ele não foi? Tanto que uma curiosidade, fazer projetos assim não é muito "SEO-Friendly", então caso vá fazer um projeto que você quer que seja bem Rankeado pelo SEO, evite utilizar esse método, e isso vale até mesmo pro React.
Bom, aqui no Frontend Mentor, você não precisa fazer os projetos em uma ordem especÃfica, você pode pular para os projetos de nÃvel 2, os projetos Juniors, que a maioria deles utiliza JS, então se quiser praticar especificamente JS, recomendo que dê uma olhadas naqueles projetos, pois eles ajudarão muito a praticar JS.
Sobre HTML semântico, sei como se sente, realmente tende a ser confuso no inÃcio, mas com a prática você começa a pegar o jeito com eles, no seu projeto por exemplo, sua <div id="app">
, poderia ser alterada para uma tag <main>
, ou sua <section id = 'cardQrCode'>
se tornar uma tag <main>
, mas caso você opte por transformar a <div>
em uma <main>
, então eu sugiro que troque a <section>
para uma <article>
.
A tag <main>
serve para delimitar o conteúdo principal da página, sempre depois do <body>
é recomendado utilizar essa tag, já sobre o <article>
, ele serve para indicar um conteúdo que é autoexplicativo e independente do resto da página, e esse card é isso.
Ainda sobre essa parte de acessibilidade, notei que na sua tag <img/>
você não utilizou o atributo alt
, utilizar ele é muito importante para ajudar pessoas com deficiência visual a visualizar a página de forma correta, tanto que o leitor de tela lê o conteúdo do atributo alt
, e quando você não quiser passar um alt
, você pode adicionar ele e deixar o valor vazio, dessa forma: alt=""
, mas no caso desse projeto em especÃfico, era sim necessário passar um texto alt
.
E novamente parabéns pela conclusão do projeto, e por ter escolhido um jeito diferente de de fazer ele, caso algo que eu tenha dito tenha deixado alguma duvida, por favor, pergunte abaixo que tentarei ajudar da melhor forma possÃvel.
Edit: Havia esquecido de mencionar, mas notei também que tem trechos no seu JS que não estão fazendo nada, como por exemplo: const alturaTela = window.innerHeight;
, como eles não fazem nada o mais correto seria removê-los.