Skip to content

rubix-studios-pty-ltd/twenty-app

Repository files navigation

Twenty App

A cross-platform desktop client for Twenty and self-hosted Twenty instances. Built with Rust, Tauri, and Next.js.

Automatic updates are disabled by default to reduce background activity, external requests to GitHub, and unnecessary resource usage. Update checking and installation are user controlled through the system tray.

GitHub License GitHub Release GitHub Repo Size GitHub Last Commit GitHub Contributors

image

Features

  • Self-hosted: Connect to your own Twenty instance or use twenty.com
  • Cross-platform: Windows, Linux, and macOS (Intel & Apple Silicon)
  • System Tray: Runs quietly in the background with tray controls
  • Lightweight: Built with Rust and Tauri for minimal resource usage
  • Modern UI: Next.js, React, and Tailwind CSS

macOS

macOS may block unsigned applications on first launch. Open Terminal and run the following command once before opening the app:

xattr -cr "/Applications/Twenty App.app"

Prerequisites

  • Node.js 24.x or 25.x
  • pnpm 10.x or later
  • Rust 1.93.1 or later (for building)

From Releases

Download the latest release for your operating system from the releases page.

From Source

  1. Clone the repository:

    git clone https://github.com/rubix-studios-pty-ltd/twenty-app.git
    cd twenty-app
  2. Install dependencies:

    pnpm install
  3. Build the application:

    pnpm build

    The executable will be created in src-tauri/target/release/.

Development

Prerequisites

Install Rust toolchain:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

For macOS, also install additional targets:

rustup target add aarch64-apple-darwin x86_64-apple-darwin

Running Development

Start the development server:

pnpm dev

This will:

  • Start the Next.js dev server on http://localhost:5174
  • Launch the Tauri development window with hot-reload

Scripts

# Development
pnpm dev          # Start development server with Tauri
pnpm dev:ui       # Start Next.js dev server only (port 5174)

# Building
pnpm build        # Build the full Tauri application
pnpm build:ui     # Build Next.js frontend only

# Format and Lint
pnpm lint         # Run linter (Biome)
pnpm lint:fix     # Fix linting issues automatically
pnpm format       # Format code with Biome
pnpm typecheck    # Check TypeScript types

# Maintenance
pnpm update       # Update dependencies interactively

Structure

twenty-app/
├── app/                    # Next.js app directory
├── components/             # React components
├── lib/                    # Utility functions
├── src-tauri/              # Rust/Tauri backend
│   ├── src/
│   │   ├── main.rs         # Application entry point
│   │   ├── tray.rs         # System tray setup
│   │   ├── commands/       # Tauri IPC commands
│   │   └── ...
│   └── tauri.conf.json     # Tauri configuration
├── styles/                 # Global styles
├── types/                  # TypeScript types
├── utils/                  # Frontend utilities
└── scripts/                # Build/release scripts

Contributing

We welcome contributions! Please follow these guidelines:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run linting and type checking:
    pnpm lint:fix
    pnpm typecheck
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

Security

Please refer to SECURITY.md for security vulnerability reporting guidelines.

Changelog

See CHANGELOG.md for release notes and version history.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

For support or inquiries:

Author

Rubix Studios
https://rubixstudios.com.au

About

Cross-platform desktop client for Twenty CRM and self-hosted Twenty CRM instances, built with Rust, Tauri, and Next.js.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors