Stormkit GitHub
Stormkit GitHub
https://github.com/stormkit-io/stormkit-io
Stormkit is a hosting solution for seamless deployment and management of modern web applications.
Stormkit
Cloud Edition For those who prefer a managed solution, Stormkit offers a Cloud Edition that can be accessed at app.stormkit.io. The Cloud Edition handles all the hosting, scaling, and maintenance tasks for you, allowing you to focus solely on building and improving your applications.
Self-Hosted Edition The Self-Hosted Edition of Stormkit gives you the flexibility to host your own instance of Stormkit on your infrastructure. This version is ideal for organizations that require more control over their hosting environment, need to comply with specific regulatory requirements, or prefer to manage their own infrastructure.
Getting Started To get started with the Self-Hosted Edition of Stormkit, you can choose to use either the provided binaries or Docker images.
Using docker containers You can use Docker images to run the Self-Hosted Edition. The following images are available:
ghcr.io/stormkit-io/workerserver:latest ghcr.io/stormkit-io/hosting:latest Additional services In addition to the Stormkit’s microservices, a PostgreSQL database and a Redis Instance is also required for Stormkit to function properly.
Local Development To run Stormkit locally:
Prerequisites Go 1.21+ Node.js 22+ PostgreSQL 14+ Redis 7+ Mise Docker You can install go and node using Mise, which is a polyglot tool version manager.
Trust the dependencies specified in mise.toml and install them
mise trust && mise install Running the services
Clone the repository
git clone https://github.com/stormkit-io/stormkit-io.git cd stormkit-io
Start all services (includes database setup and migrations)
make dev After starting the services:
The landing page will be available at https://localhost:5500 The application will be available at https://localhost:5400 The API will be available at http://api.localhost:8888 Project Structure stormkit-io/ ├── src/ │ ├── ce/ # Community Edition (AGPL-3.0) │ │ ├── api/ # REST API server │ │ ├── hosting/ # Hosting service │ │ ├── runner/ # Build and deployment runner │ │ └── workerserver/ # Background job processing │ ├── ee/ # Enterprise Edition (Commercial) │ │ ├── api/ # Enterprise API features │ │ ├── hosting/ # Enterprise hosting features │ │ └── workerserver/ # Enterprise background services │ ├── lib/ # Shared libraries and utilities │ ├── migrations/ # Database migrations │ ├── mocks/ # Test mocks and fixtures │ └── ui/ # Frontend React │ └── www/ # Landing page React ├── scripts/ # Build and deployment scripts Component Overview Community Edition (src/ce/): Open source components under AGPL-3.0 Enterprise Edition (src/ee/): Commercial features requiring a licence Shared Libraries (src/lib/): Common utilities used by both editions Frontend (src/ui/): React-based web interface Testing Tests require PostgreSQL with a test database named sktest and Redis to be running.
Setup
Start services
docker compose up -d db redis
Create test database
docker compose exec db createdb -U ${POSTGRES_USER} sktest Running Tests
Run backend and frontend tests
make test
Run only backend tests
make test-be
Run only frontend tests
make test-fe Generating mocks When adding or changing interfaces under src/lib (or other packages) we generate testify mocks using mockery so tests can inject fakes.
Recommended command (run from the repository root):
generate mocks for all interfaces in the repo that require the alibaba and imageopt build tags
mockery –case=underscore –dir ./ –tags=alibaba,imageopt –all –output=./src/mocks Notes:
You can run mockery via go run if you don’t want to install the binary globally: go run github.com/vektra/mockery/v2@latest –case=underscore –dir ./ –tags=alibaba,imageopt –all –output=./src/mocks If you need expecter helpers for testify, add –with-expecter to the command. Use –case=underscore to match repository naming conventions for generated files. After regenerating mocks, run gofmt/go vet and go test ./… and commit the updated files under src/mocks. Troubleshooting For detailed troubleshooting steps, see our dedicated troubleshooting guide.