Starter kit for building B2B applications using Stripe connect. It is based on SvelteKit + Go, and adopts a (kindof) cloud-native approach for deployments.
- Organization-Member-User authentication
- Organization invitation links & emails
- RBAC using scopes
- Sudo users
- Impersonation
- Google OAuth
- User & organization logos
- Settings pages
- Landing, pricing, and faq page templates
- Email notification API
- Organization onboarding
- Billing with free and paid plans
- Stripe connect support
- i18n support
- Basic CI checks
- Tests
- Backend
- Frontend
- Unit
- Component
- Typing
- Buildability
- Linting
- Formatting
- Tests
- Structured logging
- Railway deployment template
- Posthog integration
- Sentry integration
# terminal 1
make infra-start
make backend-dev
# terminal 2
make frontend-dev
Run make or make help to see all available commands.
make infra-start- Start the docker containers required for deploymentmake infra-stop- Stop the docker containers
make frontend-dev- Start the dev frontend server w/ auto-reloadmake frontend-build- Build the frontend for productionmake frontend-lint- Lint frontend codemake frontend-lint-fix- Lint and fix frontend codemake frontend-format- Format frontend codemake frontend-typecheck- Run TypeScript type checkingmake frontend-test- Run frontend testsmake frontend-test-watch- Run frontend tests in watch mode
make backend-dev- Start the dev backend server w/ auto-reloadmake backend-build- Build the backend for productionmake backend-format- Format backend codemake backend-tidy- Tidy the backend dependenciesmake backend-test- Run backend tests (requires Docker for testcontainers)make backend-test-verbose- Run backend tests with verbose outputmake backend-test-coverage- Run backend tests with coverage report
make stripe-listen- Start the Stripe webhook event listener
An echo project which uses Gorm, River, Postgres, and Minio. All endpoints follow the JSON API spec and use the go validator library to validate incoming requests. The backend is designed under the assumption of a Organization-Member-User authentication model, whereby there is a many-many relationship between Organizations and Users. You can remove the Organization* models to get a simpler authentication model with only users and no organizations.
A SvelteKit project which uses DaisyUI. Load functions and form actions are used to take advantage of sveltes SSR + CSR features. Mutations are made directly against the backend when it makes sense. Otherwise, form actions are preferred as this makes the site more accessible.
A reverse proxy used in local and cloud deployments. Used to ensure that the all API requests from the browser are made to the same origin so that cookies are preserved and no CORS preflight requests are needed. Caddy is used as the reverse proxy and is built as a standalone docker container.
The project is intended to be deployed to railway, however you can easily adapt the docker compose file to deploy the app using docker compose.