refactor: arquitetura escalavel em src/ para crescimento de mini apps

- Migra components/lib/styles/legacy para src/ (pages mantidas na raiz)
- Adiciona alias @/* -> src/* no jsconfig.json
- Atualiza imports de _app e dashboard para novo caminho
- Cria src/components/common com 10 componentes compartilhados (placeholders)
- Cria src/modules/ para 6 mini apps (noticias, calculadora, bloco_notas, criptomoedas, conversor, jogos)
- Cria src/services/ (api, auth, ads, news, currency, crypto, storage, analytics) como placeholders
- Prepara auth (providers google/apple/email/anonymous + interfaces) sem SDK
- Prepara ads (Adapter + Banner/Interstitial/Rewarded/Native) sem SDK
- Cria src/config/ (appConfig, featureFlags, environment, theme, ads)
- Remove duplicatas index.js em pages/apps/*
- Nenhuma funcionalidade implementada; apenas arquitetura preparada
- Build Next.js validado (10 rotas, sem erros)
This commit is contained in:
Carlos
2026-07-11 22:44:52 +02:00
parent dce148338f
commit 2b74586b00
70 changed files with 226 additions and 132 deletions
+1 -1
View File
@@ -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 (
-11
View File
@@ -1,11 +0,0 @@
export default function Aurea() {
return (
<div style={{minHeight:'100vh',background:'linear-gradient(135deg,#1a0a00,#3d2000)',display:'flex',flexDirection:'column',alignItems:'center',justifyContent:'center',color:'#FFD700',fontFamily:'serif',textAlign:'center',padding:'2rem'}}>
<div style={{fontSize:'4rem',marginBottom:'1rem'}}>👑</div>
<h1 style={{fontSize:'3rem',marginBottom:'0.5rem'}}>Aurea</h1>
<p style={{fontSize:'1.2rem',color:'#c8a400',marginBottom:'2rem'}}>O Império Começa Aqui</p>
<p style={{color:'#a0826d',maxWidth:'500px',marginBottom:'2rem'}}>Simulador de vida onde cada escolha te leva mais perto da riqueza. Construa impérios, domine o mercado.</p>
<span style={{background:'#FFD700',color:'#1a0a00',padding:'0.5rem 2rem',borderRadius:'20px',fontWeight:'bold'}}>Em Breve</span>
</div>
)
}
-11
View File
@@ -1,11 +0,0 @@
export default function ExpedicaoGold() {
return (
<div style={{minHeight:'100vh',background:'linear-gradient(135deg,#0a1a00,#1a3a00)',display:'flex',flexDirection:'column',alignItems:'center',justifyContent:'center',color:'#90EE90',fontFamily:'sans-serif',textAlign:'center',padding:'2rem'}}>
<div style={{fontSize:'4rem',marginBottom:'1rem'}}>🗺</div>
<h1 style={{fontSize:'3rem',marginBottom:'0.5rem'}}>Expedição Gold</h1>
<p style={{fontSize:'1.2rem',color:'#50aa50',marginBottom:'2rem'}}>Conquiste o Ouro do Mundo</p>
<p style={{color:'#668866',maxWidth:'500px',marginBottom:'2rem'}}>Expedições terrestres, marítimas, espaciais e espirituais. Cada jornada é única. Cada conquista, sua.</p>
<span style={{background:'#90EE90',color:'#0a1a00',padding:'0.5rem 2rem',borderRadius:'20px',fontWeight:'bold'}}>Em Breve no 1000Apps</span>
</div>
)
}
-11
View File
@@ -1,11 +0,0 @@
export default function HumanCity() {
return (
<div style={{minHeight:'100vh',background:'linear-gradient(135deg,#050520,#0a0a40)',display:'flex',flexDirection:'column',alignItems:'center',justifyContent:'center',color:'#a0a0ff',fontFamily:'sans-serif',textAlign:'center',padding:'2rem'}}>
<div style={{fontSize:'4rem',marginBottom:'1rem'}}>🏙</div>
<h1 style={{fontSize:'3rem',marginBottom:'0.5rem'}}>Human City</h1>
<p style={{fontSize:'1.2rem',color:'#7070cc',marginBottom:'2rem'}}>Simule. Construa. Viva.</p>
<p style={{color:'#5555aa',maxWidth:'500px',marginBottom:'2rem'}}>Simulação de vida estilo The Sims. Crie personagens, construa cidades, escreva sua história.</p>
<span style={{background:'#a0a0ff',color:'#050520',padding:'0.5rem 2rem',borderRadius:'20px',fontWeight:'bold'}}>Em Desenvolvimento</span>
</div>
)
}
-11
View File
@@ -1,11 +0,0 @@
export default function TerraVerse() {
return (
<div style={{minHeight:'100vh',background:'linear-gradient(135deg,#000510,#001a3a)',display:'flex',flexDirection:'column',alignItems:'center',justifyContent:'center',color:'#00d4ff',fontFamily:'sans-serif',textAlign:'center',padding:'2rem'}}>
<div style={{fontSize:'4rem',marginBottom:'1rem'}}>🌍</div>
<h1 style={{fontSize:'3rem',marginBottom:'0.5rem'}}>TerraVerse</h1>
<p style={{fontSize:'1.2rem',color:'#0099bb',marginBottom:'2rem'}}>O Novo Mundo te Espera</p>
<p style={{color:'#6699aa',maxWidth:'500px',marginBottom:'2rem'}}>Game de realidade aumentada que vai revolucionar como você explora, conquista e monetiza o mundo real.</p>
<span style={{background:'#00d4ff',color:'#000510',padding:'0.5rem 2rem',borderRadius:'20px',fontWeight:'bold'}}>Em Breve</span>
</div>
)
}
-83
View File
@@ -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) => (
<button
className="square"
onClick={() => handleClick(i)}
>
{board[i]}
</button>
);
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 (
<div style={{ padding: '2rem', fontFamily: 'sans-serif' }}>
<h1>Tic Tac Toe</h1>
<div style={statusStyle}>{status}</div>
<div style={boardStyle}>
{[0, 1, 2, 3, 4, 5, 6, 7, 8].map(i => (
<div key={i} style={squareStyle}>
{renderSquare(i)}
</div>
))}
</div>
</div>
);
}
+2 -2
View File
@@ -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()