Source for tickwise.tech — the marketing landing page for TickWise, an AI-assisted, multi-actor liquidity engine for Polymarket prediction markets.
website/
├── index.html # Hero, feature grid, OSS block, signup form
├── demo.html # Fake operator dashboard (sample data, no live state)
├── styles.css # Black/green/silver palette, light + dark via prefers-color-scheme
├── favicon.svg # Minimalist green checkmark
└── api/
├── subscribe.py # FastAPI signup endpoint (POST /api/subscribe)
└── tickwise-tech-api.service # systemd unit to run the endpoint
- No JavaScript framework. One small inline
<script>for the signupfetch(). - No build step. HTML/CSS shipped as-is.
- Light + dark mode auto-switches on the visitor's OS theme.
- Production: https://tickwise.tech
- Demo dashboard: https://tickwise.tech/demo.html
Tested on a stock Ubuntu 24.04 VPS with Caddy as the web server (auto-TLS via Let's Encrypt) and FastAPI for the signup endpoint.
# 1. Static files
sudo mkdir -p /var/www/tickwise.tech
sudo cp index.html demo.html styles.css favicon.svg /var/www/tickwise.tech/
sudo chown -R caddy:caddy /var/www/tickwise.tech
# 2. Signup endpoint
sudo mkdir -p /opt/tickwise-tech-api /var/lib/tickwise-tech
sudo cp api/subscribe.py /opt/tickwise-tech-api/
sudo python3 -m venv /opt/tickwise-tech-api/.venv
sudo /opt/tickwise-tech-api/.venv/bin/pip install fastapi uvicorn pydantic
sudo chown -R www-data:www-data /opt/tickwise-tech-api /var/lib/tickwise-tech
sudo cp api/tickwise-tech-api.service /etc/systemd/system/
sudo systemctl enable --now tickwise-tech-api
# 3. Caddy vhost (append to /etc/caddy/Caddyfile, then reload)
cat | sudo tee -a /etc/caddy/Caddyfile <<'EOF'
your.domain.example {
encode gzip zstd
handle /api/* {
reverse_proxy 127.0.0.1:8001
}
root * /var/www/tickwise.tech
file_server
header {
Strict-Transport-Security "max-age=31536000; includeSubDomains"
X-Content-Type-Options "nosniff"
Referrer-Policy "strict-origin-when-cross-origin"
Cache-Control "public, max-age=300"
}
@notFound { not file }
handle @notFound { rewrite * /index.html; file_server }
}
EOF
sudo systemctl reload caddyDNS: point your domain's A/AAAA record at the VPS. Caddy provisions TLS on first request.
POST /api/subscribe
{ "email": "you@example.com" }Stores rows as JSONL at /var/lib/tickwise-tech/subscribers.jsonl. Rate-limited to 5 requests / minute per IP. Validates email format + length. Returns:
201 {"ok": true}— added409— already subscribed422— invalid email429— rate-limited
tickwise-tech/tickwise— the actual trading engine (coming soon)
MIT. See LICENSE.