Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2026 Ngo Quoc Dat (TablePro)
Copyright (c) 2026 Dat Ngo Quoc (TablePro)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion LICENSE-CONTENT
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)

Copyright (c) 2026 Ngo Quoc Dat (TablePro)
Copyright (c) 2026 Dat Ngo Quoc (TablePro)

This licence covers the EDITORIAL CONTENT of this repository:

Expand Down
5 changes: 3 additions & 2 deletions app/Http/Controllers/BlogController.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,9 @@
* Two kinds of post: release announcements, an English-only archive, and
* guides, each with a Vietnamese version under `resources/blog/vi`. `/vi/blog`
* lists the Vietnamese guides and the English release posts, each of those
* marked as English and linked at its English URL; it renders without being
* indexed, which `seo.indexable: false` in `content/vi/blog.json` decides.
* marked as English and linked at its English URL, and is indexed with `/blog`
* as its alternate. Every other language's index lists only the English posts
* and is not indexed (`seo.indexable: false` in its `blog.json`).
* `/vi/blog/{slug}` never wraps an English body: `EnsurePageRenders` answers
* it with a 404 that links the English post by its title
* (`MissingTranslationException::forEntry()`).
Expand Down
4 changes: 2 additions & 2 deletions app/Support/Seo/PageEntry.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
* One public page, as every SEO surface sees it.
*
* A page lists the locales it **renders** in and, separately, the locales it is
* **indexed** in. They differ on purpose: `/vi/blog` answers 200 with
* Vietnamese chrome but carries `noindex, follow`, because what it lists is
* **indexed** in. They differ on purpose: `/de/blog` answers 200 with
* German chrome but carries `noindex, follow`, because what it lists is
* English. The canonical, the robots value, hreflang, the sitemap, the OG card
* and the language switcher are all derived from these two lists, so none of
* them can disagree with another.
Expand Down
5 changes: 2 additions & 3 deletions app/Support/Seo/StaticPages.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@
*
* Each renders in a locale when `resources/data/content/{locale}/{page}.json`
* exists, and is indexable there unless that file sets `seo.indexable` to
* false. That flag is how `/vi/blog` renders without being indexed: it lives in
* the content file, not in code, so the owner can flip it once Vietnamese
* summaries exist.
* false. That flag is how `/de/blog`, which lists only English posts, renders
* without being indexed: it lives in the content file, not in code.
*
* A page with no content file in any locale is not a page: `find()` returns
* null, the registry knows no such page, and the route answers 404.
Expand Down
Binary file modified public/og/blog/tablepro-for-iphone.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion resources/blog/tablepro-for-iphone.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ date: 2026-09-22
release: "TablePro for iPhone and iPad 1.0"
author: TablePro Team
tags: [release, ios, ipados, icloud-sync]
ogPunchline: Ten engines on the phone. Every driver built in.
ogPunchline: Every driver built in. Nothing downloads when you pick an engine.
---

TablePro for iPhone and iPad is on the App Store. It is free, there are no in-app purchases, and it needs iOS or iPadOS 18.
Expand Down
9 changes: 9 additions & 0 deletions resources/css/app.css
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,15 @@ html {
line-break: strict;
}

/*
* A German compound wider than a phone ("Datenschutzerklärung" at 320px) breaks at a syllable, with a hyphen.
* Words under 12 letters stay whole, so a name such as TablePro or DynamoDB is never split.
*/
:is(h1, h2, h3, h4, h5, h6):lang(de) {
hyphens: auto;
hyphenate-limit-chars: 12 4 4;
}

/*
* ---------------------------------------------------------------------------
* The banner, the sticky header and anchor scrolling
Expand Down
1 change: 1 addition & 0 deletions resources/data/content/de/about.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"brand": {
"title": "Marke",
"name": "Der Name wird TablePro geschrieben: ein Wort, mit großem T und großem P.",
"usage": "Du darfst den Namen TablePro und das Logo verwenden, um auf TablePro zu verweisen, etwa in Artikeln, Tutorials, Testberichten, Verzeichnissen und Integrationen. Du darfst das Logo nicht verändern, nicht für ein anderes Produkt verwenden und nicht den Eindruck erwecken, dass TablePro dich empfiehlt. Für alles andere schreib eine E-Mail an <email>{email}</email>.",
"logo": "Logo herunterladen (PNG, {width} × {height})",
"alt": "TablePro-Logo"
}
Expand Down
4 changes: 2 additions & 2 deletions resources/data/content/de/blog.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"seo": {
"title": "Blog",
"description": "Anleitungen für Datenbanken auf dem Mac und Versionsankündigungen vom TablePro-Team, auf Englisch: Neuerungen und Fehlerbehebungen jeder Version.",
"description": "Anleitungen für Datenbanken auf dem Mac und Versionsankündigungen von TablePro, auf Englisch: Neuerungen und Fehlerbehebungen jeder Version.",
"indexable": false
},
"og": {
"kicker": "Blog",
"title": "Anleitungen und Versionsankündigungen vom TablePro-Team"
"title": "Anleitungen und Versionsankündigungen von TablePro"
},
"header": {
"title": "Blog",
Expand Down
1 change: 1 addition & 0 deletions resources/data/content/en/about.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"brand": {
"title": "Brand",
"name": "The name is written TablePro: one word, with a capital T and a capital P.",
"usage": "You may use the TablePro name and logo to refer to TablePro, for example in articles, tutorials, reviews, listings and integrations. You may not alter the logo, use it for another product, or suggest that TablePro endorses you. For anything else, email <email>{email}</email>.",
"logo": "Download the logo (PNG, {width} × {height})",
"alt": "TablePro logo"
}
Expand Down
4 changes: 2 additions & 2 deletions resources/data/content/en/blog.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"seo": {
"title": "Blog",
"description": "Guides to working with databases on a Mac, and release announcements from the TablePro team on what each version adds and fixes."
"description": "Guides to working with databases on a Mac, and release announcements on what each version of TablePro adds and fixes."
},
"og": {
"kicker": "Blog",
"title": "Guides and release announcements from the TablePro team"
"title": "TablePro guides and release announcements"
},
"header": {
"title": "Blog",
Expand Down
1 change: 1 addition & 0 deletions resources/data/content/es/about.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"brand": {
"title": "Marca",
"name": "El nombre se escribe TablePro: una sola palabra, con T y P mayúsculas.",
"usage": "Puedes usar el nombre y el logotipo de TablePro para referirte a TablePro, por ejemplo en artículos, tutoriales, reseñas, directorios e integraciones. No puedes modificar el logotipo, usarlo para otro producto ni dar a entender que TablePro te respalda. Para cualquier otro uso, escribe a <email>{email}</email>.",
"logo": "Descargar el logotipo (PNG, {width} × {height})",
"alt": "Logotipo de TablePro"
}
Expand Down
4 changes: 2 additions & 2 deletions resources/data/content/es/blog.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"seo": {
"title": "Blog",
"description": "Guías para trabajar con bases de datos en Mac y anuncios de versiones del equipo de TablePro, en inglés: novedades y correcciones de cada versión.",
"description": "Guías para trabajar con bases de datos en Mac y anuncios de versiones de TablePro, en inglés: novedades y correcciones de cada versión.",
"indexable": false
},
"og": {
"kicker": "Blog",
"title": "Guías y anuncios de versiones del equipo de TablePro"
"title": "Guías y anuncios de versiones de TablePro"
},
"header": {
"title": "Blog",
Expand Down
1 change: 1 addition & 0 deletions resources/data/content/fr/about.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"brand": {
"title": "Marque",
"name": "Le nom s’écrit TablePro, en un seul mot, avec un T et un P majuscules.",
"usage": "Vous pouvez utiliser le nom et le logo TablePro pour parler de TablePro, par exemple dans des articles, des tutoriels, des tests, des annuaires et des intégrations. Vous ne pouvez pas modifier le logo, l’utiliser pour un autre produit ni laisser entendre que TablePro vous recommande. Pour toute autre utilisation, écrivez à <email>{email}</email>.",
"logo": "Télécharger le logo (PNG, {width} × {height})",
"alt": "Logo de TablePro"
}
Expand Down
4 changes: 2 additions & 2 deletions resources/data/content/fr/blog.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"seo": {
"title": "Blog",
"description": "Guides pour utiliser vos bases de données sur Mac et annonces de versions de l’équipe TablePro, en anglais : nouveautés et corrections de chaque version.",
"description": "Guides pour utiliser vos bases de données sur Mac et annonces de versions de TablePro, en anglais : nouveautés et corrections de chaque version.",
"indexable": false
},
"og": {
"kicker": "Blog",
"title": "Guides et annonces de versions de l’équipe TablePro"
"title": "Guides et annonces de versions de TablePro"
},
"header": {
"title": "Blog",
Expand Down
1 change: 1 addition & 0 deletions resources/data/content/id/about.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"brand": {
"title": "Merek",
"name": "Nama ini ditulis TablePro: satu kata, dengan huruf T dan P kapital.",
"usage": "Anda boleh memakai nama dan logo TablePro untuk merujuk ke TablePro, misalnya di artikel, tutorial, ulasan, direktori aplikasi, dan integrasi. Anda tidak boleh mengubah logo, memakainya untuk produk lain, atau mengesankan bahwa TablePro mendukung Anda. Untuk keperluan lain, kirim email ke <email>{email}</email>.",
"logo": "Unduh logo (PNG, {width} × {height})",
"alt": "Logo TablePro"
}
Expand Down
4 changes: 2 additions & 2 deletions resources/data/content/id/blog.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"seo": {
"title": "Blog",
"description": "Panduan bekerja dengan database di Mac dan pengumuman rilis dari tim TablePro, dalam bahasa Inggris: tambahan dan perbaikan setiap versi.",
"description": "Panduan bekerja dengan database di Mac dan pengumuman rilis TablePro, dalam bahasa Inggris: tambahan dan perbaikan setiap versi.",
"indexable": false
},
"og": {
"kicker": "Blog",
"title": "Panduan dan pengumuman rilis dari tim TablePro"
"title": "Panduan dan pengumuman rilis TablePro"
},
"header": {
"title": "Blog",
Expand Down
1 change: 1 addition & 0 deletions resources/data/content/it/about.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"brand": {
"title": "Marchio",
"name": "Il nome si scrive TablePro, in una sola parola, con la T e la P maiuscole.",
"usage": "Puoi usare il nome e il logo di TablePro per fare riferimento a TablePro, ad esempio in articoli, tutorial, recensioni, directory e integrazioni. Non puoi modificare il logo, usarlo per un altro prodotto o lasciar intendere un sostegno da parte di TablePro. Per qualsiasi altro uso, scrivi a <email>{email}</email>.",
"logo": "Scarica il logo (PNG, {width} × {height})",
"alt": "Logo di TablePro"
}
Expand Down
4 changes: 2 additions & 2 deletions resources/data/content/it/blog.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"seo": {
"title": "Blog",
"description": "Guide per lavorare con i database su Mac e annunci di rilascio del team TablePro, in inglese: aggiunte e correzioni di ogni versione.",
"description": "Guide per lavorare con i database su Mac e annunci di rilascio di TablePro, in inglese: aggiunte e correzioni di ogni versione.",
"indexable": false
},
"og": {
"kicker": "Blog",
"title": "Guide e annunci di rilascio del team TablePro"
"title": "Guide e annunci di rilascio di TablePro"
},
"header": {
"title": "Blog",
Expand Down
1 change: 1 addition & 0 deletions resources/data/content/ja/about.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"brand": {
"title": "ブランド",
"name": "名前は TablePro と表記します。1 語で、T と P は大文字です。",
"usage": "TablePro に言及するためであれば、記事、チュートリアル、レビュー、ソフトウェア一覧、連携機能などで TablePro の名前とロゴを使用できます。ロゴの改変、ほかの製品での使用、TablePro が推薦しているかのような表示はできません。それ以外の用途については <email>{email}</email> までご連絡ください。",
"logo": "ロゴをダウンロード(PNG、{width} × {height})",
"alt": "TablePro のロゴ"
}
Expand Down
4 changes: 2 additions & 2 deletions resources/data/content/ja/blog.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"seo": {
"title": "ブログ",
"description": "Mac でデータベースを扱うためのガイドと、TablePro チームからのリリースのお知らせ(英語)。各バージョンで追加・修正した内容も紹介します。",
"description": "Mac でデータベースを扱うためのガイドと、TablePro のリリースのお知らせ(英語)。各バージョンで追加・修正した内容も紹介します。",
"indexable": false
},
"og": {
"kicker": "ブログ",
"title": "TablePro チームからのガイドとリリースのお知らせ"
"title": "TablePro のガイドとリリースのお知らせ"
},
"header": {
"title": "ブログ",
Expand Down
1 change: 1 addition & 0 deletions resources/data/content/ko/about.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"brand": {
"title": "브랜드",
"name": "이름은 TablePro로 표기합니다. 한 단어로 쓰며 T와 P는 대문자입니다.",
"usage": "TablePro를 언급하는 용도라면 기사, 튜토리얼, 리뷰, 소프트웨어 목록, 연동 기능 등에서 TablePro 이름과 로고를 사용할 수 있습니다. 로고를 변경하거나 다른 제품에 사용하거나 TablePro가 보증하는 것처럼 표시해서는 안 됩니다. 그 밖의 용도는 <email>{email}</email>로 문의해 주세요.",
"logo": "로고 다운로드(PNG, {width} × {height})",
"alt": "TablePro 로고"
}
Expand Down
4 changes: 2 additions & 2 deletions resources/data/content/ko/blog.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"seo": {
"title": "블로그",
"description": "Mac에서 데이터베이스를 다루는 가이드와 TablePro 팀의 릴리스 소식(영어): 각 버전의 추가 및 수정 사항을 소개합니다.",
"description": "Mac에서 데이터베이스를 다루는 가이드와 TablePro 릴리스 소식(영어): 각 버전의 추가 및 수정 사항을 소개합니다.",
"indexable": false
},
"og": {
"kicker": "블로그",
"title": "TablePro 팀의 가이드와 릴리스 소식"
"title": "TablePro 가이드와 릴리스 소식"
},
"header": {
"title": "블로그",
Expand Down
2 changes: 1 addition & 1 deletion resources/data/content/ko/faq.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
"id": "open-source",
"question": "TablePro는 오픈 소스인가요?",
"answer": [
"네. 두 앱 모두 유료 기능 코드를 포함해 AGPLv3로 공개되며 하나의 <source>GitHub 저장소</source>에 있습니다. 소스에서 직접 빌드해도 당사가 배포하는 빌드와 같은 방식으로 라이선스를 확인합니다."
"네. 두 앱 모두 유료 기능 코드를 포함해 AGPLv3로 공개되며 하나의 <source>GitHub 저장소</source>에 있습니다. 소스에서 직접 빌드해도 공식 배포 빌드와 같은 방식으로 라이선스를 확인합니다."
]
},
{
Expand Down
1 change: 1 addition & 0 deletions resources/data/content/pt-BR/about.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"brand": {
"title": "Marca",
"name": "O nome se escreve TablePro, em uma só palavra, com T e P maiúsculos.",
"usage": "Você pode usar o nome e o logo do TablePro para se referir ao TablePro, por exemplo em artigos, tutoriais, análises, diretórios e integrações. Não é permitido alterar o logo, usá-lo em outro produto ou sugerir que o TablePro endossa você. Para qualquer outro uso, escreva para <email>{email}</email>.",
"logo": "Baixar o logo (PNG, {width} × {height})",
"alt": "Logo do TablePro"
}
Expand Down
4 changes: 2 additions & 2 deletions resources/data/content/pt-BR/blog.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"seo": {
"title": "Blog",
"description": "Guias para trabalhar com bancos de dados no Mac e anúncios de versões da equipe TablePro, em inglês: o que cada versão adiciona e corrige.",
"description": "Guias para trabalhar com bancos de dados no Mac e anúncios de versões do TablePro, em inglês: o que cada versão adiciona e corrige.",
"indexable": false
},
"og": {
"kicker": "Blog",
"title": "Guias e anúncios de versões da equipe TablePro"
"title": "Guias e anúncios de versões do TablePro"
},
"header": {
"title": "Blog",
Expand Down
1 change: 1 addition & 0 deletions resources/data/content/vi/about.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"brand": {
"title": "Thương hiệu",
"name": "Tên được viết là TablePro: một từ, chữ T và chữ P viết hoa.",
"usage": "Bạn có thể dùng tên và logo TablePro để nói đến TablePro, chẳng hạn trong bài viết, hướng dẫn, bài đánh giá, danh mục phần mềm và các tích hợp. Bạn không được sửa logo, dùng logo cho một sản phẩm khác, hay ngụ ý rằng TablePro bảo chứng cho bạn. Trường hợp khác, bạn hãy gửi email tới <email>{email}</email>.",
"logo": "Tải về logo (PNG, {width} × {height})",
"alt": "Logo TablePro"
}
Expand Down
5 changes: 2 additions & 3 deletions resources/data/content/vi/blog.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
{
"seo": {
"title": "Blog",
"description": "Hướng dẫn làm việc với cơ sở dữ liệu trên Mac, và các bài thông báo phát hành của TablePro (tiếng Anh) về những gì mỗi phiên bản thêm và sửa.",
"indexable": false
"description": "Hướng dẫn làm việc với cơ sở dữ liệu trên Mac, và các bài thông báo phát hành của TablePro (tiếng Anh) về những gì mỗi phiên bản thêm và sửa."
},
"og": {
"kicker": "Blog",
"title": "Hướng dẫn và thông báo phát hành từ đội ngũ TablePro"
"title": "Hướng dẫn và thông báo phát hành của TablePro"
},
"header": {
"title": "Blog",
Expand Down
1 change: 1 addition & 0 deletions resources/data/content/zh-Hans/about.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"brand": {
"title": "品牌",
"name": "名称写作 TablePro:一个词,T 和 P 大写。",
"usage": "您可以在文章、教程、评测、软件目录和集成中使用 TablePro 的名称和徽标来指代 TablePro。请勿修改徽标、将其用于其他产品,或暗示 TablePro 为您背书。其他用途请发送邮件至 <email>{email}</email>。",
"logo": "下载徽标(PNG,{width} × {height})",
"alt": "TablePro 徽标"
}
Expand Down
4 changes: 2 additions & 2 deletions resources/data/content/zh-Hans/blog.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"seo": {
"title": "博客",
"description": "在 Mac 上使用数据库的指南,以及 TablePro 团队的版本发布公告(英语):介绍各版本新增功能和修复内容。",
"description": "在 Mac 上使用数据库的指南,以及 TablePro 的版本发布公告(英语):介绍各版本新增功能和修复内容。",
"indexable": false
},
"og": {
"kicker": "博客",
"title": "TablePro 团队的指南与版本发布公告"
"title": "TablePro 的指南与版本发布公告"
},
"header": {
"title": "博客",
Expand Down
1 change: 1 addition & 0 deletions resources/data/content/zh-Hant/about.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"brand": {
"title": "品牌",
"name": "名稱寫作 TablePro:一個詞,T 與 P 大寫。",
"usage": "您可以在文章、教學、評測、軟體目錄和整合中使用 TablePro 的名稱和標誌來指稱 TablePro。請勿修改標誌、將其用於其他產品,或暗示 TablePro 為您背書。其他用途請寄送郵件至 <email>{email}</email>。",
"logo": "下載標誌(PNG,{width} × {height})",
"alt": "TablePro 標誌"
}
Expand Down
4 changes: 2 additions & 2 deletions resources/data/content/zh-Hant/blog.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"seo": {
"title": "部落格",
"description": "在 Mac 上使用資料庫的指南,以及 TablePro 團隊的版本發佈公告(英文):介紹各版本新增功能與修正內容。",
"description": "在 Mac 上使用資料庫的指南,以及 TablePro 的版本發佈公告(英文):介紹各版本新增功能與修正內容。",
"indexable": false
},
"og": {
"kicker": "部落格",
"title": "TablePro 團隊的指南與版本發佈公告"
"title": "TablePro 的指南與版本發佈公告"
},
"header": {
"title": "部落格",
Expand Down
2 changes: 1 addition & 1 deletion resources/data/content/zh-Hant/compare/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@
"no": "否"
},
"currency": {
"pattern": "${amount}",
"pattern": "US${amount}",
"decimal": ".",
"group": ","
},
Expand Down
Loading