| .claude/skills | ||
| assets | ||
| ops | ||
| tests | ||
| .gitignore | ||
| api.routes.scm | ||
| app.scm | ||
| aws.scm | ||
| Caddyfile | ||
| CLAUDE.md | ||
| d-scheduler.scm | ||
| d-worker.scm | ||
| docker-compose.prod.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| dotenv.scm | ||
| DSCHEDULER.md | ||
| landing.routes.scm | ||
| landing.views.scm | ||
| Makefile | ||
| migrations.scm | ||
| models.scm | ||
| oauth-google.scm | ||
| ORM.md | ||
| README.md | ||
| routes.scm | ||
| schematra-starter-kit.build.sh | ||
| schematra-starter-kit.egg | ||
| schematra-starter-kit.install.sh | ||
| utils.scm | ||
Schematra Starter Kit
A starter kit for building web applications in CHICKEN Scheme using the Schematra web framework. Comes with an ORM (RQLite-backed), session management, OAuth, background job processing, HTMX integration, and production deployment infrastructure out of the box.
What's Included
- Schematra web framework with routing, middleware, and session support
- Chiccup templating (hiccup-style HTML in Scheme) with Tailwind CSS and HTMX
- ORM with auto-generated CRUD operations backed by RQLite
- OAuth authentication (Google, extensible to other providers)
- Background worker with Redis-based job scheduling and Fibonacci retry backoff
- AWS SDK — SES (email), SSM (parameter store), S3 (object storage), STS
- Production deployment — Terraform configs for Linode + Cloudflare DNS + Caddy reverse proxy
Getting Started
With Claude Code (recommended)
If you have Claude Code installed, the fastest way to get started is to ask Claude to install the skill and run it. Paste this prompt:
Fetch the skill definition from https://forgejo.rolando.cl/cpm/schematra-starting-kit/raw/branch/main/.claude/skills/schematra-app/SKILL.md and save it to
.claude/skills/schematra-app/SKILL.mdin my home directory, then run/schematra-app my-project
This installs the /schematra-app skill, clones the starter kit, initializes a fresh git repo, and walks you through installing dependencies, configuring services, and running the app. Once your project is set up, use /schematra-deploy to configure production infrastructure.
Manual Setup
# Clone and initialize
git clone https://forgejo.rolando.cl/cpm/schematra-starting-kit my-project
cd my-project
rm -rf .git && git init && git add -A && git commit -m "Initial commit"
# Install CHICKEN dependencies
make deps
# Create a .env file
cat > .env <<EOF
RQLITE_HOST=http://localhost:4001
REDIS_URL=localhost
APP_URL=http://localhost:8080
EOF
# Start RQLite and Redis
docker compose up -d rqlite redis
# Build
make dev
# Run in a REPL
csi -I ./build
Inside the REPL:
,l app.scm
Visit http://localhost:8080 to confirm the app is running.
Development Workflow
After making changes, rebuild and reload:
make dev # in a separate terminal
,l app.scm ;; in the running REPL
Project Structure
app.scm # Web application entry point
d-worker.scm # Background worker entry point
d-scheduler.scm # Redis-based job scheduler
routes.scm # Main routes
*.routes.scm # Feature-specific routes
*.views.scm # View modules (Chiccup components)
models.scm # Model definitions (auto-runs migrations)
migrations.scm # Database schema migrations
dotenv.scm # Environment variable loader
utils.scm # Shared utilities
aws.scm # AWS SDK (SES, SSM, S3, STS)
assets/ # Static assets (served at /assets)
ops/ # Terraform deployment configs
Makefile # Build system
CLAUDE.md # Full API reference and coding patterns
ORM.md # ORM documentation
Documentation
- CLAUDE.md — Complete API reference: routing, request handling, responses, views, middleware, sessions, authentication, coding patterns
- ORM.md — Database model definitions, migrations, and query API
- DSCHEDULER.md — Background job scheduler documentation
Prerequisites
- CHICKEN Scheme (
brew install chickenon macOS) - Docker (for RQLite and Redis)