-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
151 additions
and
201 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,114 +1,41 @@ | ||
--- | ||
title: App Hosting Costs | ||
title: ServiceStack Blazor | ||
--- | ||
|
||
<a href="https://jamstack.org"> | ||
<svg xmlns="http://www.w3.org/2000/svg" width="1.2em" height="1.2em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256" class="w-14 h-14 float-left mt-2 mr-4"> | ||
<path d="M128 0C57.221 0 0 57.221 0 128c0 70.778 57.221 128 128 128c70.778 0 128-57.222 128-128V0H128z" fill="#F0047F"></path><path d="M121.04 134.96v93.312c-49.663-2.837-89.64-42.345-93.215-91.81l-.097-1.502h93.312zm90.962 0c-2.6 49.664-38.816 89.64-84.159 93.215l-1.377.097V134.96h85.536zm.112-91.074v85.648h-85.648V43.886h85.648z" fill="#FFF"></path> | ||
</svg> | ||
</a> | ||
|
||
The modern [jamstack.org](https://jamstack.org) approach for developing websites is primarily concerned with adopting | ||
the architecture yielding the best performance and superior UX by minimizing the time to first byte from serving | ||
pre-built static assets from CDN edge caches. | ||
|
||
## Cheaper Hosting | ||
## Blazor for .NET 8 | ||
|
||
<a href="https://jamstack.org"> | ||
<svg xmlns="http://www.w3.org/2000/svg" width="1.2em" height="1.2em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 64 64" class="w-14 h-14 float-left mt-2 mr-4"> | ||
<path d="M61 20.9C54.8 15.3 48.6 9.6 42.4 4C33.3 17.8 17.9 30.1 3.3 39c-.4 1.9-.8 3.7-1.3 5.5C8.4 50.3 14.8 56.2 21.2 62C36.3 53.7 52.3 41.9 62 28.5c-.3-2.5-.7-5-1-7.6" fill="#699635"></path> | ||
<path d="M22.4 54.6C16.1 48.8 9.8 43 3.5 37.3c15.7-8.9 28.9-21 38.6-35.3C48.4 7.8 54.7 13.5 61 19.3c-9.7 14.3-22.9 26.4-38.6 35.3" fill="#83bf4f"></path> | ||
<g fill="#699635"> | ||
<path d="M20.8 50.8c-4.2-3.8-8.4-7.7-12.6-11.5c.3-.2.5-.3.8-.5c.8-.5 1-1.4.3-2.1l-.6-.6C21.4 28.3 32.4 18.3 41 6.7l.6.6c.7.6 1.7.5 2.3-.2c.2-.2.3-.5.5-.7c4.2 3.8 8.4 7.7 12.6 11.5c-.2.2-.3.5-.5.7c-.6.8-.5 1.9.2 2.6l.6.6C48.7 33.3 37.7 43.3 25 51.1l-.6-.6c-.7-.6-1.9-.7-2.8-.2c-.3.2-.5.3-.8.5m-9.9-11.4c3.4 3.1 6.8 6.2 10.3 9.4c1.3-.4 2.8-.3 4 .3C36.8 41.7 46.9 32.5 55 21.8c-.7-1.1-.8-2.5-.3-3.7c-3.4-3.1-6.8-6.2-10.3-9.4c-.9.8-2.2.9-3.3.3C33 19.8 22.9 29 11.3 36.4c.6 1 .5 2.2-.4 3"></path> | ||
<path d="M20 37.3c1.1-.4 2.3-.3 3.1.4c-.5.4-1.1.8-1.6 1.2c-.2-.2-.7-.2-.9 0c-.3.2-.4.5-.1.7c.2.2.7.2 1 0c1.2-.8 2.9-.9 3.8 0c.7.7.8 1.7.1 2.5c.2.2.4.3.6.5c-.5.3-1 .7-1.5 1c-.2-.2-.4-.4-.6-.5c-1.1.3-2.3.2-3-.5c.6-.4 1.1-.7 1.7-1.1c.2.2.7.2 1 0c.3-.2.3-.5.1-.7c-.2-.2-.6-.2-.9 0c-.7.5-1.6.7-2.4.6c-.6-.1-1.1-.3-1.5-.6c-.7-.7-.7-1.6-.1-2.4c-.2-.1-.3-.3-.5-.5c.5-.3 1-.7 1.5-1c-.1.1.1.2.2.4"></path> | ||
<path d="M43.2 15.9c.9-.6 2-.6 2.7.1l-1.2 1.5c-.2-.2-.6-.2-.8.1c-.2.3-.2.7 0 .9s.6.2.8-.1c.9-1.1 2.4-1.3 3.3-.5c.7.7.9 1.8.5 2.8c.2.2.4.3.6.5c-.4.5-.7.9-1.1 1.4c-.2-.2-.4-.4-.6-.5c-.9.5-1.9.5-2.6-.2c.4-.5.9-1 1.3-1.5c.2.2.6.2.8-.1s.2-.7 0-.9c-.2-.2-.6-.2-.8.1c-.5.6-1.3 1-2 1c-.5 0-1-.2-1.4-.5c-.7-.7-.9-1.7-.5-2.7c-.2-.1-.3-.3-.5-.5c.4-.4.8-.9 1.1-1.4c0 .2.2.3.4.5"></path> | ||
<path d="M40.2 35.5c-3.2 2.9-8.6 2.8-11.7 0c-3.1-2.9-2.9-7.4.3-10.3c3.2-2.9 8.2-3.2 11.3-.3c3.2 2.8 3.3 7.7.1 10.6"></path> | ||
</g> | ||
<path d="M21.8 24.5l18.9 17.3c2.2-1.8 4.2-3.7 6.2-5.7L28.1 18.8c-2 1.9-4.1 3.8-6.3 5.7" fill="#ffdd7d"></path> | ||
<path d="M40.8 49.4c2.1-1.6 4.2-3.3 6.2-5V36c-2 2-4.1 3.9-6.2 5.7v7.7" fill="#dbb471"></path> | ||
<path d="M12.1 24.7c1.1-.4 2-1 2.9-1.7c.9-.7 1.7-1.4 2.6-2.2c.9-.7 1.8-1.5 2.8-2c1-.6 2.3-.9 3.4-.7c-1.1.2-2.1.7-3 1.4c-.9.6-1.7 1.4-2.6 2.1c-.9.7-1.8 1.5-2.8 2.1c-1 .6-2.2 1-3.3 1" fill="#8d9998" id="ssvg-id-money-with-wingsa"></path> | ||
<path d="M39.8 33.1s4.9 1.4 16.3-1.6s6 29.8-14.8 29.8c-2.3 0-2.4-2.9 4-8.1c0 0-9 2.1-5.1-4.6c0 0-6.4 1.1-3.5-4c0 0 1.3-3.8.1-8.1c.1 0 .8-2.2 3-3.4" fill="#e8e8e8"></path> | ||
<g fill="#d1d1d1"> | ||
<path d="M61.5 34.7c.2 8.8-6.8 23.4-20.7 23.4h-.2c-1.3 2.1-.7 3.3.7 3.3c15.8-.1 22.7-18.9 20.2-26.7"></path> | ||
<path d="M54.3 39.5c-3 10.8-15 11.7-15 11.7c-.5 2.3.5 3.3 1.8 3.3c4.4.1 12.6-7.2 13.2-15"></path> | ||
<path d="M45.9 39.5c-7.1 10-9.6 6.3-9.6 6.3c-1.8 4 2.9 4 3.7 3.1c2.3-2.5 6-7.7 5.9-9.4"></path> | ||
</g> | ||
<g fill="#8d9998"> | ||
<path d="M40.5 58.4c1.2-1.6 2.7-2.9 4.2-4.2c1.5-1.3 3-2.6 4.5-4c1.4-1.4 2.8-3 3.8-4.8c1-1.8 1.5-3.9 1.3-5.9c-.2 2-.9 3.9-2 5.5s-2.4 3.1-3.8 4.5s-2.9 2.7-4.3 4.2c-1.5 1.3-2.8 2.9-3.7 4.7"></path> | ||
<path d="M39.3 51.2c.4-1.1 1-2 1.7-2.9c.7-.9 1.4-1.7 2.2-2.6c.7-.9 1.5-1.8 2-2.8c.6-1 .9-2.3.7-3.4c-.2 1.1-.7 2.1-1.4 3c-.6.9-1.4 1.7-2.1 2.6c-.7.9-1.5 1.8-2.1 2.8c-.6 1-1 2.2-1 3.3"></path> | ||
</g> | ||
<path d="M30.2 24.2s-1.4-4.9 1.6-16.3S2 1.9 2 22.7c0 2.3 2.9 2.4 8.1-4c0 0-2.1 9 4.6 5.1c0 0-1.1 6.4 4 3.5c0 0 3.8-1.3 8.1-.1c0-.1 2.2-.8 3.4-3" fill="#e8e8e8"></path> | ||
<g fill="#d1d1d1"> | ||
<path d="M28.6 2.5C19.8 2.3 5.2 9.3 5.2 23.2v.2c-2.1 1.2-3.2.7-3.2-.7C2 6.9 20.8 0 28.6 2.5"></path> | ||
<path d="M23.8 9.7c-10.8 3-11.7 15-11.7 15c-2.3.5-3.3-.5-3.3-1.8c-.1-4.4 7.2-12.6 15-13.2"></path> | ||
<path d="M23.8 18.1c-10 7.1-6.3 9.6-6.3 9.6c-4 1.8-4-2.9-3.1-3.7c2.5-2.3 7.7-6 9.4-5.9"></path> | ||
</g> | ||
<path d="M4.9 23.5c1.6-1.2 2.9-2.7 4.2-4.2c1.3-1.5 2.6-3 4-4.5c1.4-1.4 3-2.8 4.8-3.8c1.8-1 3.9-1.5 5.9-1.3c-2 .2-3.9.9-5.5 2s-3.1 2.4-4.5 3.8s-2.7 2.9-4.2 4.3c-1.4 1.5-2.9 2.8-4.7 3.7" fill="#8d9998"></path> | ||
</svg> | ||
<a href="https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor"> | ||
<img src="/img/blazor.svg" class="w-14 h-14 float-left mt-2 mr-4" alt="Blazor for .NET 8" /> | ||
</a> | ||
|
||
A consequence of designing your UI decoupled from your back-end server is that it also becomes considerably | ||
cheaper to host as its static files can be hosted by any web server and is a task highly optimized by CDNs | ||
who are able to provide generous free & low cost hosting options. | ||
|
||
## [/MyApp.Client](https://github.com/NetCoreTemplates/blazor-tailwind/tree/main/MyApp.Client) | ||
|
||
This template takes advantage of its decoupled architecture and uses [GitHub Actions to deploy](/docs/deploy) | ||
a copy of its static UI generated assets and hosted on: | ||
|
||
### GitHub Pages CDN | ||
Blazor in .NET 8 continues to provide an innovative way to build interactive web UIs using C# instead of JavaScript. With Blazor, you can build reusable web components and enjoy a consistent development experience across client and server-side code. | ||
|
||
### [blazor-wasm.jamstacks.net](https://blazor-wasm.jamstacks.net) | ||
## ServiceStack.Blazor Library | ||
|
||
This is an optional deployment step which publishes a copy of your .NET App's `/wwwroot` folder to this templates | ||
[gh-pages](https://github.com/NetCoreTemplates/blazor-tailwind/tree/gh-pages) branch where it's automatically served from | ||
[GitHub Pages CDN](https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages) at **no cost**. | ||
|
||
It's an optional but recommended optimization as it allows the initial download from your website to be served | ||
directly from CDN edge caches. | ||
|
||
## [/MyApp](https://github.com/NetCoreTemplates/blazor-tailwind/tree/main/MyApp) | ||
<a href="https://docs.servicestack.net/blazor"> | ||
<img src="/img/blazor.svg" class="w-14 h-14 float-left mt-2 mr-4" alt="ServiceStack.Blazor Components" /> | ||
</a> | ||
|
||
The .NET 6 `/MyApp` backend server is required for this App's dynamic functions including the Hello API on the home page | ||
and its [built-in Authentication](https://docs.servicestack.net/auth). | ||
The ServiceStack.Blazor library brings the power of ServiceStack to Blazor applications. It enables seamless integration of ServiceStack services into your Blazor projects, ensuring a productive development experience and efficient runtime performance. | ||
|
||
The C# project still contains the complete App and can be hosted independently with the entire App served | ||
directly from its deployed ASP.NET Core server at: | ||
## AutoQueryGrid with AutoQuery Services | ||
|
||
### Digital Ocean | ||
<a href="https://docs.servicestack.net/templates/blazor-components#autoquerygrid"> | ||
<svg class="float-left mt-2 mr-4" fill="#000000" width="3.2em" height="3.2em" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"> | ||
<path d="M 10 6 C 11.544 7.76 12.275797 10.149375 12.216797 12.609375 C 16.184797 14.279375 22.141437 18.73 23.398438 25 L 28 25 C 26.051 14.31 14.918 6.77 10 6 z M 8 13 C 12.67 17.913 8.81 24.582 4 25 L 22.970703 25 C 21.500703 18.289 11.95 13.533 8 13 z"/> | ||
</svg> | ||
</a> | ||
|
||
### [blazor-wasm-api.jamstacks.net](https://blazor-wasm-api.jamstacks.net) | ||
Leverage AutoQueryGrid alongside AutoQuery services to rapidly build data-driven applications. This combination allows for automatic generation of CRUD operations, saving development time and ensuring consistency across your application. | ||
|
||
But when accessed from the CDN [blazor-wasm.jamstacks.net](https://blazor-wasm.jamstacks.net) that contains a | ||
copy of its static `/wwwroot` UI assets, only its back-end JSON APIs are used to power its dynamic features. | ||
|
||
## Total Cost | ||
## AutoForms for any Service | ||
|
||
<a href="https://www.digitalocean.com/pricing"> | ||
<svg xmlns="http://www.w3.org/2000/svg" width="1.2em" height="1.2em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 192" class="w-24 h-24 float-left mt-0 mr-8"> | ||
<g fill="#0080FF"> | ||
<path d="M127.806 103.432v24.705c41.874 0 74.478-40.453 60.78-84.332C182.6 24.63 167.363 9.393 148.188 3.407c-43.88-13.698-84.333 18.906-84.333 60.78h24.762c.003 0 .006-.006.006-.006c.004-26.28 26.01-46.596 53.639-36.57c10.236 3.714 18.4 11.877 22.117 22.112c10.027 27.612-10.26 53.609-36.516 53.646V78.744l-.004-.002h-24.686c-.002 0-.004.004-.004.004v24.686h24.637zm-24.642 18.974H84.197l-.004-.005v-18.969h18.976v18.97s-.002.004-.005.004zm-18.958-18.974h-15.9c-.007 0-.012-.004-.012-.004V87.535s.005-.012.012-.012h15.888c.007 0 .012.005.012.005v15.904z"></path> | ||
<path d="M22.096 153.198c-3.219-2.234-7.225-3.366-11.906-3.366H0v32.329h10.19c4.67 0 8.677-1.195 11.91-3.55c1.76-1.249 3.142-2.994 4.11-5.184c.962-2.18 1.45-4.75 1.45-7.64c0-2.857-.488-5.395-1.452-7.543c-.966-2.16-2.35-3.857-4.112-5.046zm-16.144 2.098H9.15c3.559 0 6.488.7 8.71 2.083c2.465 1.487 3.716 4.315 3.716 8.407c0 4.215-1.254 7.171-3.726 8.79h-.002c-2.127 1.406-5.039 2.12-8.654 2.12H5.952v-21.4zm25.881 26.865h5.73v-22.77h-5.73v22.77zm2.92-32.727c-.98 0-1.823.347-2.503 1.027c-.687.655-1.036 1.486-1.036 2.468c0 .98.347 1.823 1.032 2.507c.684.686 1.528 1.033 2.507 1.033c.979 0 1.822-.347 2.508-1.033c.686-.685 1.032-1.529 1.032-2.507c0-.981-.348-1.811-1.032-2.463a3.43 3.43 0 0 0-2.508-1.032zm23.618 11.86c-1.728-1.538-3.657-2.434-5.743-2.434c-3.163 0-5.792 1.094-7.813 3.25c-2.046 2.138-3.085 4.89-3.085 8.18c0 3.213 1.022 5.956 3.042 8.156c2.035 2.128 4.679 3.206 7.856 3.206c2.209 0 4.108-.615 5.655-1.83v.525c0 1.889-.506 3.359-1.503 4.368c-.997 1.008-2.379 1.519-4.107 1.519c-2.645 0-4.303-1.04-6.321-3.767l-3.902 3.749l.105.148c.843 1.182 2.134 2.34 3.838 3.44c1.704 1.095 3.846 1.652 6.368 1.652c3.402 0 6.153-1.049 8.18-3.116c2.037-2.079 3.07-4.862 3.07-8.27v-20.68h-5.64v1.903zm-1.503 13.447c-1.001 1.138-2.287 1.689-3.93 1.689c-1.643 0-2.922-.551-3.909-1.687c-.981-1.13-1.48-2.63-1.48-4.454c0-1.854.499-3.371 1.481-4.51c.973-1.126 2.288-1.698 3.908-1.698c1.641 0 2.928.556 3.93 1.701c.997 1.138 1.503 2.654 1.503 4.507c0 1.824-.506 3.323-1.503 4.452zm12.047 7.42h5.73v-22.77h-5.73v22.77zm2.92-32.727c-.979 0-1.823.347-2.503 1.027c-.687.655-1.036 1.486-1.036 2.468c0 .98.347 1.823 1.032 2.507c.684.686 1.528 1.033 2.508 1.033a3.43 3.43 0 0 0 2.508-1.033c.685-.685 1.032-1.529 1.032-2.507c0-.981-.35-1.811-1.032-2.463a3.433 3.433 0 0 0-2.508-1.032zm15.369 3.805h-5.64v6.152h-3.277v5.222h3.276v9.458c0 2.96.591 5.078 1.758 6.294c1.17 1.222 3.247 1.841 6.174 1.841c.931 0 1.868-.031 2.784-.09l.258-.018v-5.218l-1.964.103c-1.365 0-2.275-.24-2.708-.711c-.44-.48-.661-1.494-.661-3.013v-8.646h5.333v-5.222h-5.333v-6.152zm24.998 7.855c-1.737-1.482-4.137-2.234-7.134-2.234c-1.907 0-3.69.418-5.302 1.236c-1.492.757-2.957 2.01-3.888 3.65l.058.07l3.669 3.512c1.511-2.41 3.192-3.247 5.42-3.247c1.197 0 2.19.322 2.954.955c.76.629 1.13 1.429 1.13 2.442v1.106a14.494 14.494 0 0 0-4.217-.65c-2.852 0-5.172.67-6.895 1.993c-1.746 1.34-2.63 3.255-2.63 5.696c0 2.139.745 3.877 2.222 5.169c1.49 1.246 3.35 1.879 5.533 1.879c2.181 0 4.222-.88 6.075-2.385v1.875h5.641v-14.638c0-2.771-.887-4.934-2.636-6.429zm-10.173 12.366c.65-.453 1.568-.682 2.73-.682c1.379 0 2.841.277 4.35.824v2.234c-1.246 1.157-2.91 1.745-4.947 1.745c-.992 0-1.763-.22-2.293-.657c-.52-.426-.773-.969-.773-1.656c0-.781.305-1.373.933-1.808zm17.374 8.701h5.73v-32.33h-5.73v32.33zm26.52.487c-9.19 0-16.667-7.476-16.667-16.666c0-9.19 7.476-16.667 16.666-16.667c9.19 0 16.666 7.477 16.666 16.667c0 9.19-7.476 16.666-16.666 16.666zm0-27.46c-5.952 0-10.793 4.842-10.793 10.794c0 5.951 4.841 10.792 10.792 10.792s10.793-4.84 10.793-10.792s-4.842-10.793-10.793-10.793zm37.096 18.831c-1.025 1.149-2.073 2.145-2.881 2.662v.001c-.792.508-1.792.767-2.971.767c-1.689 0-3.046-.615-4.152-1.882c-1.1-1.26-1.657-2.878-1.657-4.814c0-1.934.55-3.55 1.636-4.801c1.091-1.26 2.441-1.87 4.128-1.87c1.846 0 3.792 1.147 5.459 3.119l3.787-3.632c-2.47-3.214-5.619-4.709-9.378-4.709c-3.146 0-5.873 1.146-8.105 3.405c-2.22 2.242-3.346 5.099-3.346 8.488c0 3.39 1.125 6.254 3.343 8.512c2.22 2.26 4.948 3.406 8.108 3.406c4.148 0 7.497-1.791 9.754-5.072l-3.725-3.58zm23.516-11.447c-.812-1.132-1.918-2.043-3.29-2.71c-1.366-.665-2.96-1.002-4.734-1.002c-3.198 0-5.816 1.18-7.78 3.51c-1.908 2.31-2.874 5.183-2.874 8.539c0 3.45 1.06 6.307 3.152 8.489c2.08 2.171 4.865 3.273 8.276 3.273c3.864 0 7.035-1.563 9.424-4.645l.129-.166l-3.738-3.592c-.346.418-.837.892-1.286 1.314c-.565.534-1.097.947-1.665 1.23c-.857.426-1.817.637-2.892.637c-1.587 0-2.902-.467-3.907-1.388c-.94-.862-1.49-2.024-1.636-3.459h15.18l.052-2.091c0-1.48-.202-2.906-.599-4.24a12.37 12.37 0 0 0-1.812-3.699zm-12.523 5.361c.276-1.09.778-1.996 1.497-2.7c.776-.765 1.787-1.152 3.003-1.152c1.39 0 2.465.395 3.196 1.177c.678.722 1.06 1.621 1.14 2.675h-8.836zm34.528-6.839c-1.737-1.482-4.138-2.234-7.134-2.234c-1.907 0-3.69.418-5.302 1.236c-1.493.757-2.958 2.01-3.888 3.65l.058.07l3.669 3.512c1.511-2.41 3.192-3.247 5.42-3.247c1.197 0 2.19.322 2.954.955c.76.629 1.13 1.429 1.13 2.442v1.106a14.5 14.5 0 0 0-4.218-.65c-2.85 0-5.172.67-6.895 1.993c-1.745 1.34-2.63 3.255-2.63 5.696c0 2.139.746 3.877 2.223 5.169c1.489 1.246 3.35 1.879 5.532 1.879s4.223-.88 6.075-2.385v1.875h5.642v-14.638c0-2.771-.887-4.934-2.636-6.429zm-10.173 12.366c.65-.453 1.567-.682 2.73-.682c1.379 0 2.841.277 4.35.824v2.234c-1.247 1.157-2.91 1.745-4.948 1.745c-.991 0-1.762-.22-2.292-.657c-.52-.426-.773-.969-.773-1.656c0-.781.305-1.373.933-1.808zm34.851-11.919c-1.596-1.778-3.838-2.681-6.667-2.681c-2.273 0-4.119.653-5.5 1.94v-1.41h-5.619v22.771h5.73v-12.558c0-1.725.41-3.095 1.22-4.073c.808-.974 1.918-1.449 3.395-1.449c1.298 0 2.281.424 3.007 1.295c.729.875 1.098 2.08 1.098 3.586v13.199h5.73v-13.199c0-3.154-.805-5.65-2.394-7.42z"></path> | ||
</g> | ||
<a href="https://docs.servicestack.net/templates/blazor-components#auto-forms"> | ||
<svg class="float-left mt-2 mr-4" fill="#000000" width="3.2em" height="3.2em" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"> | ||
<path d="M 10 6 C 11.544 7.76 12.275797 10.149375 12.216797 12.609375 C 16.184797 14.279375 22.141437 18.73 23.398438 25 L 28 25 C 26.051 14.31 14.918 6.77 10 6 z M 8 13 C 12.67 17.913 8.81 24.582 4 25 L 22.970703 25 C 21.500703 18.289 11.95 13.533 8 13 z"/> | ||
</svg> | ||
</a> | ||
|
||
Since hosting on GitHub Pages CDN is free, the only cost is for hosting this App's .NET Server which is being hosted | ||
from a basic [$10 /mo](https://www.digitalocean.com/pricing) droplet which is currently hosting **25** .NET Docker | ||
Apps and demos of [starting project templates](https://servicestack.net/start) which works out to be just under **$0.40 /mo**! | ||
|
||
## Jamstack Benefits | ||
|
||
Jamstack is quickly becoming the preferred architecture for the development of modern web apps with | ||
[benefits](https://jamstack.org/why-jamstack/) that extend beyond performance to improved: | ||
|
||
- **Security** from a reduced attack surface from hosting read-only static resources and requiring fewer App Servers | ||
- **Scale** with non-essential load removed from App Servers to CDN's architecture capable of incredible scale & load capacity | ||
- **Maintainability** resulting from reduced hosting complexity and the clean decoupling of UI and server logic | ||
- **Portability** with your static UI assets being easily capable from being deployed and generically hosted from any CDN or web server | ||
- **Developer Experience** with the major JavaScript frameworks at the forefront of amazing DX are embracing Jamstack in their dev model, libraries & tooling | ||
With AutoForms, streamline the process of creating forms for your services. AutoForms dynamically generates form UI based on your ServiceStack services, ensuring quick setup and a user-friendly experience. | ||
|
||
Best of all the Jamstack approach fits perfectly with ServiceStack's recommended | ||
[API First Development](https://docs.servicestack.net/api-first-development) model which encourages development of | ||
reusable message-based APIs where the same System APIs can be reused from all Web, Mobile & Desktop Apps | ||
from multiple HTTP, MQ or gRPC endpoints. |
Oops, something went wrong.