teableio / teable Goto Github PK
View Code? Open in Web Editor NEW✨ The Next Gen Airtable Alternative: No-Code Postgres
Home Page: https://teable.io
License: GNU Affero General Public License v3.0
✨ The Next Gen Airtable Alternative: No-Code Postgres
Home Page: https://teable.io
License: GNU Affero General Public License v3.0
请问是 改那个 .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
when configuring the Application invites the invite link is not adapting the app domain and it shows the local host instead
http://127.0.0.1:3000/invite?invitationId=
while sharing tables link are working fine as it's intended
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
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'])
Teable Android/iOS App can be created using Expo?
Hello,
I use the latest teable docker image, but I cannot paste any cells.
Here is a little screen cast of my issue:
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 💪🏻
Currently docker example covers creating a new Postgres db. I find it difficult to figure out how to use SQLite instead.
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)
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?
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
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:
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).
Whether to support single-column data accumulation
是否支持单列数据累加,类似excel里面的累积公式
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.
I appreciate the idea of the project a lot. But it would be more easy to install it with installation package for regular users.
Is there any plan to support any installation package like NocoDB?
Thanks for creating such good project. ❤
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.
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
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.
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?"
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.
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?
When trying to setup postgres access (yeah!) on my self hosted database I receive and error:
not_found
PUBLIC_DATABASE_PROXY is not found in env
But I can't find anything what this variable should contain.
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.
currently only CSV uploading is supported
it's very likely that the CSV parsing library that is being used also supports TSV.
Describe the bug
"Internal Server Error" when creating a table if fields only contain link field.
To Reproduce
Steps to reproduce the behavior:
id: tblXxx
.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
... ...
How can I connect to a local PostgreSQL database that is not running inside Docker? Please assist.
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!
Followed the dev setup (using SQLite, btw had to edit .env.development.local as well for PRISMA_DATABASE_URL=file:///...
). When I try and sign up on localhost:3000 for the first user I get:
The table `main.users` does not exist in the current database.
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?
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.
** Client (please complete the following information):**
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.
Thanks for creating such a great project. Is there any plan for building a Helm chart to deploy this project on the Kubernetes cluster if so I can help. Let me know
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.
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
i want as below
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.
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:
Expected behavior
I expected to see a list of spaces or a list of bases when requesting to those endpoints.
Client (please complete the following information):
Platform (Please tell us which deployment version you are using)
docker-standalone
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:
Expected behavior
I should be able to filter based on user name in Table B
Relation of Table A and Table B:
After applying filter, the results is blank.
Ideally, I should be seeing 2 records mapped to me.
** Client (please complete the following information):**
Platform (Please tell us which deployment version you are using)
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.
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.
there should be a ui element that show all resgistered user and their role , space usage , rest password , while this can be partly achieved by accessing the Postgres database but the availability in the Owner/Admin ui is more convinient
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.
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.请问怎么连接 不是在docker里面的,本地的pg数据库
求助
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
Like with Airtable and other alternatives I'm missing Row-Level Security (RLS) in Teable. If RLS is already a thing in the project, it'd be great to get some more detailed docs or examples on how to set it up right.
PUBLIC_ORIGIN
Environment Variable in Docker Deployment PracticesI've noticed a discrepancy between the functionality of the PUBLIC_ORIGIN
environment variable and its description in the documentation.
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:
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.
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.
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.
I registered an account specifically to leave a message.
I really like teableio after using it for a while, My only concern is that my form will have many attachments, and I hope to have a Macos app so that all my attachments can be placed locally.
I know it's possible to deploy Docker locally, but I'm not very good at using it.
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
Does teable plan to support ARM64 docker images?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.