Teste Task
import os
import zipfile
# Diretório base do projeto
base_dir = "/mnt/data/click-tasks"
frontend_dir = os.path.join(base_dir, "frontend")
backend_dir = os.path.join(base_dir, "backend")
# Estrutura de diretórios e arquivos para incluir
structure = {
"frontend/public/index.html": """
CLICK TASKs
""",
"frontend/src/index.css": """@tailwind base;
@tailwind components;
@tailwind utilities;
""",
"frontend/src/index.js": """import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import './index.css';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render( );
""",
"frontend/src/App.jsx": """import React from 'react';
import { BrowserRouter as Router } from 'react-router-dom';
import RoutesApp from './routes';
function App() {
return (
);
}
export default App;
""",
"frontend/src/routes.jsx": """import React from 'react';
import { Routes, Route } from 'react-router-dom';
import Login from './components/Login';
import Register from './components/Register';
import ForgotPassword from './components/ForgotPassword';
import Info from './components/Info';
const RoutesApp = () => (
} />
} />
} />
} />
);
export default RoutesApp;
""",
"frontend/src/components/Login.jsx": "/* Login.jsx simplificado para exemplo */",
"frontend/src/components/Register.jsx": "/* Register.jsx simplificado para exemplo */",
"frontend/src/components/ForgotPassword.jsx": "/* ForgotPassword.jsx simplificado para exemplo */",
"frontend/src/components/Info.jsx": "/* Info.jsx simplificado para exemplo */",
"frontend/src/services/api.js": """import axios from 'axios';
const api = axios.create({
baseURL: "http://localhost:5000/api",
});
export default api;
""",
"frontend/package.json": """{
"name": "click-tasks-frontend",
"version": "1.0.0",
"private": true,
"dependencies": {
"axios": "^1.3.4",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.8.0"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build"
}
}
""",
"frontend/tailwind.config.js": """module.exports = {
content: [
"./src/**/*.{js,jsx,ts,tsx}",
"./public/index.html"
],
theme: {
extend: {},
},
plugins: [],
};
""",
"frontend/postcss.config.js": """module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
};
""",
"backend/app.js": "/* app.js simplificado para exemplo */",
"backend/package.json": """{
"name": "click-tasks-backend",
"version": "1.0.0",
"main": "app.js",
"scripts": {
"start": "node app.js"
},
"dependencies": {
"bcrypt": "^5.1.0",
"cors": "^2.8.5",
"dotenv": "^16.0.3",
"express": "^4.18.2",
"jsonwebtoken": "^9.0.0",
"mongoose": "^7.0.3"
}
}
""",
"LICENSE.md": "# Apache License 2.0\n\n[...Texto completo aqui...]",
"README.md": "# CLICK TASKs\n\nProjeto fullstack com React + Node.js"
}
# Criar os arquivos e diretórios
for path, content in structure.items():
full_path = os.path.join(base_dir, path)
os.makedirs(os.path.dirname(full_path), exist_ok=True)
with open(full_path, "w") as f:
f.write(content)
# Compactar em ZIP
zip_path = "/mnt/data/click-tasks.zip"
with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
for root, _, files in os.walk(base_dir):
for file in files:
abs_file = os.path.join(root, file)
rel_path = os.path.relpath(abs_file, base_dir)
zipf.write(abs_file, rel_path)
zip_path
Comentários
Postar um comentário
Sejam Bem Vindos ao Passo Seguinte