diff --git a/packages/twenty-front/public/images/integrations/airtable-logo.png b/packages/twenty-front/public/images/integrations/airtable-logo.png
new file mode 100644
index 000000000..f63243b36
Binary files /dev/null and b/packages/twenty-front/public/images/integrations/airtable-logo.png differ
diff --git a/packages/twenty-front/public/images/integrations/postgresql-logo.png b/packages/twenty-front/public/images/integrations/postgresql-logo.png
new file mode 100644
index 000000000..08e86c06b
Binary files /dev/null and b/packages/twenty-front/public/images/integrations/postgresql-logo.png differ
diff --git a/packages/twenty-front/src/App.tsx b/packages/twenty-front/src/App.tsx
index 38b93730a..9dc41e7f7 100644
--- a/packages/twenty-front/src/App.tsx
+++ b/packages/twenty-front/src/App.tsx
@@ -38,6 +38,7 @@ import { SettingsDevelopersApiKeysNew } from '~/pages/settings/developers/api-ke
import { SettingsDevelopers } from '~/pages/settings/developers/SettingsDevelopers';
import { SettingsDevelopersWebhooksDetail } from '~/pages/settings/developers/webhooks/SettingsDevelopersWebhookDetail';
import { SettingsDevelopersWebhooksNew } from '~/pages/settings/developers/webhooks/SettingsDevelopersWebhooksNew';
+import { SettingsIntegrationDetail } from '~/pages/settings/integrations/SettingsIntegrationDetail';
import { SettingsIntegrations } from '~/pages/settings/integrations/SettingsIntegrations';
import { SettingsAppearance } from '~/pages/settings/SettingsAppearance';
import { SettingsBilling } from '~/pages/settings/SettingsBilling.tsx';
@@ -170,6 +171,10 @@ export const App = () => {
path={SettingsPath.Integrations}
element={}
/>
+ }
+ />
}
diff --git a/packages/twenty-front/src/pages/settings/accounts/SettingsAccountLoader.tsx b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountLoader.tsx
similarity index 100%
rename from packages/twenty-front/src/pages/settings/accounts/SettingsAccountLoader.tsx
rename to packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountLoader.tsx
diff --git a/packages/twenty-front/src/modules/settings/developers/components/SettingsApiKeysTable.tsx b/packages/twenty-front/src/modules/settings/developers/components/SettingsApiKeysTable.tsx
new file mode 100644
index 000000000..de55bab79
--- /dev/null
+++ b/packages/twenty-front/src/modules/settings/developers/components/SettingsApiKeysTable.tsx
@@ -0,0 +1,53 @@
+import { useNavigate } from 'react-router-dom';
+import styled from '@emotion/styled';
+
+import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
+import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
+import { SettingsApiKeysFieldItemTableRow } from '@/settings/developers/components/SettingsApiKeysFieldItemTableRow';
+import { ApiFieldItem } from '@/settings/developers/types/api-key/ApiFieldItem';
+import { ApiKey } from '@/settings/developers/types/api-key/ApiKey';
+import { formatExpirations } from '@/settings/developers/utils/format-expiration';
+import { Table } from '@/spreadsheet-import/components/Table';
+import { TableBody } from '@/ui/layout/table/components/TableBody';
+import { TableHeader } from '@/ui/layout/table/components/TableHeader';
+import { TableRow } from '@/ui/layout/table/components/TableRow';
+
+const StyledTableBody = styled(TableBody)`
+ border-bottom: 1px solid ${({ theme }) => theme.border.color.light};
+`;
+
+const StyledTableRow = styled(TableRow)`
+ grid-template-columns: 312px 132px 68px;
+`;
+
+export const SettingsApiKeysTable = () => {
+ const navigate = useNavigate();
+
+ const { records: apiKeys } = useFindManyRecords({
+ objectNameSingular: CoreObjectNameSingular.ApiKey,
+ filter: { revokedAt: { is: 'NULL' } },
+ });
+
+ return (
+
+
+ Name
+ Expiration
+
+
+ {!!apiKeys.length && (
+
+ {formatExpirations(apiKeys).map((fieldItem) => (
+ {
+ navigate(`/settings/developers/api-keys/${fieldItem.id}`);
+ }}
+ />
+ ))}
+
+ )}
+
+ );
+};
diff --git a/packages/twenty-front/src/pages/settings/developers/components/ReadDocumentationButton.tsx b/packages/twenty-front/src/modules/settings/developers/components/SettingsReadDocumentationButton.tsx
similarity index 86%
rename from packages/twenty-front/src/pages/settings/developers/components/ReadDocumentationButton.tsx
rename to packages/twenty-front/src/modules/settings/developers/components/SettingsReadDocumentationButton.tsx
index 9edacf9cd..5f92acbef 100644
--- a/packages/twenty-front/src/pages/settings/developers/components/ReadDocumentationButton.tsx
+++ b/packages/twenty-front/src/modules/settings/developers/components/SettingsReadDocumentationButton.tsx
@@ -1,7 +1,7 @@
import { IconBook2 } from '@/ui/display/icon';
import { Button } from '@/ui/input/button/components/Button';
-export const ReadDocumentationButton = () => {
+export const SettingsReadDocumentationButton = () => {
return (