CodeSpeak Quick Start: Build a Project From Scratch
This quick start guide will walk you through creating a CodeSpeak project from scratch. We will build a project that runs with Python and uv.
If you are interested in using CodeSpeak in an existing project, check out this tutorial.
Prerequisites
Install uv
CodeSpeak uses uv as its Python package manager.
curl -LsSf https://astral.sh/uv/install.sh | shRestart your terminal (or run source ~/.bashrc / source ~/.zshrc), then verify:
uv --versionGet an Anthropic API key
CodeSpeak is BYOK (Bring Your Own Key). Get an API key at platform.claude.com/settings/keys.
You can provide the key in two ways:
- Paste it when CodeSpeak prompts you (this creates an
.env.localfile in your project directory) - Set the environment variable:
export ANTHROPIC_API_KEY=<your-key>
Install CodeSpeak
uv tool install codespeak-cliVerify the installation:
codespeak --versionLog in
codespeak loginLog in with Google or email/password.
Create new project
# New project dir
mkdir my-project
cd my-project
# Initialise a CodeSpeak project
codespeak init --mixedCodeSpeak will create a directory structure and initialise a git repo:
my-project
โโโ .codespeak # Internal state used by CodeSpeak
โโโ .gitignore
โโโ codespeak.json # CodeSpeak project configurationCreate the spec
Create/open spec.cs.md in your favourite editor, and type away. Here's an example that may be fun to start with:
# Funny Geese Demo
The app animates geese (๐ชฟ) bouncing around the screen, tumbling.
## UX
A click on a free space creates a new medium-sized goose flying in a random direction.
A click on a goose makes it bigger. When a goose gets too big it disappears with an animated pop.
## Technology
- Use pure HTML + JS
- Use Tailwind CSS for styling
Now, it's time to build your project:
codespeak build --spec spec.cs.md # You will be asked for an Anthropic API keyWhen the build is finished, you'll see a message in the terminal:
โญโโโโโโโโโโโโ CodeSpeak Progress: Funny Geese Demo: Animating bouncing geese with click interactions โโโโโโโโโโโโโฎ
โ โ Process specification (0.1s) โ
โ โ Collect project information (0.1s) โ
โ โ Implement specification (39.9s) โ
โ โฐโ โ Collect context & plan work (39.7s) โ
โ โ Finalize spec build (0.2s) โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ Alpha Preview โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
Processing spec 1/1: spec.cs.md
Built successfully.
An HTML file will be created in the project dir, you can open it with your browser:
.
โโโ codespeak.json
โโโ index.html # <--- open this file
โโโ spec.cs.mdEnjoy the flying geese!
Adding a new feature
To improve your project, you can edit the spec and build again. CodeSpeak will turn the diff in the spec into a diff in the code. For example, let's add a slider to slow down/speed up the geese:
Now, let's build again:
codespeak build --spec spec.cs.mdThe code has been updated. Check out the new version.
Adding a Django back-end
Let's go for something more serious than just a self-contained HTML page:
Build the project:
codespeak build --spec spec.cs.mdNow, you can start the Django server:
uv run manage.py runserverOpen the page in your browser, the URL is in your console (usually http://127.0.0.1:8000).
Remove a feature
If something doesn't seem like a good idea, edit the spec to remove it:
Build the project to see the changes:
codespeak build --spec spec.cs.mdFixing bugs in the spec
If you see that something is not right, first try to fix the spec:
Let's see if it helps:
codespeak build --spec spec.cs.mdGreat! The bug is fixed for new users.
IN case you need to reset the DB in the django app (in case old emojis are stuck from previous runs):
python manage.py flushCode Change Requests
When the spec is correct, but the code doesn't work the way you expect, it presents a problem: there's nothing to change in the spec, but then how will the issue get fixed.
Typical examples would be
- either a bug in the code, e.g. an exception, or something not working as specified,
- or a low-level detail, like when you want to change a color of some element on the screen that is not even mentioned in the spec.
For these situations, CodeSpeak supports Code Change Requests through codespeak change command.
โ ๏ธ Note: Code Change Requests are supposed to only change the code without contradicting anything in the spec. For example, if you are trying to replace ๐ชฟ with ๐, it will report an error and ask you to change the spec.
Fix bugs with Code Change Requests
For example, let's say we see that the number of geese is computed incorrectly for some reason. This is not a problem with the spec, it's a bug in the implementation.
So, let's tell CodeSpeak what's wrong in a Code Change Request:
codespeak change -m "Number of geese displayed is off by 1"CodeSpeak will try its best to fix the bug.
See Also
- CodeSpeak in Mixed Projects: Add a Feature to Django Oscar
Walk through adding a dashboard report to Django Oscar using CodeSpeak mixed mode. - CodeSpeak Quick Start: Work in an Existing Project
Walk through adding a feature to an existing code base using CodeSpeak mixed mode.