The software development landscape is evolving faster than ever. To stay ahead of the curve, you must arm yourself with tools and technologies built for the future.
I’ve curated a must-know list of open-source tools to help you build applications designed to stand the test of time.
We are witnessing unprecedented growth in the AI landscape. For me, it resembles the 1990s internet boom. Big companies like Google, OpenAI, Microsoft, etc., are betting billions on an AI future.
Composio is the only tool you need to build complex AI automation software. Composio allows AI models to access 3rd party tools and applications to automate interaction with them.
🎯 For instance, you can connect GitHub with the GPT model via Composio and automate reviewing PRs, resolving issues, writing test cases, etc.
It houses over 90 tools and integrations, such as GitHub, Jira, Slack, and Gmail, to automate complex real-world workflows.
Moreover, you can even integrate your applications, enabling AI to take actions like sending emails, simulating clicks, placing orders, and much more just by adding the OpenAPI spec of your apps to Composio.
Some of the critical highlights of Composio
Here is how you can start with Composio with npm
,
npm install composio-core
Define a method to let the user connect their GitHub account.
import { OpenAI } from "openai";
import { OpenAIToolSet } from "composio-core";
const toolset = new OpenAIToolSet({
apiKey: process.env.COMPOSIO_API_KEY,
});
async function setupUserConnectionIfNotExists(entityId) {
const entity = await toolset.client.getEntity(entityId);
const connection = await entity.getConnection('github');
if (!connection) {
// If this entity/user hasn't already connected, the account
const connection = await entity.initiateConnection(appName);
console.log("Log in via: ", connection.redirectUrl);
return connection.waitUntilActive(60);
}
return connection;
}
Add the required tools to the OpenAI SDK and pass the entity name on to the executeAgent
function.
async function executeAgent(entityName) {
const entity = await toolset.client.getEntity(entityName)
await setupUserConnectionIfNotExists(entity.id);
const tools = await toolset.get_actions({ actions: ["github_activity_star_repo_for_authenticated_user"] }, entity.id);
const instruction = "Star a repo ComposioHQ/composio on GitHub"
const client = new OpenAI({ apiKey: process.env.OPEN_AI_API_KEY })
const response = await client.chat.completions.create({
model: "gpt-4-turbo",
messages: [{
role: "user",
content: instruction,
}],
tools: tools,
tool_choice: "auto",
})
console.log(response.choices[0].message.tool_calls);
await toolset.handle_tool_call(response, entity.id);
}
executeGithubAgent("joey")
Execute the code and let the agent do the work for you.
For more information, visit the official docs, and for even more complex examples, see the repository's example sections.
{% cta https://dub.composio.dev/qlfiAZQ %}Star the Composio repository ⭐{% endcta %}
Building the product is one thing, but getting users and clients is a different ball game. Developers often forget they still must market their products and create communities to sustain the business.
Postiz helps you step up your social media game using AI.
It offers everything you need to manage social media posts, build an audience, capture leads, and grow your business.
Key Features
Check out the repository for more.
{% cta https://github.com/gitroomhq/postiz-app %}Star the Postiz repository ⭐{% endcta %}
Cloud services are great for building scalable applications. However, it can quickly become messy with complex infrastructure management, inconsistent APIs, and scattered DevOps processes.
Encore simplifies this chaos by providing a unified development platform integrating type-safe backend frameworks, automatic infrastructure provisioning, and DevOps automation.
Key features
It is available both in Golang and Typescript.
Get started with Encore by installing the CLI.
curl -L https://encore.dev/install.sh | bash
Create an app.
encore app create
This will configure your free account, allow you to choose your app's name, and select the Hello World
template.
This will create an example application with a simple REST API in a new folder using your chosen app name.
Open the file in your editor.
// Service hello implements a simple hello world REST API.
package hello
import (
"context"
)
// This simple REST API responds with a personalized greeting.
//
//encore:api public path=/hello/:name
func World(ctx context.Context, name string) (*Response, error) {
msg := "Hello, " + name + "!"
return &Response{Message: msg}, nil
}
type Response struct {
Message string
}
For more information, refer to their documentation.
{% cta https://github.com/encoredev/encore %}Star the Encore repository ⭐{% endcta %}
There is a growing trend in building applications for web assembly or WASM to offer a native experience on the web, especially for compute-heavy tasks like animation, games, editors, etc.
If you want to build similar applications, AssemblyScript can be a great choice.
It is a typescript-like language that compiles to WebAssembly using **Binaryen** instead of JS.
Its close association with JS/TS syntax makes it ideal for developers to build near-native web apps without learning low-level languages.
The key features of AssemblyScript include
It is easy to get started with the Assembly script.
npm install --save-dev assemblyscript
Once installed, the compiler provides a handy scaffolding utility to quickly set up a new project here in the current directory:
npx asinit .
The asinit
command automatically creates the recommended directory structure and configuration files:
The example in assembly/index.ts
can now be compiled to WebAssembly by invoking the build command:
npm run asbuild
Doing so will emit the compiled binaries, bindings and definition files to the build/
directory.
The generated test case in tests/index.js
can be executed with:
npm test
Once built, the directory contains all the bits to use the module like any other modern Node.js ESM module:
import * as myModule from "myModule";
The generated index.html
shows how the module can be used on the Web. A web server serving the module directory, defaulting to display index.html
, can be started with:
npm start
For more information on AssemblyScript, refer to their repository.
{% cta https://github.com/AssemblyScript/assemblyscript %}Star the AssemblyScript repository ⭐{% endcta %}
Gaming is a big market, and as per multiple surveys, the average gaming time has increased manifold in the past ten years. Godot can be a great start if you are considering game development.
It is a feature-packed, multi-platform game engine for building 2D and 3D games from a unified interface.
Games built with Godot can easily be exported to the Web, MacOS, Linux, Windows, Android, IOS, and consoles. With game engines, you can also build compute-intensive apps like photo editors, animation, etc.
Key Features
For more, refer to their official documentation.
{% cta https://github.com/godotengine/godot %}Explore the Godot repository ⭐{% endcta %}
A faster runtime JS can significantly improve the development experience. Bun can be the ideal choice for a quicker JS runtime.
The bun runtime, a JS runtime, is designed as a drop-in replacement for Node JS. It is written in Zig and powered by JavaScriptCore under the hood, dramatically reducing startup times and memory usage.
Bun is designed as a faster, leaner, more modern replacement for Node.js.
Key features
Install Bun on Linux, Mac, and WSL.
curl -fsSL https://bun.sh/install | bash
Run bun init
to scaffold a new project.
bun init
Open index.ts
and paste the following code snippet, which implements a simple HTTP server with Bun.serve
.
const server = Bun.serve({
port: 3000,
fetch(req) {
return new Response("Bun!");
},
});
console.log(`Listening on http://localhost:${server.port} ...`);
Seeing TypeScript errors on Bun
?
Run the file from your shell.
`bun index.ts`
`Listening on http://localhost:3000 ...`
Visit http://localhost:3000 to test the server. You should see a simple page that says "Bun!".
For more information on Bun, refer to their documentation.
{% cta https://github.com/oven-sh/bun %}Explore the Bun repository ⭐{% endcta %}
If you were looking for a cloud-based development environment for your team, your search ends here. Gitpod is an open-source development environment that automates the setup of coding environments.
Gitpod provides automated and standardized development environments that run self-hosted in your cloud or local machine.
key features
For more information on Gitpod, refer to their official documentation.
{% cta https://github.com/gitpod-io/gitpod %}Star the Gitpod repository ⭐{% endcta %}
You must have heard about Cursor IDE, the popular AI-powered IDE; Continue is similar to it but open source under Apache license.
It is highly customizable and lets you add any language model for auto-completion or chat. This can immensely improve your productivity. You can add Continue to VScode and JetBrains.
Key features
For more, check the documentation.
{% cta https://github.com/continuedev/continue %}Star the Continue repository ⭐{% endcta %}
Building mono repo software can be challenging as the software grows. If not managed properly, it can become a nightmare.
Turborepo solves your mono repo's scaling problem. It is a high-performance build tool designed for JS/TS apps to speed up workflows in single-package workspaces.
Key features
Get started quickly.
npx create-turbo@latest
The starter repository will have:
npm install turbo --global
Once installed globally, you can run your scripts through turbo
from your terminal,
For more, refer to the documentation page.
{% cta https://github.com/vercel/turborepo %}Star the Turborepo repository ⭐{% endcta %}
Tauri is a lightweight, fast, and secure framework for building cross-platform applications using web technologies like HTML, CSS, and JavaScript. The application's backend is a rust-sourced binary with an API that the front end can interact with.
Key features
Check out the documentation for more on Tauri.
{% cta https://github.com/tauri-apps/tauri %}Explore the Tauri repository ⭐{% endcta %}
REST API is not enough for building fast, distributed, low-latency microservices. You will need something speedy and robust, and gRPC is perfect.
It is an open-source tool from Google that is built for efficient communication between services across different platforms and languages. It uses HTTP/2 and Protocol Buffers (protobufs) for serialization.
Key features
Check out the documentation for more.
{% cta https://github.com/grpc/grpc %}Explore the gRPC repository ⭐{% endcta %}
There are no better alternatives to D3 when creating visualizations in JavaScript. D3 is a free, open-source JavaScript library for visualizing data. Its low-level approach built on web standards offers unparalleled flexibility in authoring dynamic, data-driven graphics.
Popular visualization frameworks like Plotly use D3 to draw interactive plots and charts.
D3 works in any JavaScript environment.
Quickly get started by installing D3.
npm install d3
Here’s an example of a line chart in React.
import * as d3 from "d3";
export default function LinePlot({
data,
width = 640,
height = 400,
marginTop = 20,
marginRight = 20,
marginBottom = 20,
marginLeft = 20
}) {
const x = d3.scaleLinear([0, data.length - 1], [marginLeft, width - marginRight]);
const y = d3.scaleLinear(d3.extent(data), [height - marginBottom, marginTop]);
const line = d3.line((d, i) => x(i), y);
return (
<svg width={width} height={height}>
<path fill="none" stroke="currentColor" strokeWidth="1.5" d={line(data)} />
<g fill="white" stroke="currentColor" strokeWidth="1.5">
{data.map((d, i) => (<circle key={i} cx={x(i)} cy={y(d)} r="2.5" />))}
</g>
</svg>
);
}
Check out all the examples of plots and graphs built using D3.
{% cta https://github.com/d3/d3 %}Explore the D3 repository ⭐{% endcta %}
Zod is a Typescript=first schema declaration and validation library. It allows you to define schemas for data structures and validate them with TypeScript type inference, ensuring that your data conforms to specific shapes and rules.
Typescript is only type-safe at compile time; Zod validates the data at runtime, ensuring that invalid data doesn’t slip through.
Key features
.optional()
) return a new instanceGet started by installing Zod.
npm install zod
Creating a simple string schema
import { z } from "zod";
// creating a schema for strings
const mySchema = z.string();
// parsing
mySchema.parse("tuna"); // => "tuna"
mySchema.parse(12); // => throws ZodError
// "safe" parsing (doesn't throw error if validation fails)
mySchema.safeParse("tuna"); // => { success: true; data: "tuna" }
mySchema.safeParse(12); // => { success: false; error: ZodError }
Creating an object schema
import { z } from "zod";
const User = z.object({
username: z.string(),
});
User.parse({ username: "Ludwig" });
// extract the inferred type
type User = z.infer<typeof User>;
// { username: string }
For more, refer to their documentation.
{% cta https://github.com/colinhacks/zod %}Explore the Zod repository ⭐{% endcta %}
Biome is a fast and efficient web development tool focusing on code quality. It offers linting, formatting, and compiling features in a single tool.
It is designed to provide better performance, lower resource usage, and an improved developer experience compared to ESLlint and Prettier.
Key Features
Get started with Biome by installing it using any package manager.
npm install --save-dev --save-exact @biomejs/biome
Configure Biome,
npx @biomejs/biome init
After running the init
command, you’ll have a new biome.json
file in your directory:
biome.json
{
"$schema": "https://biomejs.dev/schemas/1.9.3/schema.json",
"vcs": {
"enabled": false,
"clientKind": "git",
"useIgnoreFile": false
},
"files": { "ignoreUnknown": false, "ignore": [] },
"formatter": { "enabled": true, "indentStyle": "tab" },
"organizeImports": { "enabled": true },
"linter": {
"enabled": true,
"rules": { "recommended": true }
},
"javascript": { "formatter": { "quoteStyle": "double" } }
}
The linter.enabled: true
enables the linter, and rules.recommended: true
enables the recommended regulations. These correspond to the default settings.
Check out the documentation for more.
{% cta https://github.com/biomejs/biome %}Explore the Biome repository ⭐{% endcta %}
Thanks for reading!