# Frontend Structure Documentation ## Overview The Manus AI Clone now uses a professional frontend structure with Jinja2 templates and separated static assets (CSS/JS). ## Directory Structure ``` manus_ai_clone/ ├── templates/ # Jinja2 HTML templates │ ├── base.html # Base template with common layout │ └── index.html # Home page template ├── static/ # Static assets │ ├── css/ │ │ └── style.css # Main stylesheet │ └── js/ │ └── main.js # Frontend JavaScript ├── browser_agent.py # Browser automation logic ├── main.py # FastAPI application └── pyproject.toml # Project dependencies ``` ## Template System ### base.html - Base template with common layout structure - Includes navigation bar and footer - Provides blocks for extending pages - Links to static CSS and JS files **Blocks available:** - `{% block title %}` - Page title - `{% block extra_css %}` - Additional CSS - `{% block content %}` - Main content - `{% block extra_js %}` - Additional JavaScript ### index.html - Extends base.html - Main application interface - Includes: - Hero section with title - Example prompts - Input textarea for user prompts - Action buttons - Loading indicator - Results display with screenshots - Statistics cards ## Static Assets ### CSS (style.css) Features: - CSS custom properties for theming - Responsive design with media queries - Modern gradient backgrounds - Card-based layouts - Smooth animations and transitions - Custom scrollbar styling - Hover effects Key sections: - Variables and reset - Navigation bar - Hero section - Input forms - Buttons and controls - Loading indicators - Results display - Action history - Statistics cards - Footer ### JavaScript (main.js) Features: - Task execution with API calls - Real-time loading states - Results rendering - Screenshot display - Action history tracking - Statistics tracking (localStorage) - Toast notifications - Error handling - Keyboard shortcuts Key functions: - `executeTask()` - Execute browser automation - `displayResults()` - Render task results - `clearResults()` - Clear UI - `fillPrompt()` - Fill example prompts - `showNotification()` - Toast messages - `loadStats()` / `saveStats()` - Statistics persistence ## Usage ### Running the Application ```bash # Install dependencies uv pip install -e . # Start the server python main.py # Or with uvicorn uvicorn main:app --reload --host 0.0.0.0 --port 8000 ``` ### Creating Custom Templates 1. Create a new template in `templates/`: ```html {% extends "base.html" %} {% block title %}Custom Page{% endblock %} {% block content %}

Custom Content

{% endblock %} ``` 2. Add route in `main.py`: ```python @app.get("/custom") async def custom_page(request: Request): return templates.TemplateResponse("custom.html", {"request": request}) ``` ### Adding Custom Styles Add to `static/css/style.css`: ```css .custom-class { /* Your styles */ } ``` Or create a new CSS file and link in template: ```html {% block extra_css %} {% endblock %} ``` ### Adding Custom JavaScript Add to `static/js/main.js` or create new file: ```html {% block extra_js %} {% endblock %} ``` ## Features ### Statistics Tracking - Persistent across sessions (localStorage) - Tracks total tasks, successful tasks, and average time - Can be reset with `resetStats()` function ### Toast Notifications - Success, error, info, warning types - Auto-dismiss after 3 seconds - Slide-in animation ### Example Prompts - Click any example to fill the input - Helps users understand capabilities ### Keyboard Shortcuts - `Enter` - Execute task - `Shift+Enter` - New line in textarea ### Responsive Design - Mobile-first approach - Breakpoints for tablets and desktops - Collapsible navigation on mobile ## Customization ### Theming Edit CSS variables in `style.css`: ```css :root { --primary-color: #667eea; --secondary-color: #764ba2; --success-color: #4caf50; /* etc. */ } ``` ### Adding New API Endpoints ```python @app.get("/api/custom") async def custom_endpoint(): return {"message": "Custom response"} ``` ### Adding New Templates 1. Create template in `templates/` 2. Register route in `main.py` 3. Use `templates.TemplateResponse()` ## Development Tips 1. **Hot Reload**: Use `--reload` flag with uvicorn for development 2. **Debug Mode**: Check browser console for JavaScript errors 3. **Template Errors**: FastAPI shows detailed template errors in browser 4. **Static Files**: Changes to CSS/JS are cached - hard refresh (Ctrl+Shift+R) ## Browser Compatibility - Chrome/Edge: ✅ Full support - Firefox: ✅ Full support - Safari: ✅ Full support - Mobile browsers: ✅ Responsive design ## Performance Considerations - Static files are cached by browser - Screenshots are base64 encoded (may be large) - Action history limited to prevent DOM bloat - Statistics stored in localStorage (5-10MB limit) ## Security Notes - CORS enabled for same-origin only - No authentication included (add if exposing publicly) - API keys loaded from environment variables - User input sanitized by FastAPI/Pydantic ## Future Enhancements Potential additions: - Dark mode toggle - Export results as PDF - WebSocket for real-time updates - User authentication - Task history database - Screenshot comparison - Recording browser sessions - Multi-language support