I have been in software for the last 6-7 years, but things are changing faster than ever before. AI is fundamentally changing the way we write software.
You are no longer limited to the tech and frameworks you have been doing. Chatgpt has made it much easier to use any technology you want to build complex, performant, and future-proof apps.
I compiled a list of open-source repositories you can implement in your app to build future-proof apps.
1. Composio: AI integration and tooling platform
AI is everywhere, and any modern app will need AI automation in some form in the future. Composio is the best alternative for adding AI workflows to your applications.
It provides integrations for over 100 third-party services, such as GitHub, Slack, Discord, Salesforce, and more. You can connect with AI models like GPT-4 and Gemini to automate tedious and repetitive work.
For instance,
- You can build comprehensive agents to interact with users on Slack and Discord. Respond to queries, guide them through the support process, or schedule follow-up actions.
- You can build Coding agents to automate bug fixing in GitHub from Jira tickets.
- Build personal assistants to handle meetings and events.
Composio is very easy to get started with.
pip install composio-core
Add a GitHub integration.
composio add github
Composio handles user authentication and authorization on your behalf.
Here is how you can use the GitHub integration to star a repository.
from openai import OpenAI
from composio_openai import ComposioToolSet, App
openai_client = OpenAI(api_key="******OPENAIKEY******")
# Initialise the Composio Tool Set
composio_toolset = ComposioToolSet(api_key="**\\\\*\\\\***COMPOSIO_API_KEY**\\\\*\\\\***")
## Step 4
# Get GitHub tools that are pre-configured
actions = composio_toolset.get_actions(actions=[Action.GITHUB_ACTIVITY_STAR_REPO_FOR_AUTHENTICATED_USER])
## Step 5
my_task = "Star a repo ComposioHQ/composio on GitHub"
# Create a chat completion request to decide on the action
response = openai_client.chat.completions.create(
model="gpt-4-turbo",
tools=actions, # Passing actions we fetched earlier.
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": my_task}
]
)
Run this Python script to execute the given instruction using the agent.
Composio works with famous frameworks like LangChain, LlamaIndex, CrewAi, etc.
For more information, visit the official docs, and for even more complex examples, see the repository's example sections.
Star the Composio repository ⭐
2. Encore: Event-driven and distributed systems make easy
If you are a start-up looking for a back-end framework for building robust distributed applications, your search ends here.
Developing cloud applications can often become messy, with developers struggling to manage and coordinate resources efficiently.
Encore streamlines this process, making building scalable, event-driven systems easier without the usual complexity.
Encore simplifies this mess by providing a unified development platform integrating type-safe backend frameworks, automatic infrastructure provisioning, and DevOps automation.
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 a new folder with an example application and a simple REST API 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.
3. AssemblyScript - Typescript-like language for WebAssembly
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.
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.
Star the AssemblyScript repository ⭐
4. Godot: Multi-platform 2D and 3D game engine
Gaming is an industry worth hundreds of billions of dollars and is only expected to grow. Multiple surveys show that the gaming time of young individuals has grown drastically in the last ten years.
Godot can be a great start if you want to develop games. It is written in C, and not only games. Using Godot, you can even build Animation, AR/VR, and simulation software.
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.
For more, refer to their official documentation.
5. Gitpod - On-demand cloud development platform
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.
For more information on Gitpod, refer to their official documentation.
6. Turborepo - Optimized mono repo management system for JS/TS
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
- Incremental Builds: Only rebuilds changed parts of the codebase to save time.
- Monorepo Management: Optimized for managing multiple projects within a single repository.
- Caching: Leverages local and remote caching to avoid redundant builds.
- Parallel Execution: Runs tasks like tests and builds concurrently for faster results.
Get started quickly.
npx create-turbo@latest
The starter repository will have the following:
- Two deployable applications
- Three shared libraries for use in the rest of the monorepo
npm install turbo --global
Once installed globally, you can run your scripts through turbo
from your terminal,
For more, refer to the documentation page.
Star the Turborepo repository ⭐
7. Tauri - Build blazingly fast apps for desktops
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
- Build apps for multiple platforms: Windows, MacOS, and Linux.
- It uses the system's WebView, avoiding bundling a browser.
- The core is built with Rust for privacy and speed.
- Supports JS/TS frameworks like Svelte, react, Vue, etc.
Check out the documentation for more on Tauri.
Explore the Tauri repository ⭐
8. gRPC - An RPC library and framework
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 built for efficient communication between services across different platforms and languages. It uses HTTP/2 and Protocol Buffers (protobufs) for serialization.
Key features
- gRPC uses HTTP/2, which allows multiplexing multiple requests over a single connection, reducing latency and improving performance.
- gRPC supports various programming languages.
- gRPC supports streaming in both directions, enabling real-time data exchange between client and server.
Check out the documentation for more.
9. Mem0: Memory layer for AI apps
A significant challenge in building AI apps is handling memory. This involves efficient storage and intelligent retrieval of past interactions, which can significantly enhance user experience.
Mem0 makes it easier for developers to add a memory layer to AI apps. It remembers user preferences, adapts to individual needs, and continuously improves, making it ideal for customer support chatbots, AI assistants, and autonomous systems.
Start using Mem0 by installing via pip
.
pip install mem0ai
Initialize Mem0
from mem0 import Memory
m = Memory()
Memory operations.
# 1. Add: Store a memory from any unstructured text
result = m.add("I am working on improving my tennis skills. Suggest some online courses.", user_id="alice", metadata={"category": "hobbies"})
# Created memory --> 'Improving her tennis skills.' and 'Looking for online suggestions.'
# 2. Update: update the memory
result = m.update(memory_id=<memory_id_1>, data="Likes to play tennis on weekends")
# Updated memory --> 'Likes to play tennis on weekends.' and 'Looking for online suggestions.'
# 3. Search: search related memories
related_memories = m.search(query="What are Alice's hobbies?", user_id="alice")
# Retrieved memory --> 'Likes to play tennis on weekends'
# 4. Get all memories
all_memories = m.get_all()
memory_id = all_memories["memories"][0] ["id"] # get a memory_id
# All memory items --> 'Likes to play tennis on weekends.' and 'Looking for online suggestions.'
# 5. Get memory history for a particular memory_id
history = m.history(memory_id=<memory_id_1>)
# Logs corresponding to memory_id_1 --> {'prev_value': 'Working on improving tennis skills and interested in online courses for tennis.', 'new_value': 'Likes to play tennis on weekends' }
For more information on Mem0 functionalities, refer to their official documentation.
Refer to the official documentation for more.
Thank you for reading.