Skip to content

Clintonrocha98/quero-programar

Repository files navigation

QueroProgramar

Uma plataforma web open-source projetada para guiar desenvolvedores iniciantes com trilhas de aprendizado, recursos curados e documentação técnica.

Tech Stack

Tech Stack

Este projeto utiliza uma arquitetura moderna focada em performance e experiência de desenvolvimento (DX).

  • Framework: React 18 + Vite
  • Linguagem: TypeScript
  • Estilização: Tailwind CSS (com configuração personalizada "Dark Metallic")
  • Conteúdo: MDX (Markdown + JSX)
  • Roteamento: React Router v7
  • Ícones: Lucide React
  • Gerenciador de Pacotes: pnpm

Começando

  1. Clone o repositório:

    git clone https://github.com/seu-usuario/quero-programar.git
    cd quero-programar
  2. Instale as dependências:

    pnpm install
  3. Inicie o servidor de desenvolvimento:

    pnpm dev
  4. Build para produção:

    pnpm build

Arquitetura do Projeto

src/
├── components/
│   ├── ui/               # Componentes base reutilizáveis (Card, Tag, Skeleton...)
│   └── ...               # Componentes de negócio (ResourceCard, TechnologyCard...)
├── data/
│   └── content/
│       ├── technologies/ # Arquivos MDX de tecnologias
│       └── pages/        # Arquivos MDX de páginas soltas
├── pages/                # Componentes de página e rotas
├── lib/                  # Utilitários (cn, formatação)
├── types/                # Definições de tipos globais
└── App.tsx               # Configuração de rotas principal

Design System "Dark Metallic"

O projeto utiliza um tema personalizado escuro com tons metálicos.

  • Cores Principais: Variáveis metal-100 a metal-950 definem a escala de cinza azulada.
  • Acentos: steel-blue, cyan-accent, amber-accent, emerald-accent, rose-accent.
  • Tipografia: Configurada via @tailwindcss/typography para renderização elegante de arquivos Markdown.

Guia de Contribuição de Conteúdo (MDX)

Toda a documentação de tecnologias e trilhas vive em arquivos .mdx dentro de src/data/content.

Como adicionar uma nova tecnologia ou tópico:

  1. Crie o arquivo: Adicione um novo arquivo .mdx em src/data/content/ (ex: rust.mdx).

  2. Defina o Frontmatter (Obrigatório): No topo do arquivo, você deve exportar o objeto frontmatter:

    export const frontmatter = {
      id: "rust",                 // Slug usado na URL (ex: /tecnologias/rust)
      title: "Rust",              // Título exibido na página
      description: "Uma linguagem focada em segurança e performance.",
      icon: "🦀",                 // Emoji ou ícone
      color: "bg-orange-600"      // Cor de fundo do ícone (classe Tailwind)
    }
  3. Importe os Componentes: Abaixo do frontmatter, importe os componentes que você usará:

    import { ResourceCard } from '@/components/resource-card'
    import { Callout } from '@/components/callout'
    import { ContentSection } from '@/components/content-section'
    import { CodeBlock } from '@/components/code-block'
  4. Escreva o Conteúdo: Utilize Markdown padrão misturado com os componentes React:

    # Introdução
    
    Rust é incrível. Aqui está um exemplo de código:
    
    <CodeBlock 
      language="rust" 
      code={`fn main() {
        println!("Hello World!");
      }`} 
    />
    
    <ContentSection title="Recursos Básicos">
      <ResourceCard 
        title="O Livro de Rust" 
        url="https://doc.rust-lang.org/book/" 
        type="documentacao"
      >
        A documentação oficial.
      </ResourceCard>
    </ContentSection>
    
    <Callout type="insight">Comece pelo Ownership e Borrowing!</Callout>
  5. Registre o Conteúdo: Abra src/data/content/index.ts e registre seu novo arquivo:

    // 1. Importe o conteúdo e o frontmatter
    import RustContent, { frontmatter as rustMeta } from './technologies/rust.mdx'
    
    // ...
    
    // 2. Adicione ao objeto 'technologies'
    export const technologies: Record<string, ContentItem<TechnologyMeta>> = {
      // ... outras tecnologias
      rust: {
        meta: rustMeta,
        Content: RustContent,
      },
    }

Componentes Disponíveis no MDX

  • <ContentSection title="Título" level="beginner|intermediate|advanced">: Agrupa conteúdo com um título e badge de nível opcional.
  • <ResourceCard title="" url="" type="curso|leitura|..." >: Card para links externos. O type define a cor da tag automaticamente.
  • <Callout type="tip|warning|insight|info">: Caixas de destaque para dicas ou avisos.
  • <CodeBlock code="" language="" filename="">: Bloco de código com syntax highlighting e botão de copiar.
  • <QuoteBlock variant="default|primary|accent">: Citações estilizadas.

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors