Top Related Projects
Visual Studio Code
:atom: The hackable text editor
IntelliJ IDEA & IntelliJ Platform
An open source code editor for the web, written in JavaScript, HTML and CSS.
Quick Overview
CapSoftware/Cap is an open-source .NET message bus library designed for building distributed applications. It provides a simple and efficient way to implement event-driven architectures, supporting various transport methods including RabbitMQ, Kafka, and Azure Service Bus.
Pros
- Easy integration with popular message brokers and databases
- Supports both publish/subscribe and request/response patterns
- Offers built-in support for distributed transactions
- Provides a clean and intuitive API for developers
Cons
- Limited documentation for advanced scenarios
- Requires additional setup for certain transport methods
- May have a steeper learning curve for developers new to message-based architectures
- Performance might be impacted in high-throughput scenarios compared to native implementations
Code Examples
Publishing an event:
public class OrderCreatedEvent
{
public Guid OrderId { get; set; }
public decimal TotalAmount { get; set; }
}
await _capBus.PublishAsync("order.created", new OrderCreatedEvent
{
OrderId = Guid.NewGuid(),
TotalAmount = 100.00m
});
Subscribing to an event:
[CapSubscribe("order.created")]
public void HandleOrderCreated(OrderCreatedEvent @event)
{
Console.WriteLine($"Order {event.OrderId} created with total amount: {event.TotalAmount}");
}
Using distributed transactions:
using (var transaction = _capBus.UseTransaction())
{
// Perform database operations
_dbContext.Orders.Add(new Order { /* ... */ });
await _dbContext.SaveChangesAsync();
// Publish event
await _capBus.PublishAsync("order.created", new OrderCreatedEvent { /* ... */ });
// Commit transaction
transaction.Commit();
}
Getting Started
-
Install the NuGet package:
dotnet add package DotNetCore.CAP -
Configure CAP in your
Startup.cs:public void ConfigureServices(IServiceCollection services) { services.AddCap(x => { x.UseInMemoryStorage(); x.UseRabbitMQ("localhost"); }); } -
Inject
ICapPublisherinto your services and start publishing/subscribing to events.
Competitor Comparisons
Visual Studio Code
Pros of VS Code
- Extensive ecosystem with a vast library of extensions and themes
- Robust IntelliSense and debugging capabilities across multiple languages
- Regular updates and active community support
Cons of VS Code
- Larger resource footprint, potentially slower on older hardware
- Steeper learning curve for advanced features and customization
- Some users may find the interface overwhelming with numerous options
Code Comparison
VS Code (settings.json):
{
"editor.fontSize": 14,
"editor.tabSize": 2,
"editor.wordWrap": "on",
"files.autoSave": "afterDelay"
}
Cap (config.yaml):
editor:
font_size: 14
tab_size: 2
word_wrap: true
auto_save: true
VS Code offers more granular control over settings, while Cap uses a simpler YAML configuration. VS Code's JSON format allows for more complex nested structures, whereas Cap's YAML approach prioritizes readability and ease of use.
Both editors support basic customization options like font size, tab size, and word wrap. However, VS Code's extensive settings provide more fine-tuned control over the editor's behavior, which can be both an advantage for power users and a potential source of complexity for beginners.
:atom: The hackable text editor
Pros of Atom
- Larger and more active community with frequent updates and contributions
- Extensive plugin ecosystem with thousands of packages available
- Cross-platform support for Windows, macOS, and Linux
Cons of Atom
- Heavier resource usage, potentially slower performance on older hardware
- Steeper learning curve for customization and advanced features
- Development has been discontinued by GitHub
Code Comparison
Atom (JavaScript):
atom.commands.add('atom-workspace', {
'custom:hello-world': () => {
console.log('Hello, World!');
}
});
Cap (Python):
@cap.command()
def hello_world():
print("Hello, World!")
The code snippets demonstrate the difference in command creation between Atom and Cap. Atom uses JavaScript and a more complex syntax, while Cap employs Python with a simpler decorator-based approach.
Cap appears to be a lightweight alternative to Atom, potentially offering better performance and a simpler architecture. However, it likely lacks the extensive features and community support that Atom has built over the years. Cap may be more suitable for users seeking a minimalist, Python-based development environment, while Atom caters to those who prefer a feature-rich, customizable editor with a large ecosystem of plugins and themes.
IntelliJ IDEA & IntelliJ Platform
Pros of intellij-community
- Larger and more active community with frequent updates and contributions
- Comprehensive IDE functionality with support for multiple languages
- Extensive plugin ecosystem and customization options
Cons of intellij-community
- More complex codebase, potentially harder for newcomers to contribute
- Heavier resource usage due to its comprehensive feature set
- Longer build and setup times for development
Code Comparison
intellij-community:
public class PsiElementVisitor {
public void visitElement(PsiElement element) {
visitChildren(element);
}
public void visitFile(PsiFile file) {
visitElement(file);
}
}
Cap:
class Element:
def __init__(self, name, attributes=None):
self.name = name
self.attributes = attributes or {}
self.children = []
def add_child(self, child):
self.children.append(child)
The intellij-community example showcases a visitor pattern for traversing PSI (Program Structure Interface) elements, which is central to IntelliJ's code analysis capabilities. In contrast, the Cap example demonstrates a simpler element structure, potentially for XML or HTML parsing, reflecting its more focused scope compared to the comprehensive IDE functionality of intellij-community.
An open source code editor for the web, written in JavaScript, HTML and CSS.
Pros of Brackets
- Larger and more active community with over 33,000 GitHub stars
- Extensive plugin ecosystem for customization and additional features
- Cross-platform support for Windows, macOS, and Linux
Cons of Brackets
- No longer actively maintained by Adobe (last commit in 2021)
- Heavier resource usage compared to lightweight editors
- Steeper learning curve for beginners
Code Comparison
Brackets (JavaScript):
define(function (require, exports, module) {
"use strict";
var CommandManager = require("command/CommandManager");
var Commands = require("command/Commands");
var Menus = require("command/Menus");
});
Cap (Python):
from cap.core import Plugin
class MyPlugin(Plugin):
def __init__(self):
super().__init__()
self.name = "My Plugin"
self.version = "1.0.0"
Note: The code comparison is limited due to the different nature and languages of the two projects. Brackets is a full-featured code editor, while Cap appears to be a plugin system, making a direct code comparison challenging.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Cap
Beautiful, shareable screen recordings. Open source, fast, and built for teams that want to own their data.
Website | Download | Docs | Pricing | Discord
Cap is the open source alternative to Loom. It gives you fast screen recording, polished local editing, instant share links, comments, transcripts, analytics, team workspaces, custom domains, custom S3 storage, and full self-hosting when you need complete control.
Use Cap for product demos, bug reports, onboarding, tutorials, design reviews, engineering walkthroughs, async standups, client updates, and any moment where showing the work is faster than scheduling another call.
Why Cap
- Record, edit, share. Capture your screen, camera, and microphone, then share a link or export a finished video.
- Instant Mode for speed. Upload while recording and get a shareable link the moment you stop.
- Studio Mode for polish. Record locally, edit with backgrounds, zooms, trimming, captions, and export controls.
- Desktop apps for your team. Cap runs on macOS and Windows, with a web dashboard for viewing, sharing, and managing recordings.
- Own your storage. Use Cap Cloud, connect your own S3-compatible bucket, keep recordings local, or self-host the full platform.
- Privacy by default. Share publicly or privately, add passwords, use your own domain, or keep sensitive recordings off hosted infrastructure.
- Async collaboration. Comments, reactions, transcripts, viewer analytics, and team workspaces keep feedback attached to the video.
- Cap AI. Generate titles, summaries, clickable chapters, captions, and transcripts automatically.
- Move from Loom. Import existing Loom videos into Cap and keep your library in one place.
Recording Modes
| Mode | Best for | How it works |
|---|---|---|
| Instant Mode | Fast feedback, bug reports, async updates | Cap uploads while you record, then gives you a share link as soon as recording stops. |
| Studio Mode | Product demos, tutorials, launches, client work | Cap records locally, opens the editor, and lets you export or share a polished video. |
Data Ownership
Cap is designed for people and teams who do not want their recording workflow locked inside a black box.
- Use Cap Cloud for the fastest hosted experience.
- Connect AWS S3, Cloudflare R2, Backblaze B2, MinIO, Wasabi, or another S3-compatible provider.
- Serve share pages from your own domain.
- Self-host Cap Web, the API, database, media server, and object storage with Docker Compose.
- Point Cap Desktop at your self-hosted instance from
Settings > Cap Server URL.
Get Started
For most users, the fastest path is:
- Download Cap for macOS or Windows from cap.so/download.
- Sign in or create an account.
- Choose Instant Mode or Studio Mode.
- Record your first Cap.
- Share the link, export the file, or keep it local.
The full product docs live at cap.so/docs.
Self-Hosting
The fastest way to self-host Cap Web is Docker Compose:
git clone https://github.com/CapSoftware/Cap.git
cd Cap
docker compose up -d
Cap will be available at http://localhost:3000.
Login links appear in the service logs when email is not configured:
docker compose logs cap-web
Deployment Options
| Method | Best for |
|---|---|
| Docker Compose | VPS, home servers, and any Docker-capable host |
| Railway | One-click managed hosting |
| Coolify | Self-hosted PaaS deployments with docker-compose.coolify.yml |
For production, configure public URLs and replace the default secrets before exposing the deployment to the internet:
CAP_URL=https://cap.yourdomain.com
S3_PUBLIC_URL=https://s3.yourdomain.com
See the self-hosting guide for email setup, AI providers, SSL, storage, production hardening, and troubleshooting.
Local Development
Cap is a Turborepo monorepo with Rust, TypeScript, Tauri, SolidStart, Next.js, Drizzle, MySQL, Tailwind CSS, and shared media crates.
Requirements:
- Node.js 20 or newer
- pnpm 10.5.2
- Rust 1.88 or newer
- Docker for MySQL, MinIO, and local services
Install and set up the repo:
pnpm install
pnpm env-setup
pnpm cap-setup
Common commands:
| Command | Purpose |
|---|---|
pnpm dev | Start the full local development stack |
pnpm dev:web | Start the web app without the desktop app |
pnpm dev:desktop | Start the desktop app |
pnpm build | Build the workspace |
pnpm tauri:build | Build the desktop release |
pnpm lint | Run Biome linting |
pnpm format | Format with Biome |
pnpm typecheck | Run TypeScript project references |
cargo test -p <crate> | Run Rust tests for a crate |
Database commands:
| Command | Purpose |
|---|---|
pnpm db:generate | Generate database artifacts |
pnpm db:push | Push schema changes |
pnpm db:studio | Open Drizzle Studio |
Repository Map
| Path | What lives there |
|---|---|
apps/desktop | Tauri v2 desktop app with SolidStart UI and Rust backend |
apps/web | Next.js web app for marketing, docs, dashboard, sharing, API routes, and auth |
apps/cli | Rust CLI |
apps/media-server | Media processing service used by the web app |
apps/discord-bot | Discord integration |
packages/database | Drizzle schema and database access |
packages/ui | Shared React UI |
packages/ui-solid | Shared Solid UI |
packages/web-backend | Backend service layer |
packages/web-domain | Web domain models and types |
packages/env | Environment validation |
packages/sdk-embed | Embed SDK |
packages/sdk-recorder | Recorder SDK |
crates/* | Recording, capture, camera, audio, encoding, rendering, muxing, export, and test crates |
scripts/* | Setup, analytics, build, and maintenance tooling |
infra/* | Infrastructure configuration |
The web API uses Effect and @effect/platform HTTP APIs. Desktop capture and export paths are backed by Rust crates for fast recording, rendering, and platform-specific media access.
Analytics
Cap uses Tinybird for viewer telemetry dashboards. Set TINYBIRD_ADMIN_TOKEN or TINYBIRD_TOKEN before running analytics commands.
| Command | Purpose |
|---|---|
pnpm analytics:setup | Deploy Tinybird datasources and pipes from scripts/analytics/tinybird |
pnpm analytics:check | Validate that the Tinybird workspace matches the app expectations |
analytics:setup can remove Tinybird resources outside the checked-in analytics configuration. Use it only against the workspace you intend to manage from this repo.
Contributing
Cap is built in public. Issues, pull requests, design feedback, bug reports, docs fixes, and bounties are welcome.
- Read CONTRIBUTING.md before opening a pull request.
- Join the community on Discord.
- Check open bounties on Algora.
License
Portions of this software are licensed as follows:
- Code in the
cap-camera*andscap-*crate families is licensed under the MIT License. See licenses/LICENSE-MIT. - Third-party components are licensed under the original license provided by their owner.
- All other content not mentioned above is available under the AGPLv3 license as defined in LICENSE.
Top Related Projects
Visual Studio Code
:atom: The hackable text editor
IntelliJ IDEA & IntelliJ Platform
An open source code editor for the web, written in JavaScript, HTML and CSS.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot