DEVELOPMENT PHILOSOPHY
At Vorte, our mission is to empower Finnish entrepreneurs with technically powerful, well-known, and accessible tools.
Technically powerful means software that simply works: reliably, securely, and purposefully. It ensures full privacy, operates offline, and remains seamlessly available through the browser with strong networking and collaboration capabilities.
Well-known means not reinventing the wheel but enhancing and integrating the tools users already find useful.
Accessible means affordable, cross-platform, and available in all relevant languages.
Clarity is central to our philosophy. User-generated data must be displayed in a way that enables meaningful understanding and intelligent decision-making.
Automation is another core principle: if a task can be handled correctly in the background, it should be — without interrupting the user. Yet transparency must remain absolute. Advanced users should be able to audit, trace, and understand every automated process.
Even as we minimize the need for user interaction, we never compromise on the interface itself. It must remain beautiful, responsive, emotionally resonant, and clear — a space that breathes and focuses attention on what truly matters.
IMPORTANT ABSOLUTES
-
The
alternativeScriptsdirectory- Contains source code for alternative browser main-thread scenarios, e.g. authentication or workflows not relevant to the basic usage of this software, which would otherwise add unnecessary weight.
-
The
appLoaderdirectory- A simple, indexed and search-engine-optimized static page generation directory.
- Provides a good user experience while the service worker is being installed.
- Enables users to access the otherwise offline application via search engine results.
- Displayed only once — subsequent requests are served offline-first by the service worker proxy.
-
The
assetsManagementdirectory- Holds pre-optimization static assets such as fonts and images.
- Optimization should be performed only once during development start (
npm run start) or when the directory is updated (npm run optimize), not on every build — only on deployments (npm run deploy).
-
The
cloudWorkerdirectory- Contains the source code for the worker script deployed to Cloudflare’s edge.
- Its purpose is to orchestrate database and storage access, including IAM operations.
- In other words, it functions as an API.
-
The
mainScriptsdirectory- Contains the source code for browser-side scripts handling rendering and event management.
-
The
networkHeadersdirectory- Enforces separation of concerns by building the
_headersfile intodist/static. - Used to declare cache, content-security, and other browser policies for static assets.
- Enforces separation of concerns by building the
-
The
serviceWorkerdirectory- Contains the source code for the offline application with a request/response structure similar to a server.
- Renders the initial view, manages user-generated content and credential caches, and maintains the zero-knowledge layer.
-
Build scripts are generally stored directly in the source directory of the specific runtime.
Plugin, optimization, and other utility scripts can be found in thescriptsdirectory. -
To start development, run
npm run start.
This installs dependencies, copies and optimizes assets from theassetsManagementdirectory to the distribution (dist) directory, and starts a development server with awatchon thesrcdirectory via Cloudflare’s Wrangler CLI. -
To continue later, run
npm run devornpx wrangler devto get a build watch onsrc.
If live watching isn’t needed, runnpm run buildwhen you want to bundle changes intodist. -
Additional aliases for scripts are available. Check
package.jsonfor details.
- The
shareddirectory holds JavaScript variables required across the codebase in a config-like manner to avoid searching for distributed variables that critically affect software behavior.
Join our Discord server to discuss how you can contribute:
https://discord.gg/5HXEHJKK
Check the docs dir for additional information on coding principles, requirements, and domain specific concepts.
