Comparing Metatype
Metatype foundations takes inspiration from many innovative tools that arose in the last years. We took the best of each of them and combined them into a single engine backed by a convenient computing model.
While this provides a unique and powerful platform, it can be difficult to understand how exactly Metatype compares to other tools. This page provides a high-level overview of these differences.
Development platforms
- Firebase
- Supabase
- Hasura
- PostGraphile
These are great platforms to quickly start a new project. However, they hardly scale in terms of architecture evolution, technology freedom, number of developers on the project, and you will eventually have to move out due to increasing costs or iterations slowness.
When to choose Metatype
- You want to build modular APIs by composing pre-defined blocks and import the ones you need from existing systems.
- You want to take advantage of developers tooling you are familiar with, like version controls or multiple environments.
- You favor interoperability and extensibility over vendor lock-in, and follow your future needs with ease.
- You want to decouple your database from your API and change where the data is stored as the project evolves.
Headless CMS
- Strapi
- Directus
Headless Content Management Systems (CMS) are great tools to manage content and providing great editing experience. However, they are not designed to build complex APIs like a cart checkout or integrate with other systems.
When to choose Metatype
- You want an all-in-one APIs development platforms and offer the same editing experience through a user-friendly interface
- You care about end-user performance and want to use the best underlying technology for each use cases
- You are more than one on the project and want to manage your data models using preferred programming language
Low Code Platforms
- Retool
- Airtable
- Windmill
Low Code platforms are a game changer when it comes to faster development cycle, great collaboration options and the gentle learning curve. However, this comes at the cost of losing degree of flexibility and cusomizability. They are also hard to apply different scalability and come with limited performance optimization.
When to choose Metatype
- When you want more control over your application instances running on the cloud.
- When you want to build more complex APIs.
- When you want to have the freedom to make detailed changes to your application to gain that extra performance.
Feature/Capability Key:
- ✅ 1st class, with no extra dependencies.
- ⚪ supported, but with extra 3rd party dependencies
- 🔶 supported, but with extra 3rd party dependencies and user code.
- 🔴 not officially supported or documented.
Metatype | Development Platforms | Headless CMS | Low code platform | |
---|---|---|---|---|
Licensing | Open Source | Open Source Proprietary | Open Source | Proprietary |
Platform's Requirements | - Cloud-based: None - Locally: Deno/Node.js/Python Runtime, Redis, Docker | - Cloud-based: None - Running Locally: Docker, DBMS | - NodeJS runtime - DBMS | Cloud-based: None |
Architecture Model | - Declarative - Less Code - Serverless | - API over Database - Serverless | - Headless Architecture - Serverless | - Visual drag and drop - Serverless |
REST/HTTP | ✅ | ✅ | ✅ | ✅ |
GraphQL | ✅ | ⚪ | ✅ | 🔶 |
gRPC | 🔶* | 🔶 | 🔶 | 🔶 |
GUI for non programmers | ✅ | ✅ | ✅ | ✅ |
Development SDKs | ✅ | ✅ | 🔴 | 🔴 (Most) ✅ (few) |
CLI | ✅ | ✅ (some) 🔴 (some) | ✅ | 🔴 |
Dev Tools | ✅ | ✅ | ✅ | 🔴 |
LSP and Extensions | ✅* | ⚪ | ⚪ | 🔴 |
Authentication | - Basic Auth - JWT - OAuth | - Basic Auth - JWT - OAuth - JWT | - email/phone/password - JWT - OAuth | - email/phone/password - JWT - OAuth - JWT |
Authorization | - policy-based access control (PBAC) | - policy-based access control (PBAC) - role-based access control (RBAC) | - role-based access control (RBAC) | - Custom Authorization logic from the User |
Type System | Custom Types | - JS objects - GraphQL Schemas - Database Types | JS objects | Custom Types |
Custom Code Support | ✅ | ✅ | ✅ | ✅ |
Version Control Friendly | ✅ | ✅ | ✅ | ✅ |
GitOPs Friendly | ✅ | ✅ | ⚪ | ⚪ |
Vertical Scalability | Flexibile | Limited | Flexibile | Limited |
Service Decomposition | ✅ | ✅ | ✅ | 🔴 |
Deployment Options | - On premise - Cloud-based platforms | - On premise - Cloud-based platforms | - On premise - Cloud-based platforms | - On premise - Cloud-based platforms |
Monitoring and Tracking | ✅* | ✅ | ✅ | 🔶 |
Logging | ✅* | ✅ | ✅ | 🔶 |
Table Parameters Legend
Solution's Meta
Licensing: The type of licensing model the software solution adopts, such as open-source, proprietary, freemium, etc.
Platform's Requirements: The prerequisites and dependencies required for the software to run efficiently, including hardware, operating system, runtime environment, etc.
Architecture Model: The underlying design principles and patterns governing the behavior/structure of the software solution.
Network comms
REST/HTTP: Support for Representational State Transfer (REST) or Hypertext Transfer Protocol (HTTP) communication protocol used for network communication.
GraphQL: Support for GraphQL.
gRPC: Support for gRPC.
Ecosystem
GUI for non programmers: Graphical User Interface (GUI) tools designed to facilitate interaction with the software by individuals with limited programming knowledge or expertise.
Development SDKs: Software Development Kits (SDKs) provided by the solution to aid developers in building applications using the platform.
CLI: Command-Line Interface tools provided for developers or administrators to interact with the software from the terminal or command prompt.
Dev Tools: Tools and utilities provided to aid developers in coding, debugging, testing, and profiling applications.
LSP and Extensions: Language Server Protocol (LSP) and Extensions support for enhanced development experience, including features like syntax highlighting, auto-completion, and error checking.
Security
Authentication: Mechanisms for verifying the identity of users or entities accessing the software solution.
Authorization: The process of determining whether an authenticated user or system entity is allowed to perform a specific action or access a particular resource.
Database Interaction
Type System: The system governing the data types and structures used by which the application entities and models are constructed.
System Flexibility
Custom Code support: The ability of the software solution to accommodate custom code or extensions developed by users or third-party developers.
Versioning and CI/CD
Version Control: The support for versioning and revision control of software artifacts, typically using systems like Git, SVN, etc.
GitOPs Friendly: Compatibility or support for the GitOps methodology, where infrastructure and application deployments are managed through Git workflows.
Scalability
Vertical Scalability: The ability of the software solution to handle increased workload or demand by adding more resources to a single node or instance.
Service Decomposition: The architectural principle of breaking down the software into smaller, independent services (microservices) to improve scalability, maintainability, and flexibility.
Deployment
Deployment Options: The available methods and strategies for deploying the software solution, including on-premises, cloud-based, containerized, etc.
Monitoring, Logging and maintenance
Monitoring and Tracking: Tools and mechanisms provided for monitoring the health, performance, and usage of the software solution, as well as tracking user activities and behaviors.
Logging: Facilities for recording and storing system events, errors, and other relevant information for troubleshooting, analysis, and auditing purposes.