Skip to content

Repository files navigation

Curso em Texto

O Curso em Texto é uma plataforma de cursos livres em formato textual, que incentiva a leitura e o aprendizado profundo.

A proposta é resgatar a essência do aprendizado escrito — direto, acessível e fácil de manter — sem depender de vídeos longos, edição complexa ou custos altos de produção.

Acreditamos que toda pessoa tem algo de valioso para ensinar e algo novo para aprender.


Conteúdo

Stack

Começando

  1. Faça o fork no GitHub:

    • Clique no botão "Fork" no canto superior direito
    • Selecione sua conta para criar o fork
  2. Clone seu fork localmente:

    git clone https://github.com/SEU_USUARIO/curso-em-texto.git
    cd curso-em-texto

Configurando upstream

  1. Adicione o repositório original como upstream:

    git remote add upstream https://github.com/union-developers-group/curso-em-texto.git
  2. Verifique os remotes configurados:

    git remote -v

Configuração do projeto

Pré-requisitos

  • Node.js >= 22
  • Docker

Baixar e configurar Docker

Baixe e configure o Docker conforme seu sistema operacional.

Configurar variáveis de ambiente

Copie o arquivo .env.example e renomeie para .env no diretório apps/backend/ e adicione o seguinte valores nas variáveis:

# apps/backend/.env
POSTGRES_USER="admin"
POSTGRES_PASSWORD="admin"
POSTGRES_DB="curso-em-texto"
DATABASE_URL="postgresql://admin:admin@localhost:5432/curso-em-texto?schema=public"

Instalar dependências

# Instalar todas as dependências do monorepo
npm install

Subir Docker

npm run docker

Executar migrations

npm run --workspace=backend db:migrate

Iniciando o servidor de desenvolvimento

npm run dev

Esse comando vai iniciar tanto o frontend como o backend do projeto utilizndo o Turborepo.

Testando rota de exemplo

  1. Faça download do Insomnia
  2. Faça uma requisição Post no Insomnia para a URL http://localhost:8000/api/example/create, conforme a imagem abaixo
image

Tip

Se tudo estiver certo, você deve receber status 201.

Trabalhando com workspaces

Este projeto usa npm workspaces para gerenciar o monorepo.

Executar comandos apenas em um workspace

# Iniciar apenas o backend
npm run dev --workspace=backend

# Iniciar apenas o frontend
npm run dev --workspace=frontend

Instalando dependências

# Instala o axios apenas no backend
npm i axios --workspace=backend

# Instala o axios apenas no frontend
npm i axios --workspace=frontend

Rodando o Storybook

Caution

Os componentes devem ser desenvolvidos utilizando o ambiente do Storybook.

  1. Rode o comando npm run storybook --workspace=frontend
  2. Acesse http://localhost:6006

Comandos úteis por workspace

Backend:

# Desenvolvimento
npm run dev --workspace=backend

# Banco de dados
npm run db:studio --workspace=backend  # Interface web do Drizzle
npm run db:generate --workspace=backend  # Gerar migrações
npm run db:migrate --workspace=backend   # Executar migrações

# Testes
npm run test --workspace=backend        # Roda todos os testes
npm run test:watch --workspace=backend   # Roda os testes em modo watch

Frontend:

# Desenvolvimento
npm run dev --workspace=frontend

# Inicia o ambiente de desenvolvimento do Storybook
npm run storybook --workspace=frontend

# Testes
npm run test --workspace=frontend       # Roda todos os testes unitários
npm run test:watch --workspace=frontend   # Roda os testes em modo watch

Design

Layout

Você pode visualizar o layout do projeto, clicando aqui.

UX

Roadmap

Em desenvolvimento

  • Sistema de autenticação

    • Cadastro e login de usuários.
    • Integração com OAuth (Google e GitHub).
    • Rules.
  • Criação de cursos

    • CRUD de cursos (título, descrição, tags).
    • Editor de conteúdo em texto.
    • Organização em capítulos e lições.

    Planejado

  • Perfil de usuário

    • Informações básicas (nome, bio, redes sociais).
    • Avatar do usuário.
  • Sistema de curadoria de cursos

    • Aprovação e bloqueio de cursos.
    • Destaque de cursos recomendados.
  • Sistema de denúncias

    • Denúncia de conteúdo inadequado.
    • Revisão de denúncias pela equipe.
  • Sistema de anotações

    • Usuário pode criar notas pessoais dentro das lições.
  • Sistema de favoritos

    • Salvar cursos/lessons para ver depois.
  • Busca avançada

    • Busca por cursos, lições e autores.
  • Gamificação

    • Sistema de pontos/reputação para autores.
    • Badges para contribuidores ativos.
  • Sistema de recompensa para criadores de cursos

    • Troca de pontos por recompensas.
  • Comentários e feedback

    • Espaço de comentários em cursos e lições.
    • Votação em comentários (upvote/downvote).

Comunidade

Faça parte da nossa comunidade no Discord.

Contribuindo

Quer nos ajudar? Clique aqui e saiba como começar.

About

Curso em Texto é uma plataforma gratuita e open source de cursos em formato textual. Com objetivo de oferecer um aprendizado profundo e de qualidade, oferecendo cursos para diversas áreas.

Topics

Resources

Contributing

Stars

16 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages