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:
+1
-1
@@ -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 (
|
||||
|
||||
@@ -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>
|
||||
)
|
||||
}
|
||||
@@ -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>
|
||||
)
|
||||
}
|
||||
@@ -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>
|
||||
)
|
||||
}
|
||||
@@ -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>
|
||||
)
|
||||
}
|
||||
@@ -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
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user