diff --git a/apps/web/index.html b/apps/web/index.html
index c611d01..1519c1a 100644
--- a/apps/web/index.html
+++ b/apps/web/index.html
@@ -1,13 +1,14 @@
-
+
- Web
+ SAR — Força de Vendas
+
+
+
-
-
-
-
+
+
diff --git a/apps/web/package.json b/apps/web/package.json
new file mode 100644
index 0000000..c8bc62a
--- /dev/null
+++ b/apps/web/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "@sar/web",
+ "version": "0.1.0",
+ "private": true,
+ "type": "module",
+ "description": "SAR · Web (React 19 + Vite 8 + AntD 6.4)",
+ "dependencies": {
+ "@ant-design/icons": "^6.2.3",
+ "@fontsource-variable/plus-jakarta-sans": "^5.2.8",
+ "@fortawesome/fontawesome-svg-core": "^7.2.0",
+ "@fortawesome/free-regular-svg-icons": "^7.2.0",
+ "@fortawesome/free-solid-svg-icons": "^7.2.0",
+ "@fortawesome/react-fontawesome": "^3.3.1",
+ "@hookform/resolvers": "^5.4.0",
+ "@tanstack/react-query": "^5.100.14",
+ "@tanstack/react-router": "^1.170.8",
+ "antd": "^6.4.3",
+ "chart.js": "^4.5.1",
+ "dayjs": "^1.11.21",
+ "react-chartjs-2": "^5.3.1",
+ "react-hook-form": "^7.76.1",
+ "zod": "catalog:",
+ "zustand": "^5.0.13"
+ }
+}
diff --git a/apps/web/public/sar-icon.png b/apps/web/public/sar-icon.png
new file mode 100644
index 0000000..4a25648
Binary files /dev/null and b/apps/web/public/sar-icon.png differ
diff --git a/apps/web/public/sar-logo.png b/apps/web/public/sar-logo.png
new file mode 100644
index 0000000..ca6f2d6
Binary files /dev/null and b/apps/web/public/sar-logo.png differ
diff --git a/apps/web/src/app/app.module.css b/apps/web/src/app/app.module.css
deleted file mode 100644
index 7b88fba..0000000
--- a/apps/web/src/app/app.module.css
+++ /dev/null
@@ -1 +0,0 @@
-/* Your styles goes here. */
diff --git a/apps/web/src/app/app.spec.tsx b/apps/web/src/app/app.spec.tsx
deleted file mode 100644
index 5fbf2f9..0000000
--- a/apps/web/src/app/app.spec.tsx
+++ /dev/null
@@ -1,15 +0,0 @@
-import { render } from '@testing-library/react';
-
-import App from './app';
-
-describe('App', () => {
- it('should render successfully', () => {
- const { baseElement } = render();
- expect(baseElement).toBeTruthy();
- });
-
- it('should have a greeting as the title', () => {
- const { getAllByText } = render();
- expect(getAllByText(new RegExp('Welcome web', 'gi')).length > 0).toBeTruthy();
- });
-});
diff --git a/apps/web/src/app/app.tsx b/apps/web/src/app/app.tsx
deleted file mode 100644
index 75a04f9..0000000
--- a/apps/web/src/app/app.tsx
+++ /dev/null
@@ -1,13 +0,0 @@
-// Uncomment this line to use CSS modules
-// import styles from './app.module.css';
-import NxWelcome from './nx-welcome';
-
-export function App() {
- return (
-
-
-
- );
-}
-
-export default App;
diff --git a/apps/web/src/app/nx-welcome.tsx b/apps/web/src/app/nx-welcome.tsx
deleted file mode 100644
index 08377c7..0000000
--- a/apps/web/src/app/nx-welcome.tsx
+++ /dev/null
@@ -1,851 +0,0 @@
-/*
- * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- This is a starter component and can be deleted.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- Delete this file and get started with your project!
- * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- */
-export function NxWelcome({ title }: { title: string }) {
- return (
- <>
-