diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml
new file mode 100644
index 0000000..39d4351
--- /dev/null
+++ b/.github/workflows/deploy-pages.yml
@@ -0,0 +1,35 @@
+name: Deploy GitHub Pages
+
+on:
+ push:
+ branches: [master]
+
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+concurrency:
+ group: pages
+ cancel-in-progress: true
+
+jobs:
+ build-deploy:
+ runs-on: ubuntu-latest
+ environment:
+ name: github-pages
+ url: ${{ steps.deploy.outputs.page_url }}
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: "22"
+ cache: npm
+ - run: npm ci
+ - run: npm test
+ - run: npm run build
+ - uses: actions/upload-pages-artifact@v3
+ with:
+ path: dist
+ - id: deploy
+ uses: actions/deploy-pages@v4
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 0000000..2eaf8cf
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,21 @@
+name: Test
+
+on:
+ push:
+ branches: [feature/new_structure, dev]
+ pull_request:
+ branches: [dev, master]
+
+jobs:
+ test:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: "22"
+ cache: npm
+ - run: npm ci
+ - run: npm run typecheck
+ - run: npm test
+ - run: npm run build
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..dd6e803
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+node_modules/
+dist/
+*.log
+.DS_Store
diff --git a/README.md b/README.md
index 88d1004..a43d55f 100755
--- a/README.md
+++ b/README.md
@@ -1,33 +1,39 @@
-# Eleições Municipais
+# Panorama Eleitoral — newfront
-### Description
+Versão em TypeScript + D3 v7 do site de visualização das eleições municipais do Rio de Janeiro.
-This project was started during a visualization course on my master.
-The main goal was to show the evolution in the political scenario along the past
-five elections on all **brazilian cities** with the help of the nice javascript library [d3.js](https://d3js.org/) and jQuery.
+## Desenvolvimento
-This current release only shows the State of Rio de Janeiro on a choropleth chart.
-It still is in early development, with the district chamber chart(sankey chart) fixed only at the capital of state.
+```bash
+npm install
+npm test # Vitest
+npm run typecheck
+npm run build # gera dist/
+npm run preview # serve dist/ em http://localhost:4173
+```
-The main data source is the Tribunal Superior Eleitoral [TSE](http://www.tse.jus.br/eleicoes/estatisticas/repositorio-de-dados-eleitorais), the major authority in brazilian electoral system.
+Abra `dist/index.html` via servidor estático (o `preview` ou extensão Live Server) para carregar `data/` corretamente.
-The other data were gathered on:
-[Wikipedia](https://pt.wikipedia.org/wiki/Lista_de_partidos_pol%C3%ADticos_no_Brasil)
-[IBGE](http://www.ibge.gov.br/home/)
+## Estrutura
-