Document forum feature across site

- Add prominent forum CTA to community page
- Add Get Help section to getting-started docs
- Add forum link to footer Resources section
- Update CLAUDE.md with web UI and forum architecture

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
rob 2026-01-02 01:17:25 -04:00
parent 3efed0bf33
commit 2939dd806b
4 changed files with 73 additions and 0 deletions

View File

@ -78,3 +78,39 @@ providers:
``` ```
The `mock` provider is built-in for testing without API calls. The `mock` provider is built-in for testing without API calls.
## Web UI & Registry
SmartTools includes a web interface and tool registry:
### Web Modules (`src/smarttools/web/`)
- **app.py**: Flask app factory, registers blueprints
- **routes.py**: Main web routes (docs, tutorials, tools, etc.)
- **forum/**: Community forum blueprint
- **models.py**: Forum database schema (categories, topics, replies)
- **routes.py**: Forum routes (/forum, /forum/c/<slug>, /forum/t/<id>)
- **filters.py**: Jinja2 filters (timeago, markdown, etc.)
- **docs_content.py**: Documentation and tutorial content
### Registry Modules (`src/smarttools/registry/`)
- **app.py**: Registry API (tool publishing, search, downloads)
- **db.py**: SQLite schema and queries
### Key URLs
- `/forum` - Community forum
- `/docs` - Documentation
- `/tutorials` - Tutorial guides
- `/tools` - Tool registry browser
### Running the Web UI
```bash
# Development
python -m smarttools.web.app
# Production (example)
SMARTTOOLS_REGISTRY_DB=/path/to/db PORT=5050 python -m smarttools.web.app
```

View File

@ -81,12 +81,21 @@ output: "{summary}"</code></pre>
<li><a href="/docs/providers">Providers</a> - Configure AI providers</li> <li><a href="/docs/providers">Providers</a> - Configure AI providers</li>
<li><a href="/tools">Browse Tools</a> - Discover community tools</li> <li><a href="/tools">Browse Tools</a> - Discover community tools</li>
</ul> </ul>
<h2 id="get-help">Get Help</h2>
<p>Stuck? Have questions? We've got you covered:</p>
<ul>
<li><a href="/forum">Community Forum</a> - Ask questions, share projects, and connect with other users</li>
<li><a href="/forum/c/help">Help &amp; Support</a> - Get help with installation, configuration, or usage</li>
<li><a href="https://gitea.brrd.tech/rob/SmartTools/issues" target="_blank">Report a Bug</a> - Found an issue? Let us know</li>
</ul>
""", """,
"headings": [ "headings": [
("what-is-smarttools", "What is SmartTools?"), ("what-is-smarttools", "What is SmartTools?"),
("quick-start", "Quick Start"), ("quick-start", "Quick Start"),
("how-it-works", "How It Works"), ("how-it-works", "How It Works"),
("next-steps", "Next Steps"), ("next-steps", "Next Steps"),
("get-help", "Get Help"),
], ],
}, },

View File

@ -31,6 +31,7 @@
<li><a href="{{ url_for('web.docs') }}" class="text-gray-400 hover:text-white text-sm">Documentation</a></li> <li><a href="{{ url_for('web.docs') }}" class="text-gray-400 hover:text-white text-sm">Documentation</a></li>
<li><a href="{{ url_for('web.tutorials') }}" class="text-gray-400 hover:text-white text-sm">Tutorials</a></li> <li><a href="{{ url_for('web.tutorials') }}" class="text-gray-400 hover:text-white text-sm">Tutorials</a></li>
<li><a href="{{ url_for('web.tools_browse') }}" class="text-gray-400 hover:text-white text-sm">Registry</a></li> <li><a href="{{ url_for('web.tools_browse') }}" class="text-gray-400 hover:text-white text-sm">Registry</a></li>
<li><a href="{{ url_for('forum.index') }}" class="text-gray-400 hover:text-white text-sm">Forum</a></li>
<li><a href="{{ url_for('web.community') }}" class="text-gray-400 hover:text-white text-sm">Community</a></li> <li><a href="{{ url_for('web.community') }}" class="text-gray-400 hover:text-white text-sm">Community</a></li>
</ul> </ul>
</div> </div>

View File

@ -17,6 +17,29 @@
</div> </div>
<div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-12"> <div class="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-12">
<!-- Forum CTA -->
<section class="mb-12">
<a href="{{ url_for('forum.index') }}"
class="block bg-indigo-600 rounded-lg p-6 hover:bg-indigo-700 transition-colors">
<div class="flex items-center justify-between">
<div class="flex items-center space-x-4">
<div class="w-12 h-12 bg-indigo-500 rounded-lg flex items-center justify-center">
<svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 8h2a2 2 0 012 2v6a2 2 0 01-2 2h-2v4l-4-4H9a1.994 1.994 0 01-1.414-.586m0 0L11 14h4a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2v4l.586-.586z"/>
</svg>
</div>
<div>
<h2 class="text-xl font-bold text-white">Community Forum</h2>
<p class="text-indigo-100">Ask questions, share projects, and connect with other users</p>
</div>
</div>
<svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
</svg>
</div>
</a>
</section>
<!-- Community hubs --> <!-- Community hubs -->
<section class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-12"> <section class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-12">
<div class="bg-white rounded-lg border border-gray-200 p-6"> <div class="bg-white rounded-lg border border-gray-200 p-6">
@ -136,6 +159,10 @@
<!-- Quick Links --> <!-- Quick Links -->
<section class="mt-8 text-center"> <section class="mt-8 text-center">
<div class="flex flex-wrap items-center justify-center gap-4"> <div class="flex flex-wrap items-center justify-center gap-4">
<a href="{{ url_for('forum.index') }}"
class="inline-flex items-center px-4 py-2 text-sm font-medium text-white bg-indigo-600 rounded-md hover:bg-indigo-700">
Visit Forum
</a>
<a href="https://gitea.brrd.tech/rob/SmartTools#installation" <a href="https://gitea.brrd.tech/rob/SmartTools#installation"
target="_blank" rel="noopener" target="_blank" rel="noopener"
class="inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50"> class="inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50">