Rules for correct code, an API for the backend, and a pipeline that ends in a live URL.
Cursor rules
The public vtc-app-rules pack โ scaffold, i18n, auth, and deploy conventions. Clone it and your AI editor generates platform-correct code.
RulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuthRulesScaffoldi18nAuth
ZAPI
One API for auth, collections, uploads, AI proxy, email, public reads, atomic ops, and schedules โ with an MCP server so AI editors can call it too.
ZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWTZAPICollectionsMCPJWT
Shared vs Dedicated
Shared apps scope data per Space โ each team's private area. Dedicated apps get your own publisher database. The rule pack tells you which to pick.
SharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDBSharedDedicatedgroup_idconnectDB
Static Vite lane
Client-side SPAs build with Vite and publish to the same your-name.apps.vtc.com hostname โ no server code to write at all.
ViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublishViteSPAStaticPublish
Next.js apps
Full-stack Next.js with server routes, deployed and hot-reloaded by the platform โ no Docker, no cluster, no build farm of your own.
Next.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploysNext.jsAPI routesHot reloadDeploys
Push to publish
Push your repo and the pipeline takes it live at your-name.apps.vtc.com โ hosting, TLS, and platform users included.
Git pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLSGit pushPublishapps.vtc.comTLS