Development ==================== Build SickRock from source when you want to contribute or run unreleased changes. ## [](#%5Fprerequisites)Prerequisites * Go (see `service/go.mod` for the required version) * Node.js and npm (for the Vue frontend) * `make` ## [](#%5Fbuild)Build From the repository root: ```bash make all ``` This generates protobuf code, builds the frontend, and compiles the Go service binary. ## [](#%5Frun%5Flocally)Run locally ```bash make service-run ``` The service listens on port `8080` by default. Override with `SICKROCK_PORT` or a `config.yaml` in your config directory (see `-configdir` flag). ## [](#%5Fother%5Ftargets)Other targets ```bash make lint # proto and service lint make service-test # Go tests make frontend-build make docs # build Antora documentation ``` ## [](#%5Fproject%5Flayout)Project layout * `service/` — Go backend (Connect/gRPC API, MCP server) * `frontend/` — Vue.js 3 TypeScript UI * `proto/` — Protobuf definitions * `docs/` — Antora documentation (this site) Getting Started ==================== Once SickRock is [installed and running](install/docker-compose.html), open the web UI in your browser (by default at ``). ## [](#%5Fconnect%5Fa%5Fdatabase)Connect a database SickRock works on top of real databases. From the UI you can: * Add a SQLite or MySQL database connection * Browse existing tables and their structure * Create table configurations that define how data appears in the UI ## [](#%5Fconfigure%5Ftables%5Fand%5Fviews)Configure tables and views For each table you want to expose: * Define column visibility, ordering, and display options * Create table views for different use cases (list, form, dashboard) * Set up navigation so users can browse your application ## [](#%5Fcreate%5Fapi%5Fkeys)Create API keys To integrate external tools or AI assistants, create an API key from **Settings → API Keys**. The same key works for the Connect RPC API, OpenAPI clients, and the [MCP server](integration/mcp.html). ## [](#%5Fnext%5Fsteps)Next steps * [Development](development.html) — build and run SickRock from source * [Integration](integration/index.html) — MCP, Connect API, and OpenAPI * [Support](support.html) — community help and issue reporting SickRock ==================== **Build no-code database web applications on real databases.** SickRock is a Go and Vue reimplementation of the Sicroc LAMP-stack application. Connect it to SQLite or MySQL, configure tables and views in the UI, and expose data through the web interface, Connect RPC API, OpenAPI spec, or MCP server. * [Installation Guide](install/docker-compose.html). * [Getting Started Guide](getting-started.html). This documentation site is llm.txt compatible. See [llm.txt](https://jamesread.github.io/SickRock/llm.txt) and [llm-full.txt](https://jamesread.github.io/SickRock/llm-full.txt). ## [](#%5Fvibe%5Fcoded%5Fproject)Vibe coded project SickRock is deliberately "vibe coded" as an experiment in AI-assisted development. Most of the code is human reviewed, but it is not human written in the traditional sense. See the [GitHub repository](https://github.com/jamesread/SickRock) for the full disclosure in the README. Support ==================== To get relatively quick access to help, **Discord** is where the chat community for SickRock is. This project is a free community open source project, and it relies on volunteers to spare their free time to help you. Please be patient and polite. [Chat on Discord](https://discord.gg/jhYWWpNJ3v) If nobody is online, or you’re not getting the right level of support, you can raise a ticket with the project’s developers on GitHub. Again, please be patient and polite. [Open a support request on GitHub](https://github.com/jamesread/SickRock/issues/new?assignees=&labels=support&template=support%5Frequest.md&title=) Installation via Docker Compose ==================== Using Docker Compose is the recommended way to run SickRock. The container image is published to GitHub Container Registry. docker-compose.yml ```yaml --- services: sickrock: container_name: SickRock image: ghcr.io/jamesread/sickrock:latest volumes: - sickrock-config:/config restart: unless-stopped ports: - "8080:8080" volumes: sickrock-config: name: sickrock-config external: false ``` Save this `docker-compose.yml` in a directory of your choice, then start SickRock: ```bash docker compose up -d ``` Open `` in your web browser. ## [](#%5Fconfiguration)Configuration SickRock reads configuration from the `/config` volume. You can place a `config.yaml` file there and set environment variables prefixed with `SICKROCK_` (for example `SICKROCK_PORT`). ## [](#%5Fnext%5Fsteps)Next steps If you see the SickRock web interface, proceed to the [Getting Started Guide](../getting-started.html). ## [](#%5Ftroubleshooting)Troubleshooting * Ensure Docker and Docker Compose are installed and running. * Check container logs: ```bash docker compose logs sickrock ``` * Visit [Support](../support.html) for community help. Docker (Standalone) ==================== ```bash docker pull ghcr.io/jamesread/sickrock:latest docker run \ --name SickRock \ -v sickrock-config:/config \ -p 8080:8080 \ --restart unless-stopped \ ghcr.io/jamesread/sickrock:latest ``` Open `` in your web browser. See [Docker Compose](docker-compose.html) for the recommended installation approach. Connect API and OpenAPI ==================== SickRock serves a Connect RPC API (gRPC-over-HTTP) and publishes an OpenAPI specification for the same surface. ## [](#%5Fconnect%5Frpc)Connect RPC * Base path: `/api` * Protocol: Connect (compatible with gRPC clients and HTTP JSON) Generate client code from the protobuf definitions in the `proto/` directory, or call endpoints directly over HTTP. ## [](#%5Fopenapi)OpenAPI * Spec URL: `/openapi` * Format: OpenAPI 3.1 JSON Use the OpenAPI spec to generate clients, explore endpoints in Swagger UI-compatible tools, or feed LLM context via the application’s `llms.txt` discovery file. ## [](#%5Fauthentication)Authentication All requests require an API key as a Bearer token: ```asciidoc Authorization: Bearer ``` Create keys in **Settings → API Keys** in the SickRock UI. Integration ==================== SickRock exposes machine-readable integration endpoints on the same base URL as the web application. All API and MCP clients authenticate with a Bearer token (API key) in the `Authorization` header: ```asciidoc Authorization: Bearer ``` Create API keys in the SickRock UI (**Settings → API Keys**). ## [](#%5Fendpoints)Endpoints | Endpoint | Description | | -------- | ---------------------------------------------------------- | | /api | Connect RPC (gRPC-over-HTTP) API | | /openapi | OpenAPI 3.1 JSON description of the Connect API | | /mcp | Model Context Protocol (Streamable HTTP) for AI assistants | * [MCP Server](mcp.html) * [Connect API and OpenAPI](api.html) MCP Server ==================== SickRock exposes an [MCP](https://modelcontextprotocol.io) server as an HTTP endpoint on the same base URL as the application. ## [](#%5Fendpoint)Endpoint * `GET/POST /mcp` — MCP Streamable HTTP transport ## [](#%5Fauthentication)Authentication Use the same API key as the Connect API. Pass it as a Bearer token: ```asciidoc Authorization: Bearer ``` ## [](#%5Fcursor%5Fconfiguration)Cursor configuration In Cursor MCP settings, use HTTP transport with your SickRock base URL plus `/mcp`, and set the API key per your client’s documentation. No separate MCP binary is required when SickRock is reachable over HTTP. ## [](#%5Favailable%5Ftools)Available tools The MCP server exposes tools including: * `sickrock_ping` * `sickrock_get_navigation` * `sickrock_get_table_configurations` * `sickrock_get_database_tables` * `sickrock_get_table_structure` * `sickrock_list_items` * `sickrock_get_item` * `sickrock_create_item` * `sickrock_edit_item` * `sickrock_delete_item` See [AGENTS.md](https://github.com/jamesread/SickRock/blob/main/AGENTS.md) in the repository for full agent integration guidance.