Full-stack .NET 10 + SvelteKit foundation for building real products.
OAuth with 8 providers. TOTP two-factor auth. Admin-configurable everything. 1000+ tests. API-first - use the included frontend or bring your own.
Every project starts the same way: authentication, role management, rate limiting, validation, API documentation, Docker setup... You spend weeks on infrastructure before writing a single line of business logic.
NETrock skips all of that. It ships a production-grade .NET 10 API with a SvelteKit frontend that goes far beyond boilerplate. Users can log in with Google, GitHub, Discord, Apple, Microsoft, Facebook, LinkedIn, or X - configured by admins from the UI, no redeploy needed. Two-factor authentication with TOTP and recovery codes is built in. The permission system enforces role hierarchy. The admin panel manages users, roles, background jobs, and OAuth providers with AES-256-GCM encrypted credentials. Full audit trail, PII compliance, and rate limiting are part of the foundation.
For developers, every convention is documented, the architecture is tested at the layer boundary, and Claude Code skills automate common workflows. For end users, the product they interact with has dark mode, i18n, a command palette, responsive design, and security features they expect from a real application.
Fork it, init it, own it. After initialization, there is no dependency on "the template." It's your code, your architecture, your product. Every decision is documented so you can understand it, change it, or throw it away.
Backend - JWT auth with token rotation and reuse detection, TOTP two-factor authentication with recovery codes, OAuth/OIDC external login with 8 providers (admin-configurable from the UI), permission-based authorization with role hierarchy, transactional email with Fluid templates, rate limiting, HybridCache, PostgreSQL with soft delete and audit trails, S3-compatible file storage, Hangfire background jobs, OpenAPI docs, health checks, Result pattern with ProblemDetails. See full details ->
Frontend - Svelte 5 runes, type-safe API client from OpenAPI, Tailwind CSS 4 with shadcn-svelte component library, Cmd+K command palette with permission-gated navigation, BFF proxy with CSRF protection, i18n (English + Czech, add more with a single JSON file), dark mode, responsive design with 44px touch targets, admin panel with user/role/job/OAuth provider management. See full details ->
Infrastructure - Aspire AppHost for local development (one command for the full stack with OTEL dashboard and MailPit for email testing), production-ready Dockerfiles, init script for project bootstrapping, GitHub Actions CI with smart path filtering, Claude Code skills for development workflows. See full details ->
Security - HttpOnly JWT cookies, refresh token rotation with reuse detection, TOTP 2FA with challenge tokens and recovery codes, OAuth state tokens with TOCTOU protection, AES-256-GCM encrypted provider credentials, PII compliance with server-side masking, security stamp propagation, CSP with nonces, rate limiting, input validation everywhere. See full details ->
Want to see it first? Check out the live demo.
corepack enable for pnpm)git clone https://github.com/fpindej/netrock.git my-saas
cd my-saas
macOS / Linux:
chmod +x init.sh
./init.sh
Windows (PowerShell):
.\init.ps1
The init script will ask for your project name and base port, then rename everything and optionally create the initial migration.
dotnet run --project src/backend/MyProject.AppHost
That's it. Aspire starts all infrastructure (PostgreSQL, MinIO) as containers and launches the API and frontend dev server. The Aspire Dashboard URL appears in the console - all service URLs (API docs, pgAdmin, MinIO) are linked from the Dashboard.
| Service | URL |
|---|---|
| Aspire Dashboard | Shown in console output |
| Frontend | http://localhost:<BASE_PORT> (default: http://localhost:13000) |
| MailPit (Email Testing) | http://localhost:<BASE_PORT + 8> |
A Superuser is seeded with credentials you provide during init.sh / init.ps1 (defaults: [email protected] / Superuser123!). Configured in appsettings.Development.json.
Add your domain entities, services, and pages - the architecture guides you.
NETrock ships with 20+ native Claude Code skills that automate common development workflows. Type / in Claude Code to see all available skills.
| Skill | What it does |
|---|---|
/new-feature |
Scaffold a full-stack feature - entity, service, controller, frontend page |
/new-endpoint |
Add an API endpoint to an existing feature |
/new-entity |
Create a domain entity with EF Core configuration |
/new-page |
Create a frontend page with routing, i18n, and navigation |
/gen-types |
Regenerate frontend TypeScript types from the OpenAPI spec |
/create-pr |
Create a PR with session docs, reviews, and labels |
/review-pr |
Review a PR for production-readiness |
/review-design |
Review frontend components for UI/UX standards |
/create-issue |
Create a GitHub issue with labels |
/create-release |
Create a GitHub release with auto-generated notes |
Skills are also loaded automatically when Claude Code plans work - it reads the relevant skill and follows the procedure without you having to invoke it. The project also includes CLAUDE.md and FILEMAP.md as structured context files, plus 12 specialized agents (.claude/agents/) and lifecycle hooks (.claude/hooks/) for auto-formatting, safety gates, and quality checks. No separate onboarding needed.
| File | Purpose |
|---|---|
CLAUDE.md |
Hard rules, verification, agent team guide, architecture overview |
.claude/agents/ |
Specialized agents - engineers, reviewers, designers, devops, tech writer |
.claude/skills/ |
Procedures, convention references, and design tokens (use / to list) |
.claude/hooks/ |
Lifecycle hooks - auto-format, safety gates, quality checks |
FILEMAP.md |
Change impact tables - "when you change X, also update Y" |
Deep dives: Features · Security · Architecture · Development · Before You Ship · Troubleshooting
i18n with Paraglide JS - type-safe keys, SSR-compatible, auto-detection via Accept-Language. Ships with English and Czech. Adding a language is a single JSON file.
NETrock is opinionated by design. It's not:
Contributions are welcome! See CONTRIBUTING.md for guidelines.
NETrock is free and open source under the MIT License. If it saves you time, consider supporting its development:
Star the repo on GitHub · Join the Discord · Need custom development, consulting, or training? Get in touch
This project is licensed under the MIT License.