Gadget is a comprehensive, serverless, full-stack app development platform designed to accelerate and simplify the entire development process.
How does Gadget help developers build faster?
It provides developers with an all-in-one serverless environment that eliminates the repetitive boilerplate code for setting up and managing a database, authentication, APIs, integrations, frontends and running JavaScript code without the hassle of managing servers and infrastructure. Gadget enables developers to focus on writing custom code and creating unique applications, instead of spending weeks on an app you can build out an MVP in the span of a day.
Where does Gadget sit in my development stack?
The application you build is already deployed in Gadget's serverless function platform powered by Google Cloud Platform. Data is stored securely and scalably in a hosted PostgresSQL database, you are provided with a built-in React frontend powered by Vite, access controls are already in place, and Gadget is responsible for keeping your app up.
Gadget has two pieces: an editor where you construct your application, and a cloud platform that runs that application in development and production. The editor has tools for building models that store data and define APIs, for writing code to customize business logic and power HTTP routes, and built-in tools for viewing data and logs. You can use Gadget's editor to write code, or code locally using ggt - the Gadget CLI.
Key features
Gadget provides everything you need to build, host, and grow your applications in one place:
Hosted database
Gadget provides a fully-managed PostgresSQL database featuring specialized data type and custom validation rules. It handles creation, maintenance, and scaling of your database, including essential tasks such as backups and automatic indexing.
Auto-Generated API
Gadget generates and documents a public GraphQL API for each of your applications. Your frontend, whether hosted on Gadget or elsewhere on the internet, communicates with the Gadget backend over this API
The API supports reading and writing groups of related records, includes permission controls, and allows for custom, problem-specific endpoints.
Implemented using an advanced database query compiler, it alleviates concerns about N+1 query issues or join performance.
Gadget provides a JavaScript and React client for seamless API interaction, enabling easy installation with a single npm command.
The API client is fully typed for TypeScript users, ensuring accurate data traversal.
Environment for backend JavaScript code
Gadget enables server-side JavaScript (Node.js) execution for every application, allowing implementation of business logic such as audit logging, API integrations, and image processing. The platform runs your JavaScript on a scalable, serverless Node.js platform, enabling access to NPM packages and reducing time spent on scaling or infrastructure concerns. Server-side code is typically associated with actions tied to specific Models, Global Actions, or HTTP routes.
Gadget applications come with a React scaffold app powered by Vite, enabling rapid frontend development without any setup. Gadget supports fast-starts and hot module reloading across all apps, and with Vite's plugin ecosystem simplifies the integration of custom components, CSS transforms, and plugins.
If Gadget's built-in React hosting isn't preferred, developers can utilize the same React hooks library to create a frontend on an alternative host, communicating with their backend via the Gadget-generated API for their project.
Deployment-free infrastructure
Gadget apps are always live, and hosted. Upon project creation, you're given a development and production URL, where we host the corresponding environment's functionality. With no complex deployment steps required, Gadget apps can be pushed from development to production with the click of a button.
Third-party connections
Gadget offers high-quality, purpose-built API integrations called Connections for seamless interaction with third-party platforms.
For instance, our Shopify Connection enables a comprehensive, bi-directional data sync between a Shopify store and your Gadget app, managing webhook processing and background syncing. Shopify resources function like any other Model in your Gadget app, allowing for extension with custom fields, API queries, and Gelly computations. Gadget also provides a ready-to-develop React frontend powered by Shopify Polaris and Shopify's App Bridge and an out of the box ability to handle OAuth implementation.
Secondary features
File Storage: Gadget apps come with built-in file storage and user-friendly APIs for uploading and managing files, such as profile images, product images, PDF invoices, or uploaded CSVs. Utilizing the same permissions system as other data, Gadget ensures users can access only the files they are authorized to see, simplifying the process of granting user-specific access.
Authentication System: Gadget apps feature a built-in authentication system that supports both user-based and API key-based authentication. By utilizing existing components such as Models and Actions, the system is fully customizable to suit your requirements. Gadget apps can offer open signups, sync user lists from other systems, or forgo user-based auth altogether. Data access can range from world-readable to accessible only after signing in, depending on your preferences. Supported third-party connections in Gadget completely handle authentication implementation for apps.
Secure Environment: Gadget ensures your application's security by default. It provides access control to protect specific data, while managing secure servers, operating systems, load balancers, CDNs, and databases to safeguard your app from potential threats. By handling component updates, Gadget allows you to focus on building your application while maintaining a high level of security.
High-Performance Expression Language: Gadget empowers developers with its Gelly language allowing for data summarization and aggregation. Unlike many platforms, Gadget enables computation across relationships in addition to data storage. Whether you need to count, sum, or perform other types of calculations, Gadget provides a declarative and efficient server-side solution (currently enabled only for filtering Model permissions).
Operator Tooling: The Gadget editor offers tools for monitoring your application's performance in both development and production environments. Each application features a dedicated log viewer for searching through both your logs and the platform's logs. Additionally, every database table within an app has a dedicated, operator-facing data viewer for swift record data inspection.