Giter Club home page Giter Club logo

diciotech's Introduction

@@ Leticia 'levxyca' ⭐ @@
@@ comunicação, tecnologia e pessoas! @@

> tem hobbies demais;
> é introvertida e comunicadora;
> conversa sobre tech e aleatoriedades;
> registra sua jornada pelas redes sociais.

! ‍desenvolvedora de mobile flutter
! apaixonada por front-end
! streamer de live coding
! criadora de conteúdo de programação e tecnologia
! co-fundadora/coordenadora da @feministech
! tech community manager na abacatinhos.dev
! estudante do universo de devlrel

- alura star
- github star
- embaixadora women tech makers da google

🔗 Me encontre

✍🏻 Blog posts recentes

📺 Videos recentes no Youtube

diciotech's People

Contributors

ana-cassia-invernizzi avatar armindomatheus avatar caducoder avatar chrishenderson07 avatar danieleolivs avatar davi-sant avatar davsilvam avatar fransborges avatar gabrielliosc avatar iuricode avatar jeffszo avatar juandesenvolvedor avatar kastrowalker avatar kiota-rita avatar kvnol avatar letyhashimoto avatar levxyca avatar madalena-rocha avatar matheus-pazinati avatar morganaschneider avatar morgannadev avatar nahtanpng avatar peacevan avatar raphaelts3 avatar romhenri avatar rwietter avatar ryrden avatar thiagofqs avatar ulissesjunior avatar vespasianoo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

diciotech's Issues

Automação de criação de novos termos e resolução de colisões na geração de IDs

Colisão de IDs

Tivemos dois pr's para a feature de cards favoritos, o primeiro #77 cria a feature de favoritar cards e coloca uma identificação única sequencial. O pr #87 faz um refactor nessa feature e altera o id sequencial para id baseado no título. Isso é bom pois evita adicionar manualmente o id.

Mas ainda ocorre de o mesmo título servir para conceitos diferentes, ou no caso do gif abaixo onde é removido caracteres que não são letras e o título fica para ambos c e c. Como mostrado no gif abaixo, onde o click no segundo card aciona apenas o primeiro já que ambos tem os mesmo id. Utilizar um UUID dinamicamente também é um problema, pois toda vez que a página for carregada, o id será outro e o id salvo no localStorage não será igual ao id do card.

duplicated-title-id

Para resolver este inconveniente, apliquei um algoritmo de hash simples que gera um id baseado em conteúdo, mais específicamente, a partir da descrição do conceito, que é uma cadeia de caracteres maior. Isso elimina tal problemática e não necessita o uso de dependências externas.

Automação de inserção de termos por CLI

Essa issue também se destina para a discussão de um Script JS executado pelo Node.js com zero dependências externas, no qual já estou desenvolvendo, para adicionar novos conceitos via CLI (Command-line interface).

Por exemplo, para rodar script pode ser com yarn new ou npm run new ou então pnpm run new. Onde new é um script do package.json.

$ npm run new
Digite o valor para title: Lambda
Digite o valor para description: Uma função lambda permite a criação de funções anônimas de primeira classe...
Digite o valor para tags: Conceito
Digite o valor para code: quadrado = lambda x: x**2

Por exemplo, a saída seria o novo termo gravado juntamente com o restante do cards_pt-br.json:

[
   {},
   {},
   {
    "id": "3090d928-b9a7-4fbd-9089-16d265075ef1",
    "title": "Lambda",
    "description": "Uma função lambda permite a criação de funções anônimas de primeira classe...",
    "tags": [
      "Conceito"
    ],
    "content": {
      "code": "quadrado = lambda x: x**2"
    }
  }
]

Nesse caso, o id é gerado automaticamente pelo crypto.randomUUID do Node, não seria necessário usar nenhuma biblioteca externa ao Node.js para fazer isso. Nesse caso, quando o termo for gerado pelo Script, terá por padrão um id e o código do card já trabalhará com este id ao invés do id gerado pelo algoritmo de hash de conteúdo descrito acima. Ou seja, ambos são suportados, podendo criar um novo termo manualmente mudando o código ou gerando a partir do CLI.

As bibliotecas utilizadas do Node são:

const fs = require("node:fs");
const path = require("node:path");
const readline = require("node:readline");
const { stdin: input, stdout: output } = require("node:process");
const crypto = require("node:crypto");

Isso visa automatizar o processo de adição de novos termos. Também visa escalabilidade já que após o arquivo cards_pt-br vier a ter milhares de linhas, torna-se mais pesado para abrir e pode ocorrer erros de comma, bracket, etc.

Corrigir pontuação e ajustar algumas tags dos termos

Com base no reply do @iuricode no PR #38, a feature do filtro realmente parece estar um pouco extensa. Concordando com ele, talvez pudéssemos explorar outras palavras-chave para refinar a filtragem dos cards, mesmo também entendendo que ao usar várias tags, teríamos uma filtragem mais precisa do conteúdo, mas já existe um campo de pesquisa para essa finalidade.

Nesse caso, abri o PR #61 para esses ajustes, mantendo apenas as seguintes opções no filtro: Back-end, Biblioteca, Conceito, Design, Ferramenta, Framework, Front-end, Mobile, Paradigma e Versionamento.

Cards de termos técnicos responsivos

Título da Issue: Cards de termos técnicos responsivos
Atualmente os cards estão com tamanho fixo, ou seja, quando alguém adiciona um texto grande no projeto, o card quebra, gerando um problema de legibilidade.

Exemplo:
Notamos esse problema a partir do #20!
image

Como resolver?
A ideia é comportar esses textos de alguma forma, talvez a mais simples seja deixar o tamanho dos cards crescer de acordo com o conteúdo de dentro.

Caso queira se aventurar mais, temos essa issue #12 com uma nova proposta de UI que pode ir sendo aplicada.

Adicionar novos termos técnicos dentro do projeto conforme a descrição

Olá! Eu havia iniciado um tempo atrás algumas explicações sobre termos técnicos e acho que seria bacana trazer esses termos para dentro do diciotech.

As palavras e explicações podem ser vistas neste repositório, mas segue a listagem delas abaixo:

  • Ambiente (local, dev, homologação e produção);
  • API;
  • Code Review;
  • Commit;
  • Deploy;
  • Json;
  • Pair Programming;
  • Pull Request.

E, se for aceita a proposta, gostaria de pedir que atribuísse a issue a mim, para que eu possa adicionar as palavras. Obrigada!

ideias iniciais ✨

lugar-para-jogar-tudo-que-vier-na-cabeça-sobre-o-projeto.mp3

o projeto foi idealizado pensando em:

  • termo técnicos explicados de uma forma simples
  • ter um site onde é possível a pessoa usuária visualizar todos os temos cadastrados
  • possibilitar a pessoa usuária a pesquisar pelo termo que ela quer dentro do site

Regras, requisitos e exigências em tags na documentação

Conforme as replies na issue #80 e no PR #38, foi discutido alguns pontos cruciais como regras e requisitos a serem seguidos nos futuros e existentes termos do projeto.

Atualmente, muitos "erros" ocorrem em alguns PRs de implementação de novos termos com uma tag atribuída, como: duplicações, tags que não batem com o conceito do termo, tags de linguagens de programação, etc. Muitos desses casos ainda ocorrem e já foram para produção, mas sempre acabam sendo corrigidos em outros PRs. Então, para manter uma maior organização e estabilidade do Diciotech em produção, a documentação do projeto deve conter uma seção exclusiva e detalhada apenas para isso.

O PR #71 adiciona uma parte, na documentação, mas ainda sim é necessário que outros pontos, regras e exigências estejam presentes. As regras sugeridas são as seguintes:

  • Todas as tags devem estar no singular;
  • Um termo, de forma obrigatória, deve ser vinculado a, no mínimo, uma tag;
  • Atualmente, as tags são case sensitivity, então, por padrão, apenas a primeira letra da tag deve ser maiúscula. Exemplo: Back-end, Conceito, Paradigma;
  • Atribuir a um termo apenas as tags presentes na documentação do projeto;
  • Se for necessário adicionar uma nova tag, primeiro deve ser aberto uma issue e, caso as pessoas usuárias concordem, um PR deve ser aberto, contendo a tag a ser acrescentada na documentação. A PR sendo aprovada, a nova tag poderá ser vinculada a um termo;
  • Não pode haver duplicações de tags em um mesmo termo. Exemplo: "tags": ["Conceito", "Conceito"];
  • Não podem existir tags de linguagens de programação, bibliotecas e frameworks. Exemplo: JavaScript, C#, React.js.

O que acham? Qualquer sugestão ou discordância, essa issue está aberta para os comentários.

Branding

@levxyca oie, fiz uma marca para o diciotech e tô com umas ideias para desenhar uma UI também, mas conversamos numa outra issue. O que você acha?

Guideline

Inserir dados de fonte dos conceitos apresentados

Seria interessante apresentar a fonte dos conceitos para que isso passe mais credibilidade e sirva de base para consulta.
Nesse caso seria adicionada a propriedade "font" que engloba "autor" e "source" na classe dos cards 👇.
`

{
  "title": "Abstração",
  "description": "Abstração é uma simplificação de ponto(s) específicos de algum sistema ou comportamento estamos tentando entender. Na programação, usamos abstrações o tempo todo. Isso significa que não precisamos entender todos os detalhes técnicos profundos para escrever código - como o funcionamento interno de um computador. Em vez disso, podemos usar ideias mais simples para criar nossos programas.",
  "tags": ["Conceito"],
  "font": {
     "autor": "Martin Fowler"
     "source": "Código Limpo"
     }
}

`

@levxyca, se possível atribuir a issue à mim!

Adicionar vários exemplos de código

Na na expressões ternárias temos a presença de um código como exemplo, porém em certos casos acho que podemos mostrar um exemplo em várias linguagens diferentes, já que dependo do exemplo a sintaxe pode mudar de linguagem pra linguagem

Adicionando templates de issue

Para tornar a experiência de contribuição mais eficaz, disponibilizaremos modelos de issues que as pessoas contribuidoras possam utilizar. Haverá três tipos distintos de modelos:

  • Template de issue para reportar bugs
  • Template de issue para solicitar uma nova funcionalidade
  • Template de issue para adicionar um novo termo ao dicionário do tecnologia (diciotech)

Adicionar tags no guia de contribuição

Dentro do nosso guia de contribuição temos uma seção que explica como adicionar novos termos no Diciotech!

Depois da adição do filtro, onde podemos adicionar tags no momento de adicionar um novo termo, seria interessante atualizar a nossa documentação para demonstrar como fazer isso e quais as opções de tags disponíveis.

Opções de tags:

  • Conceito
  • Mobile
  • Front-end
  • Back-end
  • Design

A ideia é centralizar nessas opções de tags mas deixar claro para a comunidade que caso nenhuma dessas tags se encaixe no termo, ela pode sugerir uma nova tag.

No arquivo dos cards é possível ver como é a estrutura das tags para atualizar o tutorial.

Refinando o "DarkMode" do Diciotech

A versão do dark mode do Diciotech pode ser aprimorada! A proposta envolve a criação de uma paleta de cores que funcione de forma consistente em todos os elementos, como nos cards, proporcionando uma experiência aprimorada e maior conforto durante a leitura.

Tarefas

  • Paleta de cores completa para o dark mode
  • Implementação

Critérios

  • Garantir um bom contraste visual para garantir a acessibilidade

Recomendo que você dê uma olhada na implementação atual. Para a criação da paleta de cores, caso não tenha muita experiência nesse campo, sugiro alguns sites que podem ser úteis:

Bug na exibição dos cards na tela principal.

No arquivo .jon tinha uma linha que contia uma vírgula indesejada, foi feita a remoção e o erro foi corrigido, apesar do erro ser simples a página no atual momento está sem ultilidade, pois nenhum card é exibido no momento.

Correção na PR: #81

@levxyca

Implementar Dark Mode

Conforme conversado na issue #26 em uma sugestão do @iuricode, a ideia é implementar um modo escuro (dark mode) no diciotech para melhorar a experiência de leitura.

Implementação do modo escuro (dark mode): Uma valiosa adição ao projeto seria a inclusão do modo escuro. Dado que se trata de um site focado na experiência de leitura, não podemos deixar de oferecer aos usuários a opção de utilizar o modo escuro, que proporciona conforto visual.

Dark mode refatorado

No PR #79, refatorei o código JavaScript e CSS do dark mode e separei toda a estilização do mesmo em um arquivo SASS diferente, para uma maior organização do projeto.

Além disso, adicionei novas tonalidades da cor primária (#6e6197) no _variabels.sass e removi a tag duplicada "Back-End" que estava presente no termo Python. Com relação as tags, deve ser tomado mais cuidado para que essas duplicações não venham a ocorrer com frequência, pois essas tags são case sensitivity.

Sugestão de novas tags

Com base nas tags já existentes (Conceito, Mobile, Front-end, Back-end, Design), acredito que seja pertinente algumas situações:

  • a tag de design talvez pode ser dividida em UI (user interface) e UX (user experience);
  • inserir a tag de multiplataforma, já que alguns conceitos se aplicam a mais de um segmento;
  • inserir a tag de projetos que se aplica a algumas ferramentas utilizadas em áreas de tecnologia.

Converter CSS para SASS

Conforme conversado na issue #26 em uma sugestão do @iuricode, a ideia é converter o código CSS atual para SASS, proporcionando diversas vantagens e tornando as modificações de estilização um pouco mais organizadas.

Adoção do pré-processador Sass: Sugiro considerar a conversão do código CSS atual para Sass. Isso proporcionaria diversas vantagens, facilitando a revisão dos commits e tornando as modificações no código mais organizadas, uma vez que estariam estruturadas em módulos.

Sass + Dark Mode

Sugestões para o Futuro

  • Adoção do pré-processador Sass: Sugiro considerar a conversão do código CSS atual para Sass. Isso proporcionaria diversas vantagens, facilitando a revisão dos commits e tornando as modificações no código mais organizadas, uma vez que estariam estruturadas em módulos.

  • Implementação do modo escuro (dark mode): Uma valiosa adição ao projeto seria a inclusão do modo escuro. Dado que se trata de um site focado na experiência de leitura, não podemos deixar de oferecer aos usuários a opção de utilizar o modo escuro, que proporciona conforto visual.

Nova UI com features

@levxyca

Aproveitei a issue #7 para repensar a UI do Diciotech, abaixo coloquei os links do Figma, se curtir podemos começar a desenvolver essa nova UI. Eu pensei que poderíamos ainda manter da forma que está, pois o projeto ainda é pequeno, mas com a melhoria de buscar os conteúdos de um json ao invés de diretamente do HTML.

image

Figma:

Filtro

Sugestões para o Futuro (parte 2)

Considerando que a comunidade já discutiu os dois tópicos mencionados na Issue #26, gostaria de apresentar uma nova sugestão para o futuro:

  • Implementação de um filtro: Seria muito útil contar com um filtro que permitisse aos usuários buscar especificamente por cards que sejam de seu interesse. Isso significa ter a capacidade de filtrar por categoria, como "CSS", para encontrar de maneira mais eficiente conteúdo relacionado a esse tópico.

Forte abraço!

Quebra de linha de elementos <code>

Atualmente, alguns cards possuem exemplos de código, em elemento <code>, como o Operador Ternário e o Optional Chaining. No caso do segundo termo, há uma quebra de linha na qual a cor de fundo, da linha a baixo, sobrepõe a da linha a cima, impossibilitando a leitura do usuário.

Para corrigir esse problema, realizei o pull request #72! Veja a imagem a baixo com o pós alterações e de como estava sendo mostrado antes:

Além disso, nesse mesmo PR, deixei a fonte do elemento em itálico, para um maior destaque, e removi a tag "JavaScript", que estava presente em alguns termos no arquivo cards_pt-br.json, para ficar conforme a issue #62.

Adicionar filtro por letra

Sugestão: Adicionar filtro por letra!

Seria legal se o usuário pudesse ler termos de uma letra por dia. Por exemplo, hoje quero ler o máximo de termos que iniciem com a letra A.

Também seria uma outra opção de navegabilidade :)

Código renderizado em uma única linha e falta de recuo (indentação)

Descrição

Atualmente o código que possui múltiplas linhas é renderizado como se fosse uma única linha não recuada devidamente, o que torna difícil de ler nestes casos. Em teoria basta adicionar a tag <pre class="card__code"> antes de <code><code/> e mudar duas coisinhas no CSS white-space: pre-wrap e width: 100% em &__code.

<div class="card__content">
+	<pre class="card__code">
		<code>${card.content.code}</code>
+	</pre>
</div>
&__code
+    white-space: pre-wrap
+    width: 100%

Antes (atual)

Na renderização de todos os cards.

img

Na busca

img

Depois (fix)

Na renderização de todos os cards.

Important

Para ficar formatado assim, é necessário usar quebras de linhas e espaçamento. Na CLI que estou fazendo #112, o contribuidor colocaria o código formatado em um arquivo, a CLI faria a leitura e gravação do código com as quebras de linhas e espaçamentos já formatados. Caso a inserção seja manual no JSON, seria necessário colocar quebras de linhas espaçamento por conta própria.

img

Na busca

img

Adição de termos relacionados a programação baixo nível ou médio

Criei alguns novos termos, tive certa dificuldade na definição das tags, claro que, como ainda há poucas palavras cadastradas foi fácil encontrar quais já existem e assim reaproveitar mas fica de sugestão futura a implementação de um sistema de cadastro de tags + sugestão de tags

Adicionando uma largura máxima para o último card da lista.

Neste pull request #52 estou adicionando uma largura máxima para o último card da lista, onde o mesmo por não ter uma largura máxima esticava até o tamanho máximo do elemento pai, trazendo um pouco inconsistência ao layout.

Após plicar as mudanças sugeridas, o último elemento manterá o padrão de design.

Captura de tela de 2023-09-29 14-30-47

Refatoração favoritar cards

No pull request #87, recebendo como base o PR #77, o JavaScript do mesmo foi refatorado, pois para a feature de favoritar um card funcionar, depende de adicionar uma chave "id" em cada termo no arquivo cards_pt-br.json. Com a refatoração, cada card é armazenado no localStorage através do seu título (trabalhando como id único) com todas as palavras minúsculas, separadas por hífen e sem símbolos e acentos.

Além disso, foi alterado a mensagem do modal e acrescentado um link externo onde explica a utilização dos cookies: Why websites use cookies?.

Adicionar scroll nos cards

Acessando o site a gente percebe que os cards não tem uma altura limitada o que deixa as coisas fora do padrão. Que tal definirmos uma altura e se o texto passar desse tamanho que definimos adicionamos um scroll no card ?

Adicionar opção de favoritar um card

Uma ideia muito interessante seria a possibilidade de marcar cards como favoritos, armazenando de forma local no navegador. Assim, os usuários podem desfrutar de uma maior organização e até mesmo ordenar e filtrar os resultados de acordo com os cards favoritados.

Objetivo

Adicionar uma opção de favoritar um card, armazenando os dados de forma local, com localStorage ou sessionStorage.

Tarefas

  • Incluir opção de favoritar um card, de forma individual;
  • Implementar armazenamento local (localStorageou sessionStorage) para manter informações de favoritos para os usuários;
  • Implementar um consentimento de cookies para se adequar a LGPD.

Referências

Esta issue pode ser relacionada e complementada com as seguinte issues:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.