Giter VIP home page Giter VIP logo

teableio / teable Goto Github PK

View Code? Open in Web Editor NEW
5.5K 31.0 223.0 17.57 MB

✨ A Super Fast Airtable alternative build on top of Postgres

Home Page: https://teable.io

License: GNU Affero General Public License v3.0

Shell 0.17% JavaScript 2.48% Dockerfile 0.13% TypeScript 96.29% CSS 0.05% ANTLR 0.30% MDX 0.12% Makefile 0.26% Handlebars 0.19% HCL 0.01% PLpgSQL 0.01%
airtable airtable-alternative database no-code sqlite postgres postgresql nocode realtime low-code

teable's Introduction

teable logo

Postgres-Airtable Fusion

Teable is a Super fast, Real-time, Professional, Developer friendly, No-code database built on Postgres. It uses a simple, spreadsheet-like interface to create complex enterprise-level database applications. Unlock efficient app development with no-code, free from the hurdles of data security and scalability.

Home | Help | Blog | Template | Roadmap | Discord | Twitter

build Codefactor Coverage Techdebt Codacy grade GitHub top language Licence

teable interface

Quick Guide

  1. Looking for a quick experience? Select a scenario from the template center and click "Use this template".
  2. Seeking high performance? Try the 1 million rows demo to feel the speed of Teable.
  3. Want to learn to use it quickly? Click on this tutorial
  4. Interested in deploying it yourself? Click Deploy on Railway

✨Features

📊 Spreadsheet-like Interface

All you want is here

  • Cell Editing: Directly click and edit content within cells.
  • Formula Support: Input mathematical and logical formulas to auto-calculate values.
  • Data Sorting and Filtering: Sort data based on a column or multiple columns; use filters to view specific rows of data.
  • Aggregation Function: Automatically summarize statistics for each column, providing instant calculations like sum, average, count, max, and min for streamlined data analysis.
  • Data Formatting: formatting numbers, dates, etc.
  • Grouping: Organize rows into collapsible groups based on column values for easier data analysis and navigation.
  • Freeze Columns: Freeze the left column of the table so they remain visible while scrolling.
  • Import/Export Capabilities: Import and export data from other formats, e.g., .csv, .xlsx.
  • Row Styling & Conditional Formatting: Change row styles automatically based on specific conditions. (coming soon)
  • Charts & Visualization Tools: Create charts from table data such as bar charts, pie charts, line graphs, etc. (coming soon)
  • Data Validation: Limit or validate data that are entered into cells. (coming soon)
  • Undo/Redo: Undo or redo recent changes. (coming soon)
  • Comments & Annotations: Attach comments to rows, providing explanations or feedback for other users. (coming soon)

🗂️ Multiple Views

Visualize and interact with data in various ways best suited for their specific tasks.

  • Grid View: The default view of the table, which displays data in a spreadsheet-like format.
  • Form View: Input data in a form format, which is useful for collecting data.
  • Kanban View: Displays data in a Kanban board, which is a visual representation of data in columns and cards.
  • Calendar View: Displays data in a calendar format, which is useful for tracking dates and events. (coming soon)
  • Gallery View: Displays data in a gallery format, which is useful for displaying images and other media. (coming soon)
  • Gantt View: Displays data in a Gantt chart, which is useful for tracking project schedules. (coming soon)
  • Timeline View: Displays data in a timeline format, which is useful for tracking events over time. (coming soon)

🚀 Super Fast

Amazing response speed and data capacity

  • Millions of data are easily processed, and there is no pressure to filter and sort
  • Automatic database indexing for maximum speed
  • Supports batch data operations at one time

👨‍💻 Full-featured SQL Support

Seamless integration with the software you are familiar with

  • BI tools like Metabase PowerBi...
  • No-code tools like Appsmith...
  • Direct retrieve data with native SQL

🔒 Privacy-First

You own your data, in spite of the cloud

  • Bring your own database (coming soon)

⚡️ Real-time Collaboration

Designed for teams

  • No need to refresh the page, data is updated in real-time
  • Seamlessly integrate collaboration member invitation and management
  • Perfect permission management mechanism, from table to column level

🧩 Extensions (Coming Soon)

Expand infinite possibilities

  • Backend-less programming capability based on React
  • Customize your own application with extremely low cost
  • Extremely easy-to-use script extensions mode

🤖 Automation (Coming Soon)

Empower data-driven workflows effortlessly and seamlessly

  • Design your workflow with AI or Visual programming
  • Super easy to retrieve data from the table

🧠 Copilot (Coming Soon)

Native Integrated AI ability

  • Chat 2 App. "Create a project management app for me"
  • Chat 2 Chart. "Analyze the data in the order table using a bar chart"
  • Chat 2 View. "I want to see the schedule for the past week and only display participants"
  • Chat 2 Action. "After the order is paid and completed, an email notification will be sent to the customer"
  • More actions...

🗄️ Support for Multiple Databases (Coming Soon)

Choose the SQL database you like

  • Sqlite, PostgreSQL, MySQL, MariaDB, TiDB...

Structure

Open in Gitpod

.
├── apps
│   ├── nextjs-app          (front-end, include a nextjs app)
│   └── nestjs-backend      (backend, include a nestjs app)
└── packages
    ├── common-i18n         (locales)
    ├── core                (share code and interface)
    ├── sdk                 (sdk for extensions)
    ├── db-main-prisma      (schema, migrations, prisma client)
    ├── eslint-config-bases (to shared eslint configs)
    └── ui-lib              (ui component)

Deploy

Deploy With Docker

cd dockers/examples/standalone/
docker-compose up -d

for more details, see dockers/examples

One Click Deployment

These platforms are easy to deploy with one click and come with free credits.

Deploy on Railway

Deploy on Zeabur

Deploy on Sealos

Development

1. Initialize

# Enabling the Help Management Package Manager
corepack enable

# Install project dependencies
pnpm install

2. Select Database

we currently support sqlite and postgres, you can switch between them by running the following command

make switch-db-mode

3. Custom Environment Variables(Optional)

cd apps/nextjs-app
copy .env.development .env.development.local

4. Run Dev Server

you just need to start backend, it will start next server for frontend automatically, file change will be auto reload

cd apps/nestjs-backend
pnpm dev

Why Teable?

No-code tools have significantly speed up how we get things done, allowing non-tech users to build amazing apps and changing the way many work and live. People like using spreadsheet-like UI to handle their data because it's easy, flexible, and great for team collaboration. They also prefer designing their app screens without being stuck with clunky templates.

Giving non-techy people the ability to create their software sounds exciting. But that's just the start:

  • As businesses expand, their data needs intensify. No one wishes to hear that once their orders reach 100k, they'll outgrow their current interface. Yet, many no-code platforms falter at such scales.
  • Most no-code platforms are cloud-based. This means your important data sits with the provider, and switching to another platform can be a headache.
  • Sometimes, no-code tools can't do what you want because of their limitations, leaving users stuck.
  • If a tool becomes essential, you'll eventually need some tech expertise. But developers often find these platforms tricky.
  • Maintaining systems with complex setups can be hard for developers, especially if these aren't built using common software standards.
  • Systems that don't use these standards might need revamping or replacing, costing more in the long run. It might even mean ditching the no-code route and going back to traditional coding.

What We Think the Future Of No-code Products Look Like

  • An interface that anyone can use to build applications easily.
  • Easy access to data, letting users grab, move, and reuse their information as they wish.
  • Data privacy and choice, whether that's in the cloud, on-premise, or even just on your local.
  • It needs to work for developers too, not just non-tech users.
  • It should handle lots of data, so it can grow with your business.
  • Flexibility to integrate with other software, combining strengths to get the job done.
  • Last, native AI integration to takes usability to the next level.

In essence, Teable isn't just another no-code solution, it's a comprehensive answer to the evolving demands of modern software development, ensuring that everyone, regardless of their technical proficiency, has a platform tailored to their needs.

Sponsors ❤️

If you are enjoying some this project in your company, I'd really appreciate a sponsorship, a coffee or a dropped star. That gives me some more time to improve it to the next level.

License

AGPL-3.0

teable's People

Contributors

boris-w avatar caoxing9 avatar codesmith-emmy avatar dammy001 avatar eltociear avatar greattoymaker avatar michaelyuhe avatar pengap avatar sky-fe avatar tea-artist avatar zzjin 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

teable's Issues

Support TSV uploading

currently only CSV uploading is supported

it's very likely that the CSV parsing library that is being used also supports TSV.

Issue: Attachment API

Hello, I'm trying to use the attachment api to upload file using python, here is my code.

I can successfully upload file, but the notify request returns 201 Created without any information, is there something wrong with my code?

class BaseTeable:
    def __init__(self, baseurl: str, key: str):
        self._baseurl = baseurl
        self._key = key
        self._client = requests.Session()
        adapter = HTTPAdapter(max_retries=Retry(
            total=5, status_forcelist=[502]))
        self._client.mount('http://', adapter)
        self._client.mount('https://', adapter)
        HTTPConnection.debuglevel = 1


    def request(self, url, method='GET', params=None, body=None, headers=None, raw_body=None):
        if not headers:
            headers = {}
        headers['Authorization'] = f'Bearer {self._key}'
        response = self._client.request(
            url=self._baseurl + url,
            method=method,
            params=params,
            json=body,
            headers=headers,
            data=raw_body,
        )
        response.raise_for_status()
        if len(response.content) > 0:
            return response.json()



class AttachmentEndpoint(Endpoint):
    def notify(self, token):
        self.parent.request(url=f'/attachments/notify/{token}', method='POST')

    def get(self, token):
        self.parent.request(url=f'/attachments/{token}')

    def signature(self, content_type: str, content_length: str, expires_in: int, hash: str, type: int):
        """
        hash: sha256 file hash
        type: 1 for table, 2 for avatar, 3 for form
        """
        return self.parent.request(
            url="/attachments/signature",
            method='POST',
            body={
                "contentType": content_type,
                "contentLength": content_length,
                "expiresIn": expires_in,
                "hash": hash,
                "type": type
            }
        )

    def upload_raw(self, method, token, content, headers):
        self.parent.request(
            url=f'/attachments/upload/{token}',
            method=method,
            headers=headers,
            raw_body=content
        )

    def upload(self, path: str, content_type: str):
        with open(path) as f:
            data = f.read()
            m = hashlib.sha256()
            m.update(data.encode('utf-8'))
            signature = self.signature(
                content_type, len(data), 3600, m.hexdigest(), 1)
            print(signature)
            headers = signature['requestHeaders']
            if headers['Content-Length']:
                headers['Content-Length'] = str(headers['Content-Length'])
            self.upload_raw(
                signature['uploadMethod'], signature['token'], data, headers)
            return self.notify(signature['token'])

attachment is not shown

there is no indicator in the attachment column that their is an attachment there , normally a file name , or a small preview should be displayed , also an option to upload file attachment to AWS S3 or compatible service.

copy from teable is not working in self hosting

when trying to copy rows or data from table in teable , when self hosting the coping notification is how but taking a couple of second and without coping any data, as example trying to copt from teable to excel sheet

In version 1.20, I am having trouble connecting to my local pg (PostgreSQL) database,

In version 1.20, I am having trouble connecting to my local pg (PostgreSQL) database, whereas with version 1.10, following your instructions, I was successful. Are the steps the same for this version, or do I need different procedures?

Please assist me in connecting to the local PostgreSQL database in version 1.20, as I encountered various issues with this version despite successfully doing so with version 1.10 using the previously provided steps.

Translation:
"In version 1.20, I need help connecting to my local PostgreSQL database. In version 1.10, I managed to connect successfully using the steps you provided earlier. However, I'm facing several problems with this newer version. Could you confirm if the connection steps are identical, or do I require different procedures for version 1.20?"

Filtering Lookup does not work if the source field is "User"

Describe the bug
If you lookup any field which is a "User" type from Table B to Table A, and then apply filter on that lookup. The filter will not work correctly.

To Reproduce
Steps to reproduce the behavior:

  1. Create Table A with a column for "User Type"
  2. Create Table B
  3. Link Table A and B [(Table A)One to Many(Table B)]
  4. In Table B , create a new column with "Look up" to Table A "User Type" column
  5. Apply Filter in Table B. The filter will not work correctly.

Expected behavior
I should be able to filter based on user name in Table B

Screenshots
Table A:
image

Table B:
image

Relation of Table A and Table B:
image

Filter Applied:
image

After applying filter, the results is blank.
Ideally, I should be seeing 2 records mapped to me.
image

** Client (please complete the following information):**

  • OS: [e.g. iOS] : Windows 11
  • Browser [e.g. chrome, safari] : Firefox
  • Version [e.g. 22] 124.0.2 (64-bit)

Platform (Please tell us which deployment version you are using)

  • Teable IO
  • StandAlone Docker

Unable to calculate difference between dates using formula

Describe the bug and To Reproduce

If you create a column with "Created Date" type and create another column with formula DATETIME_DIFF(today(),{Created Date},"day"), then you will get an "Internal Server Error.

Expected behavior
The difference should be an integer . (Example if Created Date is April 8, 2024 and Today() is April 9, 2024, then DATETIME_DIFF(today(),{Created Date},"day") should return 1.

Screenshots
image
image

** Client (please complete the following information):**

  • OS: Windows 11
  • Browser: Firefox
  • Version 125

Platform (Please tell us which deployment version you are using)
teable.io and docker-standalone,

Additional context
Further, unable to do calculation with dates.
Ideally, I should be able to do Today()+7 or something like that in the formula to get the next weeks date.

Security and Operational Risks Due to Hardcoded Default Values in Configuration

Hello,

First, thanks for your job.

I've noticed that your NestJS backend configurations for authentication and storage, specifically in the files auth.config.ts and storage.ts within the develop branch, utilize hardcoded default values. This practice introduces several potential risks and limitations that could affect the security of deployments.

Hardcoded defaults, especially for authentication configurations, can pose significant security risks. If a deployment leave default values, it could be easily exploited by malicious actors.

If you don't have time to solve, but agreed about this fact, we can submit a PR, just say if you've a prefered approach.

captcha in form

Forms have a lot of elements, however to help combat spam it would be good to have an option for captcha. Forms can then safely be used publicly unlike currently.

Filtered View New Row Creation hidden

This functionality works for group views, If I make a new entry under a group, it will carry the group with it. However when I create a new entry under a filtered view it will immediately vanish as the filter is not applied to it.

I think this is a small oversight in expected behaviour, testing others like Nocodb and Airtable they do this. Just a small flag

Container standalone-teable-db-migrate-1 service "teable-db-migrate" didn't complete successfully: exit 10.8s

2024-04-11 20:47:25 DB Migrate Version: 1.0.0-alpha+build.315.sha-8472da7
2024-04-11 20:47:31 Error: request to https://binaries.prisma.sh/all_commits/efd2449663b3d73d637ea1fd226bafbcf45b3102/debian-openssl-3.0.x/libquery_engine.so.node.gz.sha256 failed, reason:
2024-04-11 20:47:31 Error: Error: request to https://binaries.prisma.sh/all_commits/efd2449663b3d73d637ea1fd226bafbcf45b3102/debian-openssl-3.0.x/libquery_engine.so.node.gz.sha256 failed, reason:
2024-04-11 20:47:31 at file:///prisma/scripts/db-migrate.mjs:33:8
2024-04-11 20:47:31 exit code: 1

请问是 改那个 .env文件呢?求助 请问怎么连接 不是在docker里面的,本地的pg数据库

请问是 改那个 .env文件呢?求助
请问怎么连接 不是在docker里面的,本地的pg数据库

文件下有2个.env文件
1./Users/bluesky/Documents/teable-develop/dockers/examples/standalone/.env
2./Users/bluesky/Documents/teable-develop/dockers/.env
3./Users/bluesky/Documents/teable-develop/dockers/examples/standalone/docker-compose.yaml 这个文件?
如下我注释掉了 teable-db

teable-db:
  #   image: postgres:15.4
  #   restart: always
  #   ports:
  #     - '42345:5432'
  #   volumes:
  #     - teable-db:/var/lib/postgresql/data:rw
  #     # you may use a bind-mounted host directory instead,
  #     # so that it is harder to accidentally remove the volume and lose all your data!
  #     # - ./docker/db/data:/var/lib/postgresql/data:rw
  #   environment:
  #     - TZ=${TIMEZONE}
  #     - POSTGRES_DB=${POSTGRES_DB}
  #     - POSTGRES_USER=${POSTGRES_USER}
  #     - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
  #   networks:
  #     - teable-standalone
  #   healthcheck:
  #     test: ['CMD-SHELL', "sh -c 'pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}'"]
  #     interval: 10s
  #     timeout: 3s
  #     retries: 3

终端报错:
docker-compose up -d
service "teable-db-migrate" depends on undefined service teable-db: invalid compose project

Increase Row limits on a table

How can the maximum rows be extended since it's limited to ~100k rows? There are no options in the interface that lets you upgrade

Issue: Image previews are broken in self-deployment.

I'd like to suggest an enhancement for Teable's list page. It would be highly beneficial if the list view could include previews of images that are contained within each row.

This feature would significantly improve the user experience by allowing users to quickly visualize the content without having to navigate away from the list page. Implementing image previews could make data interpretation more intuitive and efficient, especially for databases that are heavily reliant on visual content.

Bi-directional junctions can get out of sync with their underlying table

I have been trying out Teable on app.teable.io for the past day, and it's been working reasonably well, however it has ended up in a state where it's expecting a particular junction table to exist that doesn't. This leads to errors like the following when trying to edit the primary key of either of the affected tables:

internal_server_error: An error occurred in $queryRawUnsafe:
Invalid `prisma.$queryRawUnsafe()` invocation:

Raw query failed. Code: `42P01`. Message: `relation "bsePYQ5LBiGxeAyQu26.junction_fld1knDV9BY5h0mTkUB_fldgFzzG4wTywY3mhAR" does not exist`internal_server_error: An error occurred in $queryRawUnsafe:
Invalid `prisma.$queryRawUnsafe()` invocation:

I'm not certain what exactly I have done that could have caused this. I have made rather liberal use of multi-multi junctions I have a 'Themes' table which is linked bidirectionally to 'People', 'Publications', 'Research groups', 'Journals' and 'Conferences'. So this could serve as a minor stress-test in this regard. Admittedly I could have used tags instead, however it should not have broken in this way either.

I suspect what may have caused it is the feature where you can nest the creation of records in different tables:

  1. Create a row A in the 'Publications' table.
  2. Click on the 'People' feild of row A to open the selector dialog.
  3. Create an entry in the 'People' table.
  4. Click add a new record, call it B.
  5. In the dialog set the publication to row A that we are in the middle of creating.
  6. Keep going and edit the Themes of B to add a new theme, C.
  7. In the dialog to create the theme C.
  8. Add both A and B to the Publications and People fields of the theme C.
  9. Finalize the 3 records.
  10. Attempt to edit the primary keys of the Publication table or the Theme table, and you should get an error like the one above.

Let me know if you have trouble reproducing this, and I can try to provide more information.

You are welcome to use my base for testing (as long as you don't change my data, of course).

Bug found in copying share link

When trying to copy the sharing link after enabling sharing for a view, the copy button causes this error in the browser console.
I don't know if this is a real bug in the software or just an artifact of me running a self-hosted instance.

[viewId]-b6bf1d65ae94c4f0.js:1 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'writeText')
    at y ([viewId]-b6bf1d65ae94c4f0.js:1:18731)
    at test.n.<computed> (_app-0cdcc7521fdc94d5.js:95:15319)
    at Object.eB (framework-922e6b3f191606ca.js:25:14910)
    at eH (framework-922e6b3f191606ca.js:25:15064)
    at framework-922e6b3f191606ca.js:25:33370
    at re (framework-922e6b3f191606ca.js:25:33469)
    at rt (framework-922e6b3f191606ca.js:25:33883)
    at framework-922e6b3f191606ca.js:25:39339
    at uP (framework-922e6b3f191606ca.js:25:96306)
    at eM (framework-922e6b3f191606ca.js:25:14048)

[Feature Request]: Group by date, not datetime

I have a simple application where I store my trainings I do at gym. Basically, I want to group my training table by date so I can monitor list of exercises I was doing at a certain day.

Right now, I see it groups by datetime, so it's not relevant for me. I tried to drop Time Formatting, but it didn't help.

2024-04-02 18 45 29
2024-04-02 18 45 45

[Feature request] Mount any existing database

A killer feature of nocodb is being able to mount any existing db (PostgreSQL, SQLite, and others) and turn it into a spreadsheet, gallery, kanban, or add a form. Currently teable only works with the db it was initialized with.

Teable should have this feature too. It would make Teable a great addition to pretty much any other project with a database. You could even create templates to instantly create dashboards for specific project databases.

Paste does not paste

Hello,

I use the latest teable docker image, but I cannot paste any cells.

Here is a little screen cast of my issue:

Enregistrement.de.l.ecran.2024-03-18.a.14.32.37.mov

By the way, thank you so much for this awesome alternative to Airtable/Baserow/Seatables, etc…!
This beta version is far better than the competitors 💪🏻

There is no Ctrl Z options

some times when working with data and mistyping a filed or a couple of cells that was highlighted would cause the data to be deleted / altered in unmanned way , that will cause data lose , and since the data is live saved , a Ctrl Z option is needed

Some API endpoints returning 403 error code even with all scopes enabled

Describe the bug
Even when a token has all scopes enabled, some API endpoints result in a 403 Forbidden error.

To Reproduce
Steps to reproduce the behavior:

  1. Create an API token and enable all scopes.
  2. Using the HTTP requesting tool of your choice, attempt to send a GET request to [Teable URL]/api/space or [Teable URL]/api/base/access/all.

Expected behavior
I expected to see a list of spaces or a list of bases when requesting to those endpoints.

Screenshots
image
image
image

Client (please complete the following information):

  • OS: MacOS Sonoma
  • Browser: Chrome
  • Version: 123.0.6312.124
  • HTTP Request tool: Postman

Platform (Please tell us which deployment version you are using)
docker-standalone

SRS & reminder/notification

I am just wondering is Anki/related SRS Algorithm/Reminder-notification can be integrated in Teable ?
So that it will remind timely about few rows/columns i specified with defined intervals?

Questioning the Role of the PUBLIC_ORIGIN Environment Variable in Docker Deployment Practices

Questioning the Role of the PUBLIC_ORIGIN Environment Variable in Docker Deployment Practices

I've noticed a discrepancy between the functionality of the PUBLIC_ORIGIN environment variable and its description in the documentation.

What Happened?

I mapped port 3000 of the teable container to port 34567.

  teable:
    image: ghcr.io/teableio/teable:latest
    restart: always
    ports:
      - '34567:3000'
    volumes:
      - ./docker/teable/data:/app/.assets:rw
    env_file:
      - .env
    environment:
      - TZ=${TIMEZONE}
      - NEXT_ENV_IMAGES_ALL_REMOTE=true
    depends_on:
      teable-db-migrate:
        condition: service_completed_successfully

Additionally, I configured the environment variable PUBLIC_ORIGIN=http://127.0.0.1:34567 and deployed the container, which led to the following bug:

  • When creating a new table by uploading a csv or xsl file, the application reports an internal server error.

Here's the log:

{"level":50,"time":1711165055143,"pid":21,"hostname":"c497e9c43628","name":"teable","reqId":"2d12034f3dcb98eb8983253288876679","context":"GlobalExceptionFilter","url":"/api/import/analyze?attachmentUrl=http://127.0.0.1:34567/api/attachments/read/private/table/Dwut3b4MhJbG?token=ffb51a5c7c3d9eb4ee3b941550bd3f00a19459fcd0080c9c81d48938af7a658dad7b4ca3e9b84e73c836ad8d443b07f00578dc898878b35ef3b2522a4dfe68787932ee73c74db7d189f620b17d87b62a21bf64f1db81313f197e8b5291b78b3b&fileType=excel","message":"request to http://127.0.0.1:34567/api/attachments/read/private/table/Dwut3b4MhJbG?token=ffb51a5c7c3d9eb4ee3b941550bd3f00a19459fcd0080c9c81d48938af7a658dad7b4ca3e9b84e73c836ad8d443b07f00578dc898878b35ef3b2522a4dfe68787932ee73c74db7d189f620b17d87b62a21bf64f1db81313f197e8b5291b78b3b failed, reason: connect ECONNREFUSED 127.0.0.1:34567","spanId":"efab4d9365451b96","traceId":"2d12034f3dcb98eb8983253288876679","msg":"FetchError: request to http://127.0.0.1:34567/api/attachments/read/private/table/Dwut3b4MhJbG?token=ffb51a5c7c3d9eb4ee3b941550bd3f00a19459fcd0080c9c81d48938af7a658dad7b4ca3e9b84e73c836ad8d443b07f00578dc898878b35ef3b2522a4dfe68787932ee73c74db7d189f620b17d87b62a21bf64f1db81313f197e8b5291b78b3b failed, reason: connect ECONNREFUSED 127.0.0.1:34567\n    at ClientRequest.<anonymous> (/app/node_modules/.pnpm/[email protected]/node_modules/node-fetch/lib/index.js:1501:11)\n    at /app/node_modules/.pnpm/@[email protected]_@[email protected]/node_modules/@opentelemetry/context-async-hooks/build/src/AbstractAsyncHooksContextManager.js:50:55\n    at AsyncLocalStorage.run (node:async_hooks:346:14)\n    at AsyncLocalStorageContextManager.with (/app/node_modules/.pnpm/@[email protected]_@[email protected]/node_modules/@opentelemetry/context-async-hooks/build/src/AsyncLocalStorageContextManager.js:33:40)\n    at ClientRequest.contextWrapper (/app/node_modules/.pnpm/@[email protected]_@[email protected]/node_modules/@opentelemetry/context-async-hooks/build/src/AbstractAsyncHooksContextManager.js:50:32)\n    at ClientRequest.emit (node:events:514:28)\n    at ClientRequest.emit (node:domain:488:12)\n    at Socket.socketErrorListener (node:_http_client:495:9)\n    at Socket.emit (node:events:514:28)\n    at Socket.emit (node:domain:488:12)"}

Changing the environment variable to PUBLIC_ORIGIN=http://127.0.0.1:3000 resolved the issue, and the functionality of uploading csv or xsl to create new tables was restored.

Steps to Reproduce

In my setup, when the host machine's mapped port differs from the container access port, I can trigger this error by changing PUBLIC_ORIGIN to the host machine port and resolve it by changing it to the container port.

Suggestion

The documentation mentions that PUBLIC_ORIGIN is the service access address. However, for container deployment, if the container's internal port is used, it does not accurately represent a true service access address. I suggest changing the variable name, description, or fixing this bug.

Hybrid tag: text with number

Usually tags/labels are text based. I am usually looking for hybrid tag i.e. text with number. & both should be updated independently.
i.e. instead of
image
i want as below
image

numbers identify its importance/weightage for that particular row item.

it should be possible to increase/decrease/edit/filter/sorting Number & text -independently easily (by user).
Only in UI/output they should be displayed together as per above snap.

[Feature request] Connect to Existing User Databases

Description

I currently possess several databases and tables, for which I have written scripts for automating data table updates, as well as numerous custom trigger functions. I wish for Teable to be able to connect to these databases and tables to display them as tables and other views without the mandatory use of the Teable API for updates.

Additional Information

An acceptable alternative would be for Teable to provide a database connection scheme that allows full functionality for SELECT/UPDATE/DELETE operations.

I am currently using Nocodb, and you can review how they implement and provide the capability to connect to external databases for the open-source version.

Frankly speaking, although Teable attracts me with some of its features, I will not switch to Teable if it cannot allow me to connect to external databases. As a community user, I may not bring direct profit, but I kindly ask if there is any plan for such feature development, please inform me. This is because I am very interested in migrating to Teable for the following features:

  • Teable allows custom naming of field names in hosted tables, and the displayed names can differ from the database field names. On the contrary, Nocodb messes everything up by changing all database field names to filed, filed1, filed2...
  • Teable can change text fields to single-choice and automatically add all existing text values as options. Meanwhile, changing text fields to single-choice in Nocodb results in all values being displayed as blank. The only solution is to manually add all values as options, which becomes daunting when multiple fields need modification and each has more than ten types of values.
  • Teable seems to have better performance.

"Internal Server Error" when creating a table if fields only contain link field.

Describe the bug

"Internal Server Error" when creating a table if fields only contain link field.

To Reproduce
Steps to reproduce the behavior:

  1. Create a table id: tblXxx.
  2. Use creating table api:
curl -X 'POST' \
  'https://app.teable.io/api/base/bseXxx/table/' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "name": "Primary Link Field",
  "fields": [
      {
        "type": "link",
        "name": "Link Field",
        "options": {
          "relationship": "manyMany",
          "foreignTableId": "tblXxx"
        }
      }
  ],
  "fieldKeyType": "name"
}'

Additional context

The source code position where error happend and console output:

@Injectable()
export class FieldSupplementService {
  async generateSymmetricField(tableId: string, field: LinkFieldDto) {
    // ...
    // lookup field id is the primary field of the table to which it is linked
    const { id: lookupFieldId } = await prisma.field.findFirstOrThrow({
      where: { tableId, isPrimary: true },
      select: { id: true },
    });
    // ...
  }
}
prisma:error 
Invalid `prisma.field.findFirstOrThrow()` invocation:

An operation failed because it depends on one or more records that were required but not found. Expected a record, found none.
ERROR (teable/1197): NotFoundError: No Field found
... ...

[Feature request] OIDC login

Currently only email+password login is available. OIDC will allow teable to have alternatives like Google login, self-hosted OIDC servers, and many others. It is crucial for me to have this alternative for my use case.

Let's Make Teable Even Cooler: GCP Deployment Feature Request 🚀

Hey Teable Team,

Hope you're all doing awesome! First off, huge shoutout for creating Teable—it's seriously been a game-changer for me and many others. But hey, I've got an idea that could take it up a notch!

So, you know how Teable rocks compared to other alternatives? It actually works! But imagine if we could make deploying it even easier by hooking it up with Google Cloud Platform (GCP). How cool would that be?

Here's why I'm buzzing about this idea:

Easy Peasy Deployment: GCP is already where many of us hang out for our projects. So, why not bring Teable into the mix? It'd make setting up Teable a breeze for anyone already familiar with GCP.
Rock-Solid Infrastructure: GCP's got the goods when it comes to infrastructure. By tapping into that, we're talking about Teable running smoother than ever, with all the scalability and reliability perks that come with it.
What the Community Wants: I've been chatting with fellow Teable enthusiasts, and I'm not the only one who's itching for this feature. GCP deployment has been popping up in our conversations more and more.
Stay Ahead of the Curve: Teable's already ahead of the pack, but adding GCP support? That's next-level stuff. It'd put Teable in a league of its own, making it the go-to choice for devs everywhere.
I know making this happen might take some elbow grease, but hey, I'm all in to help out however I can. Whether it's testing, throwing in some code, or just being a hype man—I'm there!

So, what do you say? Let's make Teable even more kickass together. Looking forward to hearing your thoughts!

Error while trying to create an access token

Currently im testing the free saas preview of Teable. I'm trying to generate an access token to connect it to my application. Unfortunattely every time i get a message that says "internal_server_error", with no adtional information. I even tried to recreate the requisition using curl, but still got the error. How can i proceed?

Sem título

[Feature request] Webhooks

Hello, would it be possible to add webhooks on events, eg. send a HTTP POST Request with the payload whenever a new row is added?

docker standalone config is not working with current .env

db_migrate will run successfully, but the Teable app is unable to connect to PostgreSQL with the current .env configuration.

Changing
PRISMA_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}
to
PRISMA_DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@teable_db:5432/${POSTGRES_DB}
fixed the problem for me.

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.