Commit Graph
85 Commits
Author SHA1 Message Date
Jérémy MandCharles Bochet b86ada6d2b feat: rename tenant into workspace (#2553)
* feat: rename tenant into workspace

* fix: missing some files and reset not working

* fix: wrong import

* Use link in company seeds

* Use link in company seeds

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2023-11-17 11:26:33 +01:00
Jérémy M e9827486c0 feat: add default value capability (#2544)
* feat: add default value capability

* feat: update seeds with default value
2023-11-16 18:25:11 +01:00
Jérémy MandCharles Bochet e026b2b6e9 feat: expose foreign key (#2505)
* fix: typo

* feat: expose foreign key

* fix: foreign key exposition

* fix: be able to filter by foreign key

* feat: add `isSystem` on field metadata

* feat: update all seeds

* fix: seed issues

* fix: sync metadata generated files

* fix: squash metadata migrations

* Fix conflicts

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2023-11-16 12:30:40 +01:00
Jérémy M c02717c1e3 fix: schema builder use same type definitions storage across tenant (#2525) 2023-11-15 17:23:30 +01:00
Jérémy M 65af954671 fix: relations issues (#2497)
* fix: relations issues

one-to-one relation not working
alias should not be used on the foreignKey side

* fix: naming
2023-11-14 12:07:17 +01:00
Jérémy M 6a700ad1a5 feat: schema-builder and resolver-builder can handle relations (#2398)
* feat: wip add relation

* feat: add relation for custom and standards objects

* fix: use enum instead of magic string

* fix: remove dead code & fix tests

* fix: typo

* fix: BooleanFilter is missing

* fix: Malformed result error
2023-11-10 12:32:02 +01:00
Jérémy M 3432615a17 fix: small tenant refactor fixes (#2375) 2023-11-06 15:49:06 +01:00
Jérémy MandCharles Bochet 1ed4965a95 feat: refactor schema builder and resolver builder (#2215)
* feat: wip refactor schema builder

* feat: wip store types and first queries generation

* feat: refactor schema-builder and resolver-builder

* fix: clean & small type fix

* fix: avoid breaking change

* fix: remove util from pg-graphql classes

* fix: required default fields

* Refactor frontend accordingly

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2023-11-03 17:16:37 +01:00
Jérémy M 80a6223d7d feat: custom objects delete one (#2278)
* feat: custom objects delete one

* fix: delete one issue
2023-10-30 12:05:03 +01:00
Jérémy M 3e83cb6846 feat: conditional filtering & aggregation support & data ordering support (#2107)
* feat: wip

* feat: add filter on findOne

* fix: tests & small bug

* feat: add test and support aggregation

* feat: add order by support

* fix: fix comments

* fix: tests
2023-10-19 15:24:36 +02:00
Jérémy M c4fa36402b feat: add default filter types (#2087)
* feat: add default filter types

* fix: fields doesn't need to be a function
2023-10-17 17:57:02 +02:00
Jérémy M 4a96ae225e feat: easier makefile commands (#2077)
* feat: easier makefile commands

* fix: cleaner command
2023-10-17 10:38:10 +02:00
Jérémy M 4e993316a6 feat: conditional schema based on column map instead of column field (#1978)
* feat: wip conditional schema based on column map instead of column field

* feat: conditionalSchema columnMap and singular plural

* fix: remove uuid fix

* feat: add name and label (singular/plural) drop old tableColumnName
2023-10-12 18:28:27 +02:00
Jérémy MandCharles Bochet 017a0b1563 feat: refactor custom object (#1887)
* chore: drop old universal entity

* feat: wip refactor graphql generation custom object

* feat: refactor custom object resolvers

fix: tests

fix: import

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2023-10-10 10:50:54 +02:00
Jérémy M 047bb8014b feat: add custom object create and update (#1869) 2023-10-05 14:33:13 +02:00
Jérémy M 7e8e3ac1de fix: typeorm migration datasource directory change (#1848) 2023-10-03 17:44:58 +02:00
Jérémy M d3b39cad97 feat: add env security in dynamic resolvers (#1812)
* feat: add env security in dynamic resolvers

* fix: tests
2023-10-02 17:17:42 +02:00
629bdbbf50 feat: dynamic graphQL schema generation based on user workspace (#1725)
* wip: refacto and start creating custom resolver

* feat: findMany & findUnique of a custom entity

* feat: wip pagination

* feat: initial metadata migration

* feat: universal findAll with pagination

* fix: clean small stuff in pagination

* fix: test

* fix: miss file

* feat: rename custom into universal

* feat: create metadata schema in default database

* Multi-tenant db schemas POC

fix tests and use query builders

remove synchronize

restore updatedAt

remove unnecessary import

use queryRunner

fix camelcase

add migrations for standard objects

Multi-tenant db schemas POC

fix tests and use query builders

remove synchronize

restore updatedAt

remove unnecessary import

use queryRunner

fix camelcase

add migrations for standard objects

poc: conditional schema at runtime

wip: try to create resolver in Nest.JS context

fix

* feat: wip add pg_graphql

* feat: setup pg_graphql during database init

* wip: dynamic resolver

* poc: dynamic resolver and query using pg_graphql

* feat: pg_graphql use ARG in Dockerfile

* feat: clean findMany & findOne dynamic resolver

* feat: get correct schema based on access token

* fix: remove old file

* fix: tests

* fix: better comment

* fix: e2e test not working, error format change due to yoga

* remove typeorm entity generation + fix jwt + fix search_path + remove anon

* fix conflict

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
Co-authored-by: corentin <corentin@twenty.com>
2023-09-28 16:27:34 +02:00
Jérémy M a4cde44b13 feat: add cooldown to refresh token security (#1736) 2023-09-27 15:03:50 +02:00
fc820f47b2 Feat/disable flexible backend (#1673)
* wip: refacto and start creating custom resolver

* feat: findMany & findUnique of a custom entity

* feat: wip pagination

* feat: initial metadata migration

* feat: universal findAll with pagination

* fix: clean small stuff in pagination

* fix: test

* fix: miss file

* feat: rename custom into universal

* feat: enable/disable flexible backend from env

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
Co-authored-by: Charles Bochet <charlesBochet@users.noreply.github.com>
2023-09-20 17:25:45 -07:00
Jérémy MandCharles Bochet b1171e22a3 feat: add findAll and findUnique resolver for universal objects (#1576)
* wip: refacto and start creating custom resolver

* feat: findMany & findUnique of a custom entity

* feat: wip pagination

* feat: initial metadata migration

* feat: universal findAll with pagination

* fix: clean small stuff in pagination

* fix: test

* fix: miss file

* feat: rename custom into universal

* feat: create metadata schema in default database

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2023-09-20 17:24:13 -07:00
Jérémy M 08b56ec7e2 fix: can't set ARR of company to empty (#1474) 2023-09-06 11:22:42 +02:00
Jérémy M cbcb49cd1e fix: allow null value for number and date (#1472) 2023-09-06 11:03:12 +02:00
Jérémy M c05d24d249 fix: table view dropdown should have a minimum width (#1467) 2023-09-06 10:37:02 +02:00
Jérémy M 85c8139c05 fix: double text chip show null value (#1460) 2023-09-05 17:55:29 +02:00
Jérémy M aad4f99f52 fix: view dropdown incorrect button position and floating icon button doesn't match design (#1458)
* fix: view dropdown incorrect button position

* fix: className instead of style drill down

* fix: view drop down width
2023-09-05 17:45:05 +02:00
Jérémy M 21e3f6ecb2 fix: drop down menu should be of 160px size (#1459)
* fix: drop down menu should be of 160px size

* fix: typing

* fix: remove debug
2023-09-05 17:38:07 +02:00
Jérémy M 0ec4b78aee feat: add recoil debug observer (#1446)
* feat: add recoil debug observer

* fix: convention
2023-09-05 10:00:19 +02:00
Jérémy M 732b5a5ddf fix: avatar disappear when editing a person (#1440) 2023-09-05 09:52:06 +02:00
Jérémy M 421066c4b8 fix: Boolean editable field not align properly (#1444) 2023-09-05 09:50:23 +02:00
Jérémy M 33c67214d6 fix: tasks "Done" not visible (#1445) 2023-09-05 09:46:14 +02:00
Jérémy M 2eac5df05b fix: big view name is not handled (#1439)
* fix: big view name is not handled

* fix: smaller max size
2023-09-04 17:47:32 +02:00
Jérémy M 6cf46cfdf5 fix: just change the order to match design (#1410)
* fix: just change the order to match design

* fix: view field definition change
2023-09-04 17:46:24 +02:00
Jérémy M 4889a69751 fix: DatePicker cut in DropDownMenu (#1437)
* fix: DatePicker cut in DropDownMenu

* fix: better solution
2023-09-04 17:42:46 +02:00
Jérémy M 85156ce9ae fix: allow zero value on number field (#1436)
* fix: allow zero value on number field

* fix: test
2023-09-04 17:03:31 +02:00
Jérémy M 3a0f02f2f2 feat: table virtualization (#1408)
* feat: poc table virtualization

* feat: table virtualization

* feat: add overscan of 15

* fix: increase overscan to 50

* fix: dead code

* fix: debug mode

* feat: styled space
2023-09-04 13:33:02 +02:00
Jérémy M c0cb3a47f3 Fix/csv import (#1397)
* feat: add ability to enable or disable header selection

* feat: limit to max of 200 records for now

* fix: bigger modal

* feat: add missing standard fields for company

* fix: person fields

* feat: add hotkeys on dialog

* feat: mobile device

* fix: company import error

* fix: csv import crash

* fix: use scoped hotkey
2023-09-04 11:50:12 +02:00
Jérémy M 8863bb0035 Import company and person from csv file (#1236)
* feat: wip implement back-end call csv import

* fix: rebase IconBrandTwitter missing

* feat: person and company csv import

* fix: test & clean

* fix: clean & test
2023-08-16 14:18:16 -07:00
Jérémy MandCharles Bochet 56cada6335 feat: wip import csv [part 1] (#1033)
* feat: wip import csv

* feat: start implementing twenty UI

* feat: new radio button component

* feat: use new radio button component and fix scroll issue

* fix: max height modal

* feat: wip try to customize react-data-grid to match design

* feat: wip match columns

* feat: wip match column selection

* feat: match column

* feat: clean heading component & try to fix scroll in last step

* feat: validation step

* fix: small cleaning and remove unused component

* feat: clean folder architecture

* feat: remove translations

* feat: remove chackra theme

* feat: remove unused libraries

* feat: use option button to open spreadsheet & fix stories

* Fix lint and fix imports

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2023-08-15 15:12:47 -07:00
Jérémy M f111440e00 feat: implement user impersonation feature (#976)
* feat: wip impersonate user

* feat: add ability to impersonate an user

* fix: remove console.log

* fix: unused import
2023-07-31 15:47:29 -07:00
Jérémy M 3daebd0e0c feat: search activities (#972) 2023-07-28 10:02:56 -07:00
Jérémy M 44a9c2687f fix: front not running properly (#971) 2023-07-28 11:36:27 +02:00
Jérémy MandCharles Bochet d0641084f9 feat: rename comment thread into activity (#939)
* feat: rename commentThread into activity server

* feat: rename commentThread into activity front

* feat: migration only create tables


feat: migration only create tables

* Update activities

* fix: rebase partial fix

* fix: all rebase problems and drop activity target alter

* fix: lint

* Update migration

* Update migration

* Fix conflicts

* Fix conflicts

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2023-07-27 23:22:16 -07:00
Jérémy MandCharles Bochet 157e5b9a2e feat: implement e2e test for CompanyResolver (#944)
* feat: wip e2e server test

* feat: use github action postgres & use infra for local

* feat: company e2e test

* feat: add company e2e test for permissions

* Simplify server e2e test run

* Fix lint

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2023-07-27 09:48:40 -07:00
Jérémy M e90f44bbfb feat: increase upload size limit (#962) 2023-07-27 09:07:38 -07:00
Jérémy M 58530be78b feat: upload profile picture from google (#964)
* feat: upload profile picture from google

* fix: only add profile picture if user don't have any
2023-07-27 09:06:50 -07:00
51cfc0d82c feat: refactoring casl permission checks for recursive nested operations (#778)
* feat: nested casl abilities

* fix: remove unused packages

* Fixes

* Fix createMany broken

* Fix lint

* Fix lint

* Fix lint

* Fix lint

* Fixes

* Fix CommentThread

* Fix bugs

* Fix lint

* Fix bugs

* Fixed auto routing

* Fixed app path

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
2023-07-25 16:37:22 -07:00
Jérémy MandCharles Bochet b2f4108d89 feat: rename commentThread into activity migration (#876)
* feat: rename commentThread into activity migration

* fix: migration

* Only apply creation migration

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2023-07-24 14:28:42 -07:00
Jérémy MandLucas Bordeau 872ec9e6bb feat: disable atomic operation on nestjs graphql models (#751)
* feat: no atomic

* feat: update front not atomic operations

* feat: optional fields for person model & use proper gql type

* Fix bug display name

* Fix bug update user

* Fixed bug avatar URL

* Fixed display name on people cell

* Fix lint

* Fixed storybook display name

* Fix storybook requests

---------

Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
2023-07-20 19:23:35 +00:00
Jérémy M ce3e023a00 feat: server lint import & order (#750) 2023-07-19 14:01:32 +02:00
Jérémy MandLucas Bordeau 19e165fc05 feat: implementing experience page (#718)
* feat: add color scheme toggle
* feat: colorScheme stored in UserSettings model
* feat: add stories
* fix: AnimatePresence exit not working

---------

Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
2023-07-18 17:47:27 +00:00
Jérémy MandEmilien 4ec93d4b6a feat: default pipeline provisioning at workspace creation (#728)
* feat: default pipeline and pipeline stage on workspace creation

* Create seed data files, typo

* Naming

---------

Co-authored-by: Emilien <emilien.chauvet.enpc@gmail.com>
2023-07-18 10:30:59 -07:00
Jérémy M 4d37270e74 fix: background ugly white dot (#730) 2023-07-18 15:00:57 +02:00
Jérémy M 03364330d1 feat: snack-bar component (#626)
* feat: SnackBarProvider and queuing

* feat: use snack bar on onboarding errors

* feat: workspace copy use snackBar

* fix: remove magic number
2023-07-14 04:27:09 +00:00
Jérémy MandCharles Bochet e7d48d5373 Add validation on onboarding flow inputs (#556)
* feat: wip react-hook-form

* feat: use react-hook-form for password login

* feat: clean regex

* feat: add react-hook-form on create workspace

* feat: add react-hook-form on create profile page

* fix: clean rebased code

* fix: rebase issue

* fix: add new stories to go over 65%

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2023-07-12 16:53:48 -07:00
Jérémy M 718ad721cf feat: auth race condition & optimize ApolloFactory & too many pageview (#602) 2023-07-11 19:50:25 +02:00
Jérémy MandEmilien 3079747c83 feat: colored avatar (#554)
* feat: colored avatar

* fix: use id instead of name & remove unused

* fix: remove unused

* Allow empty ID to avoid empty string

* Fix tests

* Add person chip story

---------

Co-authored-by: Emilien <emilien.chauvet.enpc@gmail.com>
2023-07-10 11:24:09 -07:00
Jérémy MandEmilien c9292365c0 feat: workspace update name and logo (#553)
* feat: workspace update name and logo

* fix: remove logs

* fix: disable warning until refacto

* Fix text

---------

Co-authored-by: Emilien <emilien.chauvet.enpc@gmail.com>
2023-07-10 11:23:58 -07:00
Jérémy M c529c49ea6 Workspace member (#552)
* fix: clean small back-end issues

* fix: apollo factory causing infinite loop on token renew

* feat: small refactor and add ability to remove workspace member

* fix: test
2023-07-10 09:25:11 +00:00
Jérémy MandCharles Bochet 1144bd13ed feat: onboarding & profile edition (#507)
* feat: wip onboarding

* fix: generate graphql front

* wip: onboarding

* feat: login/register and edit profile

* fix: unused import

* fix: test

* Use DEBUG_MODE instead of STAGE and mute typescript depth exceed errors

* Fix seeds

* Fix onboarding when coming from google

* Fix

* Fix lint

* Fix ci

* Fix tests

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2023-07-06 17:05:15 -07:00
Jérémy M 0b7a023f3d fix: missing client query (#524) 2023-07-05 17:20:12 +02:00
Jérémy M 2961fed932 feat: refactor storage module (#521)
* feat: refactor storage module

* fix: folder need to be kebab case

* fix: comment wrong auth
2023-07-05 14:34:39 +00:00
Jérémy M 6fc416da76 fix: displayName return undefined and drop displayName from user table (#505) 2023-07-04 20:08:15 +02:00
Jérémy M 5e1fc1ad11 feat: upload module (#486)
* feat: wip upload module

* feat: local storage and serve local images

* feat: protect against injections

* feat: server local and s3 files

* fix: use storage location when serving local files

* feat: cross field env validation
2023-07-04 14:02:44 +00:00
Jérémy M f08ff68530 fix: google auth issue (#485) 2023-06-30 13:43:04 +02:00
Jérémy M 19a1f2b9f8 feat: ui settings (#465) 2023-06-30 09:35:01 +00:00
Jérémy M 91608a37f2 fix: fix auth in prod env (#481) 2023-06-30 09:34:45 +00:00
Jérémy M cca36cf50f fix: rename event module into analytics and clean (#482) 2023-06-30 09:24:05 +00:00
Jérémy M 7893d5dba5 fix: remove not working part (#484) 2023-06-30 11:55:35 +03:00
Jérémy M 8e319900d0 fix: github actions (#483)
fix: test unused
2023-06-30 11:35:59 +03:00
Jérémy M 433962321a feat: onboarding ui flow (#464)
* feat: onboarding ui flow

* fix: route naming and auth

* fix: clean unused imports

* fix: remove react.fc

* fix: infra dev remove package.json

* fix: remove usefull memoization

* fix: button stories

* fix: use type instead of interface

* fix: remove debug
2023-06-30 06:26:06 +00:00
Jérémy M 097b278b11 fix: add firstName and lastName to user model (#473)
* fix: add firstname and lastanme to user model

* fix: avoid undefined in displayName resolve field

* fix: user firstName and lastName instead of firstname lastname

* fix: person table proper naming firstName lastName

* fix: migrate front with firstName and lastName

* fix: make front-graphql-generate not working
2023-06-29 15:11:15 +00:00
Jérémy M d9af205ccb feat: clean prisma file, add validation, add prisma editor (#472) 2023-06-29 15:41:58 +02:00
Jérémy M c9038bb93a Front small ui fixes (#428)
* fix: add ellipsis in all table cells

* fix: workspace click redirect to home

* fix: add company chip story and edit comment cell story

* fix: remove cursor pointer on workspace name

* fix: snoop pill height

* fix: rebase
2023-06-27 17:56:48 +02:00
Jérémy MandCharles Bochet edee69bc07 Fix double Run CI (#459)
Co-authored-by: Charles Bochet <charles@twenty.com>
2023-06-27 17:55:07 +02:00
Jérémy MandCharles Bochet 31145c5518 feat: align auth api with front convention (#370)
* feat: align auth api with front convention

* fix: email password auth

* fix: proper file naming

* Fix login

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2023-06-23 22:43:54 -07:00
Jérémy M c6708b2c1f feat: rewrite auth (#364)
* feat: wip rewrite auth

* feat: restructure folders and fix stories and tests

* feat: remove auth provider and fix tests
2023-06-23 08:49:50 -07:00
Jérémy M c4ad0171b0 feat: add missing abilities (#354)
feat: add all missing abilities rules on resolvers
2023-06-22 11:09:17 -07:00
Jérémy M cd70209502 fix: workspace shouldn't be hidden in the output (#358) 2023-06-22 13:50:52 +00:00
Jérémy M 06acfb8aab fix: token expires in not set properly (#357) 2023-06-22 15:15:04 +02:00
Jérémy M ca283a2196 feat: prisma typed select (#347)
* feat: wip prisma gql select

* feat: stronger api using decorator

* feat: add PrismaSelect everywhere

* fix: remove unused

* fix: remove seed debug
2023-06-22 11:17:31 +02:00
Jérémy M b179d1f1f0 feat: wip casl policies (#334)
* feat: wip casl policies

* feat: add ability guard on pipeline resolvers

* fix: test
2023-06-20 19:31:11 -07:00
Jérémy MandCharles Bochet 299ca293a8 feat: refactoring auth & add email password login (#318)
* feat: wip

* fix: issues

* feat: clean controllers and services

* fix: test

* Fix auth

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2023-06-17 13:42:02 +02:00
Jérémy M 2cd081234f chore: refacto NestJS in modules (#308)
* chore: wip refacto in modules

* fix: rollback port

* fix: jwt guard in wrong folder

* chore: rename folder exception-filter in filters

* fix: tests are running

* fix: excessive stack depth comparing types

* fix: auth issue

* chore: move createUser in UserService

* fix: test

* fix: guards

* fix: jwt guard don't handle falsy user
2023-06-16 10:38:11 +02:00
Jérémy M 467a1618f0 Update doc & split prisma generate (#299)
* feat: split prisma generate

* fix: update doc
2023-06-15 12:15:57 +02:00