diff --git a/jsconfig.json b/jsconfig.json
index 372666d..1520cb4 100644
--- a/jsconfig.json
+++ b/jsconfig.json
@@ -1,5 +1,9 @@
{
"compilerOptions": {
- "jsx": "react-jsx"
+ "jsx": "react-jsx",
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["src/*"]
+ }
}
-}
\ No newline at end of file
+}
diff --git a/pages/_app.jsx b/pages/_app.jsx
index 67e8798..08d00d2 100644
--- a/pages/_app.jsx
+++ b/pages/_app.jsx
@@ -1,6 +1,6 @@
// _app.jsx — SessionProvider de autenticação REMOVIDO (login desativado temporariamente).
// App agora abre direto no dashboard, sem verificação de sessão.
-import "../styles/globals.css"
+import "@/styles/globals.css"
export default function App({ Component, pageProps }) {
return (
diff --git a/pages/apps/aurea/index.js b/pages/apps/aurea/index.js
deleted file mode 100644
index 8c4ed3e..0000000
--- a/pages/apps/aurea/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-export default function Aurea() {
- return (
-
-
👑
-
Aurea
-
O Império Começa Aqui
-
Simulador de vida onde cada escolha te leva mais perto da riqueza. Construa impérios, domine o mercado.
-
Em Breve
-
- )
-}
\ No newline at end of file
diff --git a/pages/apps/expedicao/index.js b/pages/apps/expedicao/index.js
deleted file mode 100644
index 8caa29a..0000000
--- a/pages/apps/expedicao/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-export default function ExpedicaoGold() {
- return (
-
-
🗺️
-
Expedição Gold
-
Conquiste o Ouro do Mundo
-
Expedições terrestres, marítimas, espaciais e espirituais. Cada jornada é única. Cada conquista, sua.
-
Em Breve no 1000Apps
-
- )
-}
\ No newline at end of file
diff --git a/pages/apps/humancity/index.js b/pages/apps/humancity/index.js
deleted file mode 100644
index a16d07d..0000000
--- a/pages/apps/humancity/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-export default function HumanCity() {
- return (
-
-
🏙️
-
Human City
-
Simule. Construa. Viva.
-
Simulação de vida estilo The Sims. Crie personagens, construa cidades, escreva sua história.
-
Em Desenvolvimento
-
- )
-}
\ No newline at end of file
diff --git a/pages/apps/terraverse/index.js b/pages/apps/terraverse/index.js
deleted file mode 100644
index e114099..0000000
--- a/pages/apps/terraverse/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-export default function TerraVerse() {
- return (
-
-
🌍
-
TerraVerse
-
O Novo Mundo te Espera
-
Game de realidade aumentada que vai revolucionar como você explora, conquista e monetiza o mundo real.
-
Em Breve
-
- )
-}
\ No newline at end of file
diff --git a/pages/apps/tictactoe/index.js b/pages/apps/tictactoe/index.js
deleted file mode 100644
index 0edc4a2..0000000
--- a/pages/apps/tictactoe/index.js
+++ /dev/null
@@ -1,83 +0,0 @@
-import { useState } from 'react';
-
-export default function TicTacToe() {
- const [board, setBoard] = useState(Array(9).fill(null));
- const [xIsNext, setXIsNext] = useState(true);
- const winner = calculateWinner(board);
- const status = winner
- ? `Winner: ${winner}`
- : `Next player: ${xIsNext ? 'X' : 'O'}`;
-
- function handleClick(i) {
- const boardCopy = [...board];
- if (winner || boardCopy[i]) return;
- boardCopy[i] = xIsNext ? 'X' : 'O';
- setBoard(boardCopy);
- setXIsNext(!xIsNext);
- }
-
- function calculateWinner(squares) {
- const lines = [
- [0, 1, 2],
- [3, 4, 5],
- [6, 7, 8],
- [0, 3, 6],
- [1, 4, 7],
- [2, 5, 8],
- [0, 4, 8],
- [2, 4, 6],
- ];
- for (let [a, b, c] of lines) {
- if (squares[a] && squares[a] === squares[b] && squares[a] === squares[c]) {
- return squares[a];
- }
- }
- return null;
- }
-
- const renderSquare = (i) => (
-
- );
-
- const statusStyle = {
- marginBottom: '1rem',
- fontSize: '1.2rem',
- };
- const boardStyle = {
- display: 'grid',
- gridTemplateColumns: 'repeat(3, 1fr)',
- gap: '4px',
- width: '300px',
- margin: '0 auto',
- };
- const squareStyle = {
- background: '#fff',
- border: '1px solid #999',
- fontSize: '2rem',
- width: '100%',
- height: '80px',
- display: 'flex',
- alignItems: 'center',
- justifyContent: 'center',
- cursor: 'pointer',
- };
-
- return (
-
-
Tic Tac Toe
-
{status}
-
- {[0, 1, 2, 3, 4, 5, 6, 7, 8].map(i => (
-
- {renderSquare(i)}
-
- ))}
-
-
- );
-}
\ No newline at end of file
diff --git a/pages/dashboard.jsx b/pages/dashboard.jsx
index 73123d9..31764ef 100644
--- a/pages/dashboard.jsx
+++ b/pages/dashboard.jsx
@@ -1,8 +1,8 @@
import React from "react"
import { useState } from "react"
import { useRouter } from "next/router"
-import AvatarSelector from "../components/AvatarSelector"
-import CategoryMenu from "../components/CategoryMenu"
+import AvatarSelector from "@/components/dashboard/AvatarSelector"
+import CategoryMenu from "@/components/dashboard/CategoryMenu"
export default function Dashboard() {
const router = useRouter()
diff --git a/src/components/apps/.gitkeep b/src/components/apps/.gitkeep
new file mode 100644
index 0000000..130ee76
--- /dev/null
+++ b/src/components/apps/.gitkeep
@@ -0,0 +1 @@
+# App-specific components (placeholder)
diff --git a/src/components/common/CardApp.jsx b/src/components/common/CardApp.jsx
new file mode 100644
index 0000000..f4a392c
--- /dev/null
+++ b/src/components/common/CardApp.jsx
@@ -0,0 +1,12 @@
+// CardApp — cartão de mini app no grid do dashboard.
+// Placeholder arquitetural: ainda não utilizado ativamente.
+export default function CardApp({ title, icon, description, href, onClick }) {
+ return (
+
+ {icon}
+ {title}
+ {description && {description}
}
+
+ )
+}
diff --git a/src/components/common/CategoryCard.jsx b/src/components/common/CategoryCard.jsx
new file mode 100644
index 0000000..cc1c602
--- /dev/null
+++ b/src/components/common/CategoryCard.jsx
@@ -0,0 +1,11 @@
+// CategoryCard — cartão de categoria na navegação.
+// Placeholder arquitetural.
+export default function CategoryCard({ label, icon, active, onSelect }) {
+ return (
+
+ )
+}
diff --git a/src/components/common/ConfirmDialog.jsx b/src/components/common/ConfirmDialog.jsx
new file mode 100644
index 0000000..4eb4482
--- /dev/null
+++ b/src/components/common/ConfirmDialog.jsx
@@ -0,0 +1,15 @@
+// ConfirmDialog — diálogo de confirmação.
+// Placeholder arquitetural.
+export default function ConfirmDialog({ open, title, message, onConfirm, onCancel }) {
+ if (!open) return null
+ return (
+
+ {title || "Confirma?"}
+ {message}
+
+
+
+
+
+ )
+}
diff --git a/src/components/common/EmptyState.jsx b/src/components/common/EmptyState.jsx
new file mode 100644
index 0000000..afeb3f1
--- /dev/null
+++ b/src/components/common/EmptyState.jsx
@@ -0,0 +1,5 @@
+// EmptyState — estado vazio.
+// Placeholder arquitetural.
+export default function EmptyState({ message }) {
+ return {message || "Nada por aqui."}
+}
diff --git a/src/components/common/ErrorState.jsx b/src/components/common/ErrorState.jsx
new file mode 100644
index 0000000..26362ae
--- /dev/null
+++ b/src/components/common/ErrorState.jsx
@@ -0,0 +1,10 @@
+// ErrorState — estado de erro.
+// Placeholder arquitetural.
+export default function ErrorState({ message, onRetry }) {
+ return (
+
+
{message || "Algo deu errado."}
+ {onRetry &&
}
+
+ )
+}
diff --git a/src/components/common/Footer.jsx b/src/components/common/Footer.jsx
new file mode 100644
index 0000000..7fe182e
--- /dev/null
+++ b/src/components/common/Footer.jsx
@@ -0,0 +1,9 @@
+// Footer — rodapé global.
+// Placeholder arquitetural.
+export default function Footer() {
+ return (
+
+ )
+}
diff --git a/src/components/common/Header.jsx b/src/components/common/Header.jsx
new file mode 100644
index 0000000..27c8486
--- /dev/null
+++ b/src/components/common/Header.jsx
@@ -0,0 +1,12 @@
+// Header — cabeçalho global do app.
+// Placeholder arquitetural (não renderiza nada ainda).
+export default function Header({ title, children }) {
+ return (
+
+ )
+}
diff --git a/src/components/common/Loading.jsx b/src/components/common/Loading.jsx
new file mode 100644
index 0000000..ab4b89b
--- /dev/null
+++ b/src/components/common/Loading.jsx
@@ -0,0 +1,5 @@
+// Loading — indicador de carregamento.
+// Placeholder arquitetural.
+export default function Loading({ label }) {
+ return {label || "Carregando..."}
+}
diff --git a/src/components/common/Modal.jsx b/src/components/common/Modal.jsx
new file mode 100644
index 0000000..247b34d
--- /dev/null
+++ b/src/components/common/Modal.jsx
@@ -0,0 +1,10 @@
+// Modal — janela modal genérica.
+// Placeholder arquitetural.
+export default function Modal({ open, onClose, children }) {
+ if (!open) return null
+ return (
+
+
e.stopPropagation()}>{children}
+
+ )
+}
diff --git a/src/components/common/SearchBar.jsx b/src/components/common/SearchBar.jsx
new file mode 100644
index 0000000..708425a
--- /dev/null
+++ b/src/components/common/SearchBar.jsx
@@ -0,0 +1,9 @@
+// SearchBar — barra de busca de mini apps.
+// Placeholder arquitetural.
+export default function SearchBar({ value, onChange, placeholder }) {
+ return (
+ onChange && onChange(e.target.value)}
+ placeholder={placeholder || "Buscar..."}
+ className="w-full p-2 border border-gray-300 rounded-lg" />
+ )
+}
diff --git a/src/components/common/index.js b/src/components/common/index.js
new file mode 100644
index 0000000..74428d2
--- /dev/null
+++ b/src/components/common/index.js
@@ -0,0 +1,11 @@
+// Barrel export dos componentes compartilhados.
+export { default as CardApp } from "./CardApp"
+export { default as CategoryCard } from "./CategoryCard"
+export { default as SearchBar } from "./SearchBar"
+export { default as Header } from "./Header"
+export { default as Footer } from "./Footer"
+export { default as Loading } from "./Loading"
+export { default as EmptyState } from "./EmptyState"
+export { default as ErrorState } from "./ErrorState"
+export { default as Modal } from "./Modal"
+export { default as ConfirmDialog } from "./ConfirmDialog"
diff --git a/components/AvatarSelector.jsx b/src/components/dashboard/AvatarSelector.jsx
similarity index 100%
rename from components/AvatarSelector.jsx
rename to src/components/dashboard/AvatarSelector.jsx
diff --git a/components/CategoryMenu.jsx b/src/components/dashboard/CategoryMenu.jsx
similarity index 100%
rename from components/CategoryMenu.jsx
rename to src/components/dashboard/CategoryMenu.jsx
diff --git a/src/components/layout/.gitkeep b/src/components/layout/.gitkeep
new file mode 100644
index 0000000..91e9362
--- /dev/null
+++ b/src/components/layout/.gitkeep
@@ -0,0 +1 @@
+# Layout components (placeholder)
diff --git a/legacy/README.md b/src/legacy/README.md
similarity index 100%
rename from legacy/README.md
rename to src/legacy/README.md
diff --git a/legacy/auth/README.md b/src/legacy/auth/README.md
similarity index 100%
rename from legacy/auth/README.md
rename to src/legacy/auth/README.md
diff --git a/legacy/auth/nextauth.js b/src/legacy/auth/nextauth.js
similarity index 100%
rename from legacy/auth/nextauth.js
rename to src/legacy/auth/nextauth.js
diff --git a/legacy/auth/signin.jsx b/src/legacy/auth/signin.jsx
similarity index 100%
rename from legacy/auth/signin.jsx
rename to src/legacy/auth/signin.jsx
diff --git a/legacy/auth/signup.jsx b/src/legacy/auth/signup.jsx
similarity index 100%
rename from legacy/auth/signup.jsx
rename to src/legacy/auth/signup.jsx
diff --git a/legacy/dashboard.jsx.bak b/src/legacy/dashboard.jsx.bak
similarity index 100%
rename from legacy/dashboard.jsx.bak
rename to src/legacy/dashboard.jsx.bak
diff --git a/legacy/landing/README.md b/src/legacy/landing/README.md
similarity index 100%
rename from legacy/landing/README.md
rename to src/legacy/landing/README.md
diff --git a/legacy/landing/index.jsx b/src/legacy/landing/index.jsx
similarity index 100%
rename from legacy/landing/index.jsx
rename to src/legacy/landing/index.jsx
diff --git a/lib/prisma.js b/src/lib/prisma.js
similarity index 100%
rename from lib/prisma.js
rename to src/lib/prisma.js
diff --git a/src/modules/bloco_notas/README.md b/src/modules/bloco_notas/README.md
new file mode 100644
index 0000000..d77f5b5
--- /dev/null
+++ b/src/modules/bloco_notas/README.md
@@ -0,0 +1,4 @@
+# Módulo: bloco_notas
+
+Estrutura preparada para o mini app 'bloco_notas'.
+Nenhuma funcionalidade implementada ainda.
diff --git a/src/modules/bloco_notas/components/.gitkeep b/src/modules/bloco_notas/components/.gitkeep
new file mode 100644
index 0000000..740fbd4
--- /dev/null
+++ b/src/modules/bloco_notas/components/.gitkeep
@@ -0,0 +1 @@
+# bloco_notas/components (placeholder)
diff --git a/src/modules/bloco_notas/hooks/.gitkeep b/src/modules/bloco_notas/hooks/.gitkeep
new file mode 100644
index 0000000..6058b77
--- /dev/null
+++ b/src/modules/bloco_notas/hooks/.gitkeep
@@ -0,0 +1 @@
+# bloco_notas/hooks (placeholder)
diff --git a/src/modules/bloco_notas/pages/.gitkeep b/src/modules/bloco_notas/pages/.gitkeep
new file mode 100644
index 0000000..41888c1
--- /dev/null
+++ b/src/modules/bloco_notas/pages/.gitkeep
@@ -0,0 +1 @@
+# bloco_notas/pages (placeholder)
diff --git a/src/modules/bloco_notas/services/.gitkeep b/src/modules/bloco_notas/services/.gitkeep
new file mode 100644
index 0000000..95a457f
--- /dev/null
+++ b/src/modules/bloco_notas/services/.gitkeep
@@ -0,0 +1 @@
+# bloco_notas/services (placeholder)
diff --git a/src/modules/calculadora/README.md b/src/modules/calculadora/README.md
new file mode 100644
index 0000000..0863185
--- /dev/null
+++ b/src/modules/calculadora/README.md
@@ -0,0 +1,4 @@
+# Módulo: calculadora
+
+Estrutura preparada para o mini app 'calculadora'.
+Nenhuma funcionalidade implementada ainda.
diff --git a/src/modules/calculadora/components/.gitkeep b/src/modules/calculadora/components/.gitkeep
new file mode 100644
index 0000000..fca112f
--- /dev/null
+++ b/src/modules/calculadora/components/.gitkeep
@@ -0,0 +1 @@
+# calculadora/components (placeholder)
diff --git a/src/modules/calculadora/hooks/.gitkeep b/src/modules/calculadora/hooks/.gitkeep
new file mode 100644
index 0000000..0ddc4e0
--- /dev/null
+++ b/src/modules/calculadora/hooks/.gitkeep
@@ -0,0 +1 @@
+# calculadora/hooks (placeholder)
diff --git a/src/modules/calculadora/pages/.gitkeep b/src/modules/calculadora/pages/.gitkeep
new file mode 100644
index 0000000..07afc8e
--- /dev/null
+++ b/src/modules/calculadora/pages/.gitkeep
@@ -0,0 +1 @@
+# calculadora/pages (placeholder)
diff --git a/src/modules/calculadora/services/.gitkeep b/src/modules/calculadora/services/.gitkeep
new file mode 100644
index 0000000..951c524
--- /dev/null
+++ b/src/modules/calculadora/services/.gitkeep
@@ -0,0 +1 @@
+# calculadora/services (placeholder)
diff --git a/src/modules/conversor/README.md b/src/modules/conversor/README.md
new file mode 100644
index 0000000..b114502
--- /dev/null
+++ b/src/modules/conversor/README.md
@@ -0,0 +1,4 @@
+# Módulo: conversor
+
+Estrutura preparada para o mini app 'conversor'.
+Nenhuma funcionalidade implementada ainda.
diff --git a/src/modules/conversor/components/.gitkeep b/src/modules/conversor/components/.gitkeep
new file mode 100644
index 0000000..88985ad
--- /dev/null
+++ b/src/modules/conversor/components/.gitkeep
@@ -0,0 +1 @@
+# conversor/components (placeholder)
diff --git a/src/modules/conversor/hooks/.gitkeep b/src/modules/conversor/hooks/.gitkeep
new file mode 100644
index 0000000..a7f9aa8
--- /dev/null
+++ b/src/modules/conversor/hooks/.gitkeep
@@ -0,0 +1 @@
+# conversor/hooks (placeholder)
diff --git a/src/modules/conversor/pages/.gitkeep b/src/modules/conversor/pages/.gitkeep
new file mode 100644
index 0000000..1c9ff01
--- /dev/null
+++ b/src/modules/conversor/pages/.gitkeep
@@ -0,0 +1 @@
+# conversor/pages (placeholder)
diff --git a/src/modules/conversor/services/.gitkeep b/src/modules/conversor/services/.gitkeep
new file mode 100644
index 0000000..13324d7
--- /dev/null
+++ b/src/modules/conversor/services/.gitkeep
@@ -0,0 +1 @@
+# conversor/services (placeholder)
diff --git a/src/modules/criptomoedas/README.md b/src/modules/criptomoedas/README.md
new file mode 100644
index 0000000..359ffee
--- /dev/null
+++ b/src/modules/criptomoedas/README.md
@@ -0,0 +1,4 @@
+# Módulo: criptomoedas
+
+Estrutura preparada para o mini app 'criptomoedas'.
+Nenhuma funcionalidade implementada ainda.
diff --git a/src/modules/criptomoedas/components/.gitkeep b/src/modules/criptomoedas/components/.gitkeep
new file mode 100644
index 0000000..fe6fc34
--- /dev/null
+++ b/src/modules/criptomoedas/components/.gitkeep
@@ -0,0 +1 @@
+# criptomoedas/components (placeholder)
diff --git a/src/modules/criptomoedas/hooks/.gitkeep b/src/modules/criptomoedas/hooks/.gitkeep
new file mode 100644
index 0000000..fc32e70
--- /dev/null
+++ b/src/modules/criptomoedas/hooks/.gitkeep
@@ -0,0 +1 @@
+# criptomoedas/hooks (placeholder)
diff --git a/src/modules/criptomoedas/pages/.gitkeep b/src/modules/criptomoedas/pages/.gitkeep
new file mode 100644
index 0000000..6cd7e0e
--- /dev/null
+++ b/src/modules/criptomoedas/pages/.gitkeep
@@ -0,0 +1 @@
+# criptomoedas/pages (placeholder)
diff --git a/src/modules/criptomoedas/services/.gitkeep b/src/modules/criptomoedas/services/.gitkeep
new file mode 100644
index 0000000..fb649b2
--- /dev/null
+++ b/src/modules/criptomoedas/services/.gitkeep
@@ -0,0 +1 @@
+# criptomoedas/services (placeholder)
diff --git a/src/modules/jogos/README.md b/src/modules/jogos/README.md
new file mode 100644
index 0000000..8da530b
--- /dev/null
+++ b/src/modules/jogos/README.md
@@ -0,0 +1,4 @@
+# Módulo: jogos
+
+Estrutura preparada para o mini app 'jogos'.
+Nenhuma funcionalidade implementada ainda.
diff --git a/src/modules/jogos/components/.gitkeep b/src/modules/jogos/components/.gitkeep
new file mode 100644
index 0000000..a44dd17
--- /dev/null
+++ b/src/modules/jogos/components/.gitkeep
@@ -0,0 +1 @@
+# jogos/components (placeholder)
diff --git a/src/modules/jogos/hooks/.gitkeep b/src/modules/jogos/hooks/.gitkeep
new file mode 100644
index 0000000..47ab038
--- /dev/null
+++ b/src/modules/jogos/hooks/.gitkeep
@@ -0,0 +1 @@
+# jogos/hooks (placeholder)
diff --git a/src/modules/jogos/pages/.gitkeep b/src/modules/jogos/pages/.gitkeep
new file mode 100644
index 0000000..4b23df7
--- /dev/null
+++ b/src/modules/jogos/pages/.gitkeep
@@ -0,0 +1 @@
+# jogos/pages (placeholder)
diff --git a/src/modules/jogos/services/.gitkeep b/src/modules/jogos/services/.gitkeep
new file mode 100644
index 0000000..363576f
--- /dev/null
+++ b/src/modules/jogos/services/.gitkeep
@@ -0,0 +1 @@
+# jogos/services (placeholder)
diff --git a/src/modules/noticias/README.md b/src/modules/noticias/README.md
new file mode 100644
index 0000000..fbc6354
--- /dev/null
+++ b/src/modules/noticias/README.md
@@ -0,0 +1,4 @@
+# Módulo: noticias
+
+Estrutura preparada para o mini app 'noticias'.
+Nenhuma funcionalidade implementada ainda.
diff --git a/src/modules/noticias/components/.gitkeep b/src/modules/noticias/components/.gitkeep
new file mode 100644
index 0000000..c40947f
--- /dev/null
+++ b/src/modules/noticias/components/.gitkeep
@@ -0,0 +1 @@
+# noticias/components (placeholder)
diff --git a/src/modules/noticias/hooks/.gitkeep b/src/modules/noticias/hooks/.gitkeep
new file mode 100644
index 0000000..938aa43
--- /dev/null
+++ b/src/modules/noticias/hooks/.gitkeep
@@ -0,0 +1 @@
+# noticias/hooks (placeholder)
diff --git a/src/modules/noticias/pages/.gitkeep b/src/modules/noticias/pages/.gitkeep
new file mode 100644
index 0000000..ad3b778
--- /dev/null
+++ b/src/modules/noticias/pages/.gitkeep
@@ -0,0 +1 @@
+# noticias/pages (placeholder)
diff --git a/src/modules/noticias/services/.gitkeep b/src/modules/noticias/services/.gitkeep
new file mode 100644
index 0000000..722c014
--- /dev/null
+++ b/src/modules/noticias/services/.gitkeep
@@ -0,0 +1 @@
+# noticias/services (placeholder)
diff --git a/src/services/api/client.js b/src/services/api/client.js
new file mode 100644
index 0000000..6573bd0
--- /dev/null
+++ b/src/services/api/client.js
@@ -0,0 +1,12 @@
+// Serviço de API central.
+// Placeholder arquitetural — ainda não implementado.
+const API_BASE = process.env.NEXT_PUBLIC_API_BASE || "/api"
+
+export async function get(path) {
+ // TODO: implementar wrapper fetch com auth/erros
+ throw new Error("api.get not implemented")
+}
+export async function post(path, body) {
+ throw new Error("api.post not implemented")
+}
+export default { API_BASE, get, post }
diff --git a/src/services/auth/index.js b/src/services/auth/index.js
new file mode 100644
index 0000000..885f09b
--- /dev/null
+++ b/src/services/auth/index.js
@@ -0,0 +1,6 @@
+// Aggregador de provedores de auth (preparação).
+export { PROVIDERS, AuthProvider } from "./interfaces"
+export { googleProvider } from "./providers/google"
+export { appleProvider } from "./providers/apple"
+export { emailProvider } from "./providers/email"
+export { anonymousProvider } from "./providers/anonymous"
diff --git a/src/services/auth/interfaces.js b/src/services/auth/interfaces.js
new file mode 100644
index 0000000..7f1228c
--- /dev/null
+++ b/src/services/auth/interfaces.js
@@ -0,0 +1,16 @@
+// Interfaces de provedores de autenticação (preparação, sem SDK).
+// Implementação real ocorrerá em fase futura.
+
+export const AuthProvider = {
+ // Cada provedor deve implementar:
+ // login(): Promise<{ user, token }>
+ // logout(): Promise
+ // getSession(): Promise
+}
+
+export const PROVIDERS = {
+ GOOGLE: "google",
+ APPLE: "apple",
+ EMAIL: "email",
+ ANONYMOUS: "anonymous",
+}
diff --git a/src/services/auth/providers/anonymous.js b/src/services/auth/providers/anonymous.js
new file mode 100644
index 0000000..108fbb2
--- /dev/null
+++ b/src/services/auth/providers/anonymous.js
@@ -0,0 +1,6 @@
+// Login Anônimo — placeholder arquitetural.
+export const anonymousProvider = {
+ id: "anonymous",
+ async login() { throw new Error("Anonymous login not implemented") },
+ async logout() { throw new Error("Anonymous logout not implemented") },
+}
diff --git a/src/services/auth/providers/apple.js b/src/services/auth/providers/apple.js
new file mode 100644
index 0000000..55d0e72
--- /dev/null
+++ b/src/services/auth/providers/apple.js
@@ -0,0 +1,6 @@
+// Apple Login — placeholder arquitetural (sem SDK instalado).
+export const appleProvider = {
+ id: "apple",
+ async login() { throw new Error("Apple login not implemented") },
+ async logout() { throw new Error("Apple logout not implemented") },
+}
diff --git a/src/services/auth/providers/email.js b/src/services/auth/providers/email.js
new file mode 100644
index 0000000..b052f8f
--- /dev/null
+++ b/src/services/auth/providers/email.js
@@ -0,0 +1,6 @@
+// Email/Senha — placeholder arquitetural (sem backend de auth ativo).
+export const emailProvider = {
+ id: "email",
+ async login({ username, password }) { throw new Error("Email login not implemented") },
+ async logout() { throw new Error("Email logout not implemented") },
+}
diff --git a/src/services/auth/providers/google.js b/src/services/auth/providers/google.js
new file mode 100644
index 0000000..644facb
--- /dev/null
+++ b/src/services/auth/providers/google.js
@@ -0,0 +1,6 @@
+// Google Login — placeholder arquitetural (sem SDK instalado).
+export const googleProvider = {
+ id: "google",
+ async login() { throw new Error("Google login not implemented") },
+ async logout() { throw new Error("Google logout not implemented") },
+}
diff --git a/styles/globals.css b/src/styles/globals.css
similarity index 100%
rename from styles/globals.css
rename to src/styles/globals.css