ValStack

ValStack is what we call our custom stack of technologies that we use to build and run Valstorm. Starting with the frameworks, here is the breakdown

Lower Level Technologies

  1. Backend: We use FastAPI for building our backend services. FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.7+ based on standard Python type hints. It is designed to be easy to use and to help developers build robust and high-performance applications quickly.
  2. Database: We use MongoDB as our primary database. MongoDB is a NoSQL database that stores data in flexible, JSON-like documents, making it easy to work with and scale.
  3. Caching: For caching, we use Valkeyv, a high-performance key-value store that helps us improve the speed and efficiency of our applications by storing frequently accessed data in memory.
  4. Frontend: On the frontend, we use Next.js for building our web applications. Next.js is a React framework that enables server-side rendering and static site generation, making it easy to build fast and SEO-friendly web applications.
  5. State Management: For state management in our frontend applications, we use Jotai. Jotai is a primitive and flexible state management library for React that allows us to manage state in a simple and efficient way.
  6. Styling: For styling our frontend applications, we use Tailwind CSS. Tailwind CSS is a utility-first CSS framework that provides a set of pre-defined classes that we can use to style our components quickly and easily.
  7. Kubernetes: We use Kubernetes for container orchestration. Kubernetes allows us to automate the deployment, scaling, and management of our containerized applications, making it easier to manage our infrastructure.
  8. Docker: We use Docker for containerization. Docker allows us to package our applications and their dependencies into a single container, making it easy to deploy and run our applications in different environments.
  9. CI/CD: For continuous integration and continuous deployment (CI/CD), we use Github and Github Actions. This allows us to automate our build, test, and deployment processes, ensuring that we can deliver new features and updates quickly and reliably.

How the System Works Together

Valstorm operates on a few core principles that guide our architecture and development process:

  1. Multi-Tenancy: Valstorm is designed to support multiple tenants, allowing different users or organizations to have their own isolated environments within the same application. This is achieved through careful database design and access control mechanisms.
  2. Scalability: Valstorm is built to scale horizontally, allowing us to add more resources as needed to handle increased traffic and workload. This is achieved through the use of Kubernetes for container orchestration.
  3. Modularity: Valstorm is designed to be modular, allowing us to easily add or remove features and components as needed. This acheived through our Application packaging framework. Each application defines the schemas, automations, permissions, and other components it needs, and Valstorm takes care of the rest.
  4. Automation: Valstorm includes a powerful automation engine that allows users to create custom workflows and processes. These are built using our UI Automation builder or through code using our Python SDK. This allows users to automate repetitive tasks and streamline their operations.
  5. Extensibility: Valstorm is designed to be extensible, allowing users to build custom applications, data models and integrations. This is achieved through our SDKs, APIs, webhooks, UI components, and other tools that allow users to extend the functionality of the platform.
  6. Security: Valstorm includes robust security features to protect user data and ensure compliance with industry standards. This includes features such as role-based access control, data encryption, and audit logging.

Tieing the Infrastructure Together

At a high level, here is how the different components of ValStack work together:

  1. Main API: The main API of valstorm is specifically for Real Time actions. It handles requests from the frontend, mobile apps, and third-party integrations. Link to API Docs
  2. CICD API: The CICD API is responsible for handling the Application Packaging and Distribution system of Valstorm. This allows us to distribute apps to our clients and manage updates and versions.
  3. Background Workers: Valstorm uses background workers to handle long-running tasks, async processes, or operations that don't require immediate user feedback. This helps to keep the main API responsive and ensures that tasks are completed efficiently.
  4. Frontend: Valstorm's frontend is split up by different domains for their specific purpose. Our Next.js projects are split to meet technologies
    • Marketing: The main marketing site for Valstorm that helps anyone find the information they need Valstorm
    • Docs: The documentation site for Valstorm that helps developers and users find the information they need to use the platform Docs
    • App: The main web application for Valstorm that users interact with to manage their data and workflows App

Organizations (AKA Tenants)

Each organization in Valstorm has its own isolated environment, including its own database, configurations, and settings. This ensures that data is kept separate and secure between different users or organizations. When a new tenant is created, a new database instance is provisioned, and the necessary configurations are set up to ensure that the tenant can operate independently.

Organizations can also have their own custom applications, data models, and integrations. This allows users to tailor the platform to their specific needs and requirements.

In addition, organizations can pay for a plan that fully isolates them to their own domain and resources. This is ideal for larger organizations that require additional security and control over their environment. Once on their own network, one large organization can have multiple tenants within their own isolated environment allowing for a multi-department or multi-branch company structure that is ideal for larger enterprises.

Build with ValStack

If you are interested in building your own applications using ValStack, you will become the owner of a Valstorm instance. This gives you access to all the features and capabilities of the platform, allowing you to create custom applications, data models, and integrations. You can use our SDKs, APIs, webhooks, UI components, and other tools to extend the functionality of the platform and create applications that meet your specific needs.

In additional, you will have access to our Application Packaging framework, allowing you to package and distribute your applications to other users or organizations. This makes it easy to share your applications and collaborate with others.

This will allow you to leverage the power of ValStack and build applications that are scalable, secure, and easy to manage.

** Fees for owning a Valstorm Instance requires a custom quote. Please contact us for more information. **