Giter VIP home page Giter VIP logo

twentyhq / twenty Goto Github PK

View Code? Open in Web Editor NEW
13.0K 13.0K 1.2K 140.52 MB

Building a modern alternative to Salesforce, powered by the community.

Home Page: https://twenty.com

License: GNU Affero General Public License v3.0

HTML 0.04% CSS 0.15% JavaScript 1.69% TypeScript 95.77% Dockerfile 0.09% Makefile 0.03% Shell 0.25% MDX 1.99%
crm crm-system customer good-first-issue graphql javacript marketing monorepo nestjs open-source postgresql react reactjs sales typescript web

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 ijreilly avatar jeet1desai avatar kanav-arora avatar khakimov avatar lucasbordeau avatar magrinj avatar martmull avatar nimraahmed 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  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

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.

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

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

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

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

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
}
}
}
}```

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

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.