Giter Club home page Giter Club logo

twenty's Introduction


Twenty logo

The #1 Open-Source CRM

Tailored to your unique business needs

🌐 Website · 📚 Documentation · Discord · Figma


Companies view


We’ve spent thousands of hours grappling with traditional CRMs like Pipedrive and Salesforce to align them with our business needs, only to end up frustrated — customizations are complex and the closed ecosystems of these platforms can feel restrictive.

We felt the need for a CRM platform that empowers rather than constrains. We believe the next great CRM will come from the open source community. And we’ve packed Twenty with powerful features to give you full control and help you run your business efficiently.


Demo

Go to demo.twenty.com and login with the following credentials:

email: [email protected]
password: Applecar2025

See also:
🚀 Self-hosting
🖥️ Local Setup

Why Choose Twenty?

We understand that the CRM landscape is vast. So why should you choose us?

⛓️ Full control, Full Freedom: Contribute, self-host, fork. Break free from vendor lock-in and join us in shaping the open future of CRM.

📊 Data, Your Way: The days when the role of CRM platforms was to shift manual data entries to a database are over. Now, the data is already there. CRM 2.0 should be built around your data, allowing you to access and visualize any existing sources, not forcing you to retrofit your data into predefined objects on a remote cloud.

🎨 Effortlessly Intuitive: We set out to create something that we ourselves would always enjoy using. The main application draws inspiration from Notion, a tool known for its user-friendly interface and customization capabilities.


What You Can Do With Twenty

We're currently in the development phase of Twenty's alpha version.

Please feel free to flag any specific need you have need by creating an issue.

Below are some features we have implemented to date:

Add, filter, sort, edit and track customers:

Companies view

Create one or several opportunities for each company:

Companies view

Track deals effortlessly with the email integration:

Companies view

Tailor your data model to meet business needs:

Companies view

See rich notes displayed in a timeline:

Companies view

Create tasks on records

Companies view

Navigate quickly through the app using keyboard shortcuts and search:

Companies view

Connect your CRM to all your tools through our APIs and Webhooks.

Companies view


What's In Store

Here’s what you can look forward to:

Frequent updates: We’re shipping fast! Expect regular updates and new features that enhance your experience.

🔗 Extensibility: We’re putting the power in your hands. Soon, you’ll have the tools to extend and customize Twenty with plugins and more.


Join the Community

twenty's People

Contributors

abhithory avatar adityapimpalkar avatar ady-beraud avatar anoopw3bdev avatar ayushagrawal-a2 avatar bonapara avatar bosiraphael avatar brendanlaschke avatar charlesbochet avatar cyborch avatar emilienchvt avatar felixmalfait avatar freebios avatar gitstart-app[bot] avatar gitstart-twenty avatar i-am-chitti avatar jeet1desai avatar kanav-arora avatar khakimov avatar lucasbordeau avatar magrinj avatar martmull avatar nimraahmed avatar rostaklein avatar samox avatar thaisguigon avatar thomtrp avatar tomalexing avatar weiko avatar zvolcsey avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

twenty's Issues

When I sign up through Google, I see my Google profile picture on Twenty

We are already retrieving email, first name, last name from google.
We could also retrieve profile picture.

The profile picture will come as an URL, if we store it directly in our DB this won't work because we are currently storing relative path to our own storage in backend
I see two alternatives:

  • enable to store absolute path in back-end, in this case, we need to introduce a picture table with type 'absolute' | 'relative' and link it to workspace / user. We then need to update frontend accordingly or have the server always send the absolute URL
  • fetch the Image URL and re-upload the image in our own backend.

To keep it simple, I would go for the second option :
https://stackoverflow.com/questions/18264346/how-to-load-an-image-from-url-into-buffer-in-nodejs

I see a hamburger to toggle menu on mobile

How it should look on mobile:

  1. Left menu is hidden by default
  2. Instead, show hamburger in top navbar to toggle left menu visibility. Center the top navbar title (aligned on the left currently / when in desktop mode)
  3. Make sure the margins still look good when menu is hidden

From SyncLinear.com | T-233

Local setup failed because of concurrency and metadata issue

Concurrency issue between Postgres and Hasura
Setup failed for me because Postgres started right before Hasura, therefore Hasura failed to connect to the DB.
The solution was to restart the Hasura container once Postgres had been fully loaded.

Metadata issue
Second issue was that metadata were not in sync with migrations. The column deleted_at was missing, either from the model or from the db, I'm not sure.

AAU, when we click on the comment bubble, it does open all the associated comment threads

Current behavior :

  • Go on company page
  • Click on a comment bubble
  • Add a company which has no associated comments in the relations on the comment thread
  • A comment bubble should appear next to the company's name
  • Click on it
  • The comment drawer opens up and there is only one comment thread
  • Refresh the app
  • Click on the comment bubble again
  • The drawer opens this time with all the comment threads

Expected behavior :

  • The comment drawer should open with the multiple comment threads associated to the entity after it is associated to a comment thread by editing via the relation picker

It should be fixable by adding the right request in the refetch query array of some request in the page related to comment threads.

[Timebox] Sorts and Filters are refactored

New scope for this ticket:

  • move sort and filters components into @/ui/sort and @/ui/filter
  • these components should expose a simple API that direclty uses DropdownMenu, MenuItems, SingleSelect components + hooks to use them. Remove the current "configurable api"

Put all the FilterDropdownState information in a recoil state or context
read this state from FilterDropdown components to display the right dropdown content
make this "generic"
use DropdownMenu hook to pilot the dropdown itself
use existing filterDefinition recoil state to communicate with view system

Improve multi relation picker with optimistic rendering

Currently each time we select / deselect an entity from the multi relation picker, it shows up empty during the network roundtrip, then shows the incoming data.

Here are 3 ways of doing it :

  • Use optimistic rendering
  • Use manual Apollo cache update
  • Maybe we can make it work by playing with typePolicies of Apollo's MemoryCache

Parameterize order by in CommentThreadRelationsResolver


query GetCommentThreads($commentThreadTargetIds: [String!]!) {
findManyCommentThreads(where: {
commentThreadTargets: {
some: {
commentableId: {
in: $commentThreadTargetIds
}
}
}

}
orderBy: {
comments: {_count}
}
){
id
comments {
id
body
createdAt
updatedAt
author {
id
displayName
avatarUrl
}
}
}
}```

Entity Chips should have an ellipsis if their name is overflowing their max-width

Since entity chips can have different max width, whether they are used in a table cell or a entity picker, they should handle themselves the text that is overflowing the max width.

We should also find a way to fix their max width :

  • Have separate components wrapping a generic EntityChip component
  • Giving width or max-width in a props

Implement RecoilScope

Implement scoping of recoil atomFamily by using a generic react context.

The idea is to create a RecoilScope component that will be used to wrap a hierarchy of components.

Each component or hook called inside a RecoilScope component can then use something like :

useRecoilState(myAtomFamily(useContext(RecoilScopeContext)))

Which can be factorized to :

useRecoilState(myAtomFamily(useRecoilScope()))

See atomFamily documentation here : https://recoiljs.org/docs/api-reference/utils/atomFamily/#example

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.