{"id":51579196,"url":"https://github.com/dessima/tech-mind","last_synced_at":"2026-07-11T04:02:02.696Z","repository":{"id":370370962,"uuid":"1294435752","full_name":"DessimA/tech-mind","owner":"DessimA","description":"TechMind : MVP de organização inteligente de conhecimento técnico. Cadastro, classificação automática por ML e consulta de conteúdos com Laravel + Rails + FastAPI.","archived":false,"fork":false,"pushed_at":"2026-07-09T01:34:10.000Z","size":73,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-09T02:17:47.857Z","etag":null,"topics":["docker-compose","fastapi","laravel","localstack","machine-learning","mvp","nlp","postgres","rails","scikit-learn","sidekiq","terraform","text-classification","valkey"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DessimA.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-09T00:18:32.000Z","updated_at":"2026-07-09T02:14:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/DessimA/tech-mind","commit_stats":null,"previous_names":["dessima/tech-mind"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/DessimA/tech-mind","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DessimA%2Ftech-mind","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DessimA%2Ftech-mind/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DessimA%2Ftech-mind/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DessimA%2Ftech-mind/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DessimA","download_url":"https://codeload.github.com/DessimA/tech-mind/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DessimA%2Ftech-mind/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35350133,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-11T02:00:05.354Z","response_time":104,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker-compose","fastapi","laravel","localstack","machine-learning","mvp","nlp","postgres","rails","scikit-learn","sidekiq","terraform","text-classification","valkey"],"created_at":"2026-07-11T04:01:58.781Z","updated_at":"2026-07-11T04:02:02.691Z","avatar_url":"https://github.com/DessimA.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TechMind - Organização Inteligente de Conhecimento\n\n![PHP](https://img.shields.io/badge/PHP-8.3-777BB4?style=flat\u0026logo=php\u0026logoColor=white)\n![Laravel](https://img.shields.io/badge/Laravel-11-FF2D20?style=flat\u0026logo=laravel\u0026logoColor=white)\n![Ruby](https://img.shields.io/badge/Ruby-3.3-CC342D?style=flat\u0026logo=ruby\u0026logoColor=white)\n![Rails](https://img.shields.io/badge/Rails-8.1-D30001?style=flat\u0026logo=rubyonrails\u0026logoColor=white)\n![Python](https://img.shields.io/badge/Python-3.11-3776AB?style=flat\u0026logo=python\u0026logoColor=white)\n![FastAPI](https://img.shields.io/badge/FastAPI-009688?style=flat\u0026logo=fastapi\u0026logoColor=white)\n![scikit--learn](https://img.shields.io/badge/scikit--learn-F7931E?style=flat\u0026logo=scikitlearn\u0026logoColor=white)\n![PostgreSQL](https://img.shields.io/badge/PostgreSQL-16-4169E1?style=flat\u0026logo=postgresql\u0026logoColor=white)\n![Valkey](https://img.shields.io/badge/Valkey-8-DC382D?style=flat\u0026logo=valkey\u0026logoColor=white)\n![Terraform](https://img.shields.io/badge/Terraform-1.9-7B42BC?style=flat\u0026logo=terraform\u0026logoColor=white)\n![LocalStack](https://img.shields.io/badge/LocalStack-Pro-00AEF0?style=flat\u0026logo=localstack\u0026logoColor=white)\n![Docker](https://img.shields.io/badge/Docker-Compose-2496ED?style=flat\u0026logo=docker\u0026logoColor=white)\n\n---\n\n## Sobre o Projeto\n\nO **TechMind** é um MVP de sistema de organização inteligente de conhecimento técnico. Ele permite que usuários cadastrem, classifiquem e consultem conteúdos técnicos (artigos, documentações, anotações de estudo, tutoriais) de forma automatizada, utilizando Machine Learning para categorização e extração de palavras-chave.\n\n```mermaid\nflowchart LR\n    A[Usuário] --\u003e B[Laravel - Frontend]\n    B --\u003e C[Rails API - Backend]\n    C --\u003e D[FastAPI - ML Service]\n    C --\u003e E[PostgreSQL]\n    C --\u003e F[Valkey - Cache + Fila]\n\n    style A fill:#4E342E,color:#fff,stroke:#fff\n    style B fill:#1565C0,color:#fff,stroke:#fff\n    style C fill:#6A1B9A,color:#fff,stroke:#fff\n    style D fill:#2E7D32,color:#fff,stroke:#fff\n    style E fill:#0D47A1,color:#fff,stroke:#fff\n    style F fill:#E65100,color:#fff,stroke:#fff\n```\n\n---\n\n## Arquitetura\n\n| Componente | Tecnologia | Função |\n|---|---|---|\n| **Frontend** | PHP 8.3 + Laravel 11 | Interface do usuário |\n| **Backend** | Ruby 3.3 + Rails 8.1 (API) | Core de negócio, orquestração |\n| **ML Service** | Python 3.11 + FastAPI + scikit-learn | Classificação de texto (TF-IDF + LogisticRegression) |\n| **Cache** | Valkey 8 | Cache de queries + backend Sidekiq |\n| **Fila** | Sidekiq (via Valkey) | Processamento assíncrono de classificação |\n| **Banco** | PostgreSQL 16 | Persistência de dados |\n| **Infra** | LocalStack Pro + Terraform 1.9 | AWS simulada localmente |\n| **Orquestração** | Docker Compose | Ambiente 100% conteinerizado |\n\n---\n\n## Fluxo de Dados\n\n### Cadastro e Classificação\n\n```mermaid\nsequenceDiagram\n    participant U as Usuário\n    participant FE as Laravel\n    participant BE as Rails\n    participant SQ as Sidekiq\n    participant ML as FastAPI\n    participant DB as PostgreSQL\n\n    U-\u003e\u003eFE: Preenche formulário\n    FE-\u003e\u003eBE: POST /v1/conteudos\n    BE-\u003e\u003eDB: Salva (status: pending)\n    BE--\u003e\u003eFE: 201 Created\n    BE-\u003e\u003eSQ: Enfileira ClassificationJob\n    SQ-\u003e\u003eML: POST /predict { texto }\n    ML--\u003e\u003eSQ: { categoria, probabilidade, informacoes_adicionais }\n    SQ-\u003e\u003eDB: Atualiza status: done\n```\n\n### Entrada / Saída\n\n**POST /v1/conteudos**\n\n```json\n{\n  \"titulo\": \"Introdução ao Ruby on Rails\",\n  \"texto\": \"Neste conteúdo são apresentados os conceitos básicos para criação de APIs REST utilizando a linguagem Ruby e o framework Rails.\"\n}\n```\n\n**Resposta (após classificação):**\n\n```json\n{\n  \"categoria\": \"Backend\",\n  \"probabilidade\": 0.94,\n  \"informacoes_adicionais\": [\"Ruby\", \"Rails\", \"API REST\"]\n}\n```\n\n---\n\n## Estrutura do Projeto\n\n```\ntech-mind/\n├── docker-compose.yml       # Orquestração de todos os serviços\n├── .env                     # Variáveis de ambiente\n├── .env.example             # Exemplo de variáveis de ambiente\n├── .gitignore\n│\n├── infra/                   # Terraform + LocalStack\n│   ├── provider.tf          # Provider AWS apontando para LocalStack\n│   ├── main.tf              # S3 bucket + Secrets Manager\n│   ├── variables.tf         # Variáveis de entrada\n│   └── outputs.tf           # ARN do bucket e secret\n│\n├── frontend/                # PHP + Laravel\n│   ├── Dockerfile\n│   └── ...\n│\n├── backend/                 # Ruby + Rails (API mode)\n│   ├── Dockerfile\n│   └── ...\n│\n├── ml-service/              # Python + FastAPI\n│   ├── Dockerfile\n│   ├── requirements.txt\n│   ├── model.joblib         # Modelo treinado (gerado pelo notebook)\n│   ├── data/\n│   │   └── train.csv        # Dataset sintético (80 exemplos)\n│   ├── app/\n│   │   ├── main.py\n│   │   └── model/\n│   └── notebooks/\n│       └── techmind_ml.ipynb\n│\n└── docs/                    # Documentação completa\n    ├── 00-visao-geral.md\n    ├── 01-requisitos-funcionais.md\n    ├── 02-requisitos-nao-funcionais.md\n    ├── 03-arquitetura.md\n    ├── 04-historias-de-usuario.md\n    ├── 05-stacks-e-justificativas.md\n    ├── 06-matriz-de-decisoes.md\n    ├── 07-glossario.md\n    ├── 08-taxonomia-ml.md\n    ├── 09-contratos-api.md\n    ├── 10-modelo-de-dados.md\n    └── 10-variaveis-de-ambiente.md\n```\n\n---\n\n## Requisitos\n\n- Docker Engine 24+\n- Docker Compose V2 (plugin)\n- LocalStack Pro license key (via variável de ambiente)\n\nNenhuma dependência de Ruby, PHP ou Python é necessária na máquina host.\n\n---\n\n## Como Executar\n\n```bash\n# 1. Clone o repositório\ngit clone https://github.com/DessimA/tech-mind.git\ncd tech-mind\n\n# 2. Configure a chave do LocalStack Pro\nexport LOCALSTACK_AUTH_TOKEN=sua-chave-aqui\n\n# 3. Inicie todos os serviços\ndocker compose up -d\n\n# 4. Provisione a infraestrutura (S3 + Secrets Manager)\ndocker compose run --rm terraform init\ndocker compose run --rm terraform apply -auto-approve\n\n# 5. Acesse\n# Frontend (Laravel): http://localhost:80\n# (portas 3000 e 8000 são acessíveis apenas na rede interna do Docker;\n#  para debug, use: docker compose exec backend curl localhost:3000)\n```\n\n---\n\n## Documentação\n\nDocumentação completa disponível em [`docs/`](docs/):\n\n| Documento | Descrição |\n|---|---|\n| [00-visao-geral.md](docs/00-visao-geral.md) | Visão geral, objetivos e critérios de sucesso |\n| [01-requisitos-funcionais.md](docs/01-requisitos-funcionais.md) | 6 requisitos funcionais com diagramas |\n| [02-requisitos-nao-funcionais.md](docs/02-requisitos-nao-funcionais.md) | 9 requisitos não funcionais |\n| [03-arquitetura.md](docs/03-arquitetura.md) | Arquitetura C4 com diagramas Mermaid |\n| [04-historias-de-usuario.md](docs/04-historias-de-usuario.md) | 6 histórias de usuário (INVEST) |\n| [05-stacks-e-justificativas.md](docs/05-stacks-e-justificativas.md) | Stacks e justificativas das escolhas |\n| [06-matriz-de-decisoes.md](docs/06-matriz-de-decisoes.md) | Matriz de decisões do projeto |\n| [07-glossario.md](docs/07-glossario.md) | Glossário de termos técnicos |\n| [08-taxonomia-ml.md](docs/08-taxonomia-ml.md) | Taxonomia de categorias do ML |\n| [09-contratos-api.md](docs/09-contratos-api.md) | Contratos formais das APIs (request/response) |\n| [10-modelo-de-dados.md](docs/10-modelo-de-dados.md) | Schema do banco de dados, índices e estratégia de busca |\n| [10-variaveis-de-ambiente.md](docs/10-variaveis-de-ambiente.md) | Variáveis de ambiente do projeto |\n\n---\n\n## Testes\n\n```bash\n# Rodar testes de todos os serviços\ndocker compose --profile test up --abort-on-container-exit\n```\n\nFrameworks: PHPUnit (Laravel), RSpec + FactoryBot (Rails), Pytest (FastAPI).\n\n---\n\n## Contribuição\n\nContribuições são bem-vindas! Veja [CONTRIBUTING.md](CONTRIBUTING.md) para guia completo.\n\n- Reporte bugs em [Issues](https://github.com/DessimA/tech-mind/issues/new?template=bug_report.md)\n- Sugira features em [Issues](https://github.com/DessimA/tech-mind/issues/new?template=feature_request.md)\n\n## Segurança\n\nVulnerabilidades devem ser reportadas conforme descrito em [SECURITY.md](SECURITY.md). Não abra issues públicas.\n\n## Código de Conduta\n\nEste projeto adota o [Contributor Covenant](CODE_OF_CONDUCT.md). Participe de forma respeitosa e inclusiva.\n\n## Suporte\n\nVeja [SUPPORT.md](SUPPORT.md) para dúvidas frequentes e canais de suporte.\n\n---\n\n## Licença\n\nDistribuído sob licença MIT. Veja [LICENSE](LICENSE) para mais informações.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdessima%2Ftech-mind","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdessima%2Ftech-mind","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdessima%2Ftech-mind/lists"}