From a06c32ba1cc44b329ce712aa4db4235f3204a39b Mon Sep 17 00:00:00 2001 From: Gabor Szabo Date: Wed, 20 May 2026 05:06:47 +0200 Subject: [PATCH] docs(docs): add tech-stack badges to README (shields.io for-the-badge) (#273) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add 31 shields.io for-the-badge style badges to the README, grouped into a 4-badge status row (License · Release · CI · Python) and four tech-stack rows (Backend, Frontend, ML/AI, Tooling). Matches the visual style of the user-provided HTML5 badge example. All shields URLs HEAD-probed (200) and SVG-verified for logo presence on every badge that cites one (FastAPI, Pydantic, SQLAlchemy, PostgreSQL, React, TypeScript, Vite, Tailwind, shadcn/ui, TanStack Query, scikit-learn, PydanticAI, OpenAI, Anthropic, Ollama, Docker, uv, pnpm, GitHub Actions, Ruff, pytest, Python). LightGBM, XGBoost, structlog, mypy, and Alembic render as text-only badges by design — no canonical simple-icons brand entries exist for them. Release + CI badges are dynamic: they read from this repo so they self-update with each release and CI run on `dev` without further edits. --- README.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/README.md b/README.md index be623f9f..1d11bd1e 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,52 @@ Portfolio-grade end-to-end retail demand forecasting system. + + +[![License: MIT](https://img.shields.io/badge/License-MIT-3DA639?style=for-the-badge)](LICENSE) +[![Release](https://img.shields.io/github/v/release/w7-mgfcode/ForecastLabAI?style=for-the-badge&color=blueviolet&logo=github&logoColor=white)](https://github.com/w7-mgfcode/ForecastLabAI/releases) +[![CI](https://img.shields.io/github/actions/workflow/status/w7-mgfcode/ForecastLabAI/ci.yml?branch=dev&style=for-the-badge&label=CI&logo=githubactions&logoColor=white)](https://github.com/w7-mgfcode/ForecastLabAI/actions/workflows/ci.yml) +[![Python 3.12+](https://img.shields.io/badge/Python-3.12%2B-3776AB?style=for-the-badge&logo=python&logoColor=white)](pyproject.toml) + +**Backend** + +![FastAPI](https://img.shields.io/badge/FastAPI-009688?style=for-the-badge&logo=fastapi&logoColor=white) +![Pydantic v2](https://img.shields.io/badge/Pydantic_v2-E92063?style=for-the-badge&logo=pydantic&logoColor=white) +![SQLAlchemy 2.0](https://img.shields.io/badge/SQLAlchemy_2.0-D71F00?style=for-the-badge&logo=sqlalchemy&logoColor=white) +![PostgreSQL 16](https://img.shields.io/badge/PostgreSQL_16-4169E1?style=for-the-badge&logo=postgresql&logoColor=white) +![pgvector](https://img.shields.io/badge/pgvector-336791?style=for-the-badge&logo=postgresql&logoColor=white) +![Alembic](https://img.shields.io/badge/Alembic-6BA539?style=for-the-badge) +![structlog](https://img.shields.io/badge/structlog-FAC15A?style=for-the-badge&logoColor=black) + +**Frontend** + +![React 19](https://img.shields.io/badge/React_19-20232A?style=for-the-badge&logo=react&logoColor=61DAFB) +![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=for-the-badge&logo=typescript&logoColor=white) +![Vite 7](https://img.shields.io/badge/Vite_7-646CFF?style=for-the-badge&logo=vite&logoColor=white) +![Tailwind 4](https://img.shields.io/badge/Tailwind_4-06B6D4?style=for-the-badge&logo=tailwindcss&logoColor=white) +![shadcn/ui](https://img.shields.io/badge/shadcn/ui-000000?style=for-the-badge&logo=shadcnui&logoColor=white) +![TanStack Query](https://img.shields.io/badge/TanStack_Query-FF4154?style=for-the-badge&logo=reactquery&logoColor=white) + +**ML / AI** + +![scikit-learn](https://img.shields.io/badge/scikit--learn-F7931E?style=for-the-badge&logo=scikitlearn&logoColor=white) +![LightGBM](https://img.shields.io/badge/LightGBM-1FBAEE?style=for-the-badge) +![XGBoost](https://img.shields.io/badge/XGBoost-FF6F00?style=for-the-badge) +![PydanticAI](https://img.shields.io/badge/PydanticAI-E92063?style=for-the-badge&logo=pydantic&logoColor=white) +![OpenAI](https://img.shields.io/badge/OpenAI-412991?style=for-the-badge&logo=openai&logoColor=white) +![Anthropic](https://img.shields.io/badge/Anthropic-191919?style=for-the-badge&logo=anthropic&logoColor=white) +![Ollama](https://img.shields.io/badge/Ollama-000000?style=for-the-badge&logo=ollama&logoColor=white) + +**Tooling** + +![Docker](https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white) +![uv](https://img.shields.io/badge/uv-DE5FE9?style=for-the-badge&logo=astral&logoColor=white) +![pnpm](https://img.shields.io/badge/pnpm-F69220?style=for-the-badge&logo=pnpm&logoColor=white) +![GitHub Actions](https://img.shields.io/badge/GitHub_Actions-2088FF?style=for-the-badge&logo=githubactions&logoColor=white) +![Ruff](https://img.shields.io/badge/Ruff-FCC21B?style=for-the-badge&logo=ruff&logoColor=black) +![mypy --strict](https://img.shields.io/badge/mypy_--strict-1F5082?style=for-the-badge) +![pytest](https://img.shields.io/badge/pytest-0A9EDC?style=for-the-badge&logo=pytest&logoColor=white) + ## Features - **Data Platform**: Multi-table mini warehouse (store/product/calendar + sales + price/promo/inventory signals)