Tutorial
Getting Started: Building a Modern Todo List Web App with Smarter and Claude Code
Goal
We will use Anthropic Claude (via a custom LLM provider in Smarter) to create a complete single-file HTML web application for a modern Todo List with the following features:
Add, edit, delete, and complete tasks
Persistence with local storage
Responsive design using Tailwind CSS
Clean and modern UI
By the end of this tutorial, you will have a fully functional Todo app generated entirely by your Smarter-powered coding assistant.
Prerequisites
This tutorial assumes you already have:
Basic familiarity with YAML syntax and command-line tools.
An Anthropic API key for access to Claude models.
Smarter platform installed and running locally in your environment.
Access to the Smarter Web Dashboard -> Prompt Engineer Workbench.
A modern web browser to test the generated HTML file.
Basic understanding of HTML, CSS, and JavaScript.
Setup
Before you begin, complete these preparation steps:
Ensure the smarter CLI is installed and authenticated.
Have your Anthropic API key ready.
Start your Smarter instance.
Concept Overview
Smarter is a declarative, no-code platform for managing AI resources. Key concepts used in this tutorial:
Provider: Defines an LLM provider to be used by the LLMClient to access Anthropic Claude models.
LLMClient: The main conversational agent containing the system prompt, model settings, and temperature. This is what you interact with in the Workbench and what IDE extensions would call.
Prompt Engineer Workbench: The web interface inside Smarter where you can chat with your LLMClient to generate code, iterate, and prototype rapidly.
Single-file HTML: A self-contained web app (HTML + Tailwind CSS + embedded JS) that requires no build step or server.
Step-by-Step
Step 1: Create a Secret for the API Key
Create a file named claude-secret.yaml:
apiVersion: smarter.sh/v1
kind: Secret
metadata:
name: claude-api-key
description: Anthropic API key for Claude
spec:
data:
api_key: "xxxxx" # Replace with your Anthropic key
Apply it:
smarter apply -f claude-secret.yaml
Step 2: Add Claude as a New LLM Provider
Create claude-provider.yaml:
apiVersion: smarter.sh/v1
kind: Provider
metadata:
name: claude
description: Claude Code
version: "1.0.0"
tags: ["llm", "coding", "claude"]
spec:
provider:
name: "Claude"
description: "Anthropic Claude models for coding assistance"
base_url: "https://api.anthropic.com/v1"
api_key: "claude-api-key"
connectivity_test_path: "/models"
Apply the provider:
smarter apply -f claude-provider.yaml
Verify it works:
smarter describe provider claude
Step 3: Create the Coding Assistant LLMClient
Create web-coding-assistant.yaml:
apiVersion: smarter.sh/v1
kind: LLMClient
metadata:
name: web-coding-assistant
description: Coding assistant for generating modern web apps
version: "1.0.0"
tags: ["coding", "web"]
spec:
config:
provider: "Claude"
defaultModel: "claude-3-5-sonnet-20241022"
defaultSystemRole: |
You are an expert full-stack web developer specializing in clean, modern single-file HTML applications.
Always use Tailwind CSS. Output ONLY the complete, valid HTML file when asked.
Never add explanations outside the HTML.
temperature: 0.1
maxTokens: 16384
plugins: []
Apply the llm_client:
smarter apply -f web-coding-assistant.yaml
Step 4: Generate the Todo App in the Prompt Engineer Workbench
Open Smarter Web Dashboard -> Prompt Engineer Workbench.
Select the llm_client web-coding-assistant.
Paste the following prompt:
Create a complete single-file HTML web application for a modern Todo List with these features:
Add, edit, delete, and mark tasks as complete
Tasks saved automatically in local storage
Use Tailwind CSS
Output ONLY the complete, valid HTML file content.
Do not include any markdown, explanations, or extra text outside the HTML.
Send the message and the assistant will return the full HTML.
Copy everything from
<!DOCTYPE html>to the end and save it astodo-app.html.Open the file in your browser and test all features.
Proof of Concept
When successful, you will have a single file todo-app.html that:
Runs entirely in the browser with no backend or build tools.
Looks professional with modern styling.
Persists your tasks across page refreshes.
Troubleshooting
Solutions to common pitfalls:
Provider fails connectivity test
Verify the API key in the secret and
base_urlis correct. Re-apply the Provider manifest for any corrections.
Generated HTML is truncated
Increase
maxTokensin the LLMClient config and re-apply, or use a more powerful model like Claude 3.5 Sonnet.
Output contains explanations instead of pure HTML
Adjust the system prompt wording to reinforce “ONLY output the complete HTML file” and re-generate.
Next Steps
Build a VS Code extension that calls your LLMClient API for inline assistance.
Experiment with additional prompts to add features to the Todo App in the Workbench.
You have now successfully used Smarter as a self-hosted coding assistant to generate a complete web application.