|
| 1 | +<h1 align="center">📊 Admin Dashboard — React + TypeScript</h1> |
| 2 | + |
| 3 | +<p align="center"> |
| 4 | +Painel administrativo de nível profissional: autenticação, CRUD completo, tabela de dados, gráficos e dark mode. |
| 5 | +</p> |
| 6 | + |
| 7 | +<p align="center"> |
| 8 | + <img src="https://img.shields.io/badge/React-20232A?style=flat&logo=react&logoColor=61DAFB"/> |
| 9 | + <img src="https://img.shields.io/badge/TypeScript-3178C6?style=flat&logo=typescript&logoColor=white"/> |
| 10 | + <img src="https://img.shields.io/badge/Vite-646CFF?style=flat&logo=vite&logoColor=white"/> |
| 11 | + <img src="https://img.shields.io/badge/Tailwind_CSS-38B2AC?style=flat&logo=tailwind-css&logoColor=white"/> |
| 12 | + <img src="https://github.com/Samuelf27/admin-dashboard/actions/workflows/deploy.yml/badge.svg"/> |
| 13 | +</p> |
| 14 | + |
| 15 | +<p align="center"> |
| 16 | + <a href="https://samuelf27.github.io/admin-dashboard/"><b>🔗 Ver demo ao vivo</b></a> |
| 17 | + · 🔑 <code>admin@empresa.com</code> / <code>123456</code> |
| 18 | +</p> |
| 19 | + |
| 20 | +<p align="center"><img src="https://raw.githubusercontent.com/Samuelf27/admin-dashboard/main/preview.png" alt="Preview do painel" width="820" /></p> |
| 21 | + |
| 22 | +--- |
| 23 | + |
| 24 | +## 📌 Sobre o projeto |
| 25 | + |
| 26 | +Um **painel administrativo completo** como os usados em produtos corporativos — o tipo de interface presente em praticamente toda empresa de software. Construído com foco em **boas práticas**, tipagem forte e uma camada de API desacoplada (pronta para plugar um back-end real). |
| 27 | + |
| 28 | +## ✨ Funcionalidades |
| 29 | + |
| 30 | +- 🔐 **Autenticação** com rota protegida e sessão persistida |
| 31 | +- 👥 **CRUD completo de usuários** — criar, editar e remover com **modal e validação** |
| 32 | +- 🔎 **Tabela de dados** com **busca**, **ordenação por coluna** e **paginação** |
| 33 | +- 📈 **Dashboard** com KPIs e gráficos (área e pizza) via Recharts |
| 34 | +- 🌗 **Dark mode** persistente + design totalmente **responsivo** |
| 35 | +- 🔔 Sistema de **toasts**, estados de **carregamento** (skeletons) e vazio |
| 36 | +- ⚙️ **CI/CD** — build e deploy automáticos no GitHub Pages via GitHub Actions |
| 37 | + |
| 38 | +## 🛠️ Stack |
| 39 | + |
| 40 | +| Camada | Tecnologia | |
| 41 | +|---|---| |
| 42 | +| UI | React 18 + TypeScript | |
| 43 | +| Build | Vite | |
| 44 | +| Estilo | Tailwind CSS (dark mode por classe) | |
| 45 | +| Rotas | React Router | |
| 46 | +| Gráficos | Recharts | |
| 47 | +| Ícones | lucide-react | |
| 48 | +| CI/CD | GitHub Actions → GitHub Pages | |
| 49 | + |
| 50 | +## 🏗️ Arquitetura |
| 51 | + |
| 52 | +``` |
| 53 | +src/ |
| 54 | +├── lib/ |
| 55 | +│ ├── api.ts # camada de dados (mock com latência; troque por API real) |
| 56 | +│ ├── auth.tsx # contexto de autenticação |
| 57 | +│ ├── theme.ts # hook de tema (dark mode) |
| 58 | +│ └── types.ts # tipos de domínio |
| 59 | +├── components/ # Layout, Toast, Modal, StatCard, ProtectedRoute |
| 60 | +└── pages/ # Login, Dashboard, Users (CRUD), Settings |
| 61 | +``` |
| 62 | + |
| 63 | +> 💡 A `api.ts` foi desenhada para ser substituída por um back-end real (como a [br-validator-api](https://github.com/Samuelf27/br-validator-api)) sem alterar os componentes. |
| 64 | +
|
| 65 | +## 🚀 Como rodar |
| 66 | + |
| 67 | +```bash |
| 68 | +npm install |
| 69 | +npm run dev # http://localhost:5173 |
| 70 | +npm run build # gera dist/ (typecheck + bundle) |
| 71 | +``` |
| 72 | + |
| 73 | +## 📄 Licença |
| 74 | + |
| 75 | +[MIT](LICENSE) © Samuel Ferreira |
| 76 | + |
| 77 | +--- |
| 78 | + |
| 79 | +<p align="center"> |
| 80 | + <a href="https://github.com/Samuelf27">GitHub</a> · <a href="https://www.linkedin.com/in/samuel-ferreira27/">LinkedIn</a> |
| 81 | +</p> |
0 commit comments