By creating this pull request, I grant the project maintainers an unlimited,
perpetual license to use, modify, and redistribute these contributions under any terms they
choose, including both the AGPLv3 and the Fossorial Commercial license terms. I
represent that I have the right to grant this license for all contributed content.
Summary
Add server side pagination, filtering and sorting for all the main tables.
Screenshots
Name
Screenshots
Sites table
Proxy Resource table
Internal Resource table
Approval feed
User devices table
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
## 📋 Pull Request Information
**Original PR:** https://github.com/fosrl/pangolin/pull/2371
**Author:** [@Fredkiss3](https://github.com/Fredkiss3)
**Created:** 1/29/2026
**Status:** ✅ Merged
**Merged:** 2/14/2026
**Merged by:** [@miloschwartz](https://github.com/miloschwartz)
**Base:** `dev` ← **Head:** `refactor/paginated-tables`
---
### 📝 Commits (10+)
- [`38ac4c5`](https://github.com/fosrl/pangolin/commit/38ac4c59805342a9b139d2bf0e9b93ede0897cc4) 🚧 wip: paginated tables
- [`c89c1a0`](https://github.com/fosrl/pangolin/commit/c89c1a03da759aa675b2c15f968e2e74d39afa9d) 🎨 use prettier for formatting typescript
- [`01a2820`](https://github.com/fosrl/pangolin/commit/01a2820390847edec61898203687092ab6d6c5bf) 🚧 POC: pagination in sites table
- [`d374ea6`](https://github.com/fosrl/pangolin/commit/d374ea6ea655371493e92bb07c6b885df8559ad9) 🚧wip
- [`b04385a`](https://github.com/fosrl/pangolin/commit/b04385a3404267ae6b2cbc30b87623a0a0cb13b8) 🚧 search on table
- [`89695df`](https://github.com/fosrl/pangolin/commit/89695df0129f5e72c2bc2d410dce2066012b938c) 🚧 wip: pagination and search work
- [`066305b`](https://github.com/fosrl/pangolin/commit/066305b09558aee3ed7bace863976afe5324deae) ✨ toggle column sorting & pagination
- [`cda6b67`](https://github.com/fosrl/pangolin/commit/cda6b67befb30b2bb0b501af9814359333c14279) ✨ search, filter & paginate sites table
- [`bb1a375`](https://github.com/fosrl/pangolin/commit/bb1a375484a1a4eccd117d97eb25eded67a2ab5a) ✨ paginate, search & filter resources by enabled
- [`1fc40b3`](https://github.com/fosrl/pangolin/commit/1fc40b301743d54967cdc8acdffdf9ae2dc0856a) ✨ filter by auth state
### 📊 Changes
**45 files changed** (+3348 additions, -1186 deletions)
<details>
<summary>View changed files</summary>
📝 `.vscode/settings.json` (+1 -1)
📝 `messages/en-US.json` (+4 -1)
📝 `package-lock.json` (+13 -1)
📝 `package.json` (+2 -1)
📝 `server/db/pg/schema/schema.ts` (+11 -11)
📝 `server/db/sqlite/schema/schema.ts` (+5 -10)
📝 `server/private/routers/approvals/countApprovals.ts` (+2 -2)
📝 `server/private/routers/approvals/listApprovals.ts` (+108 -53)
📝 `server/private/routers/generatedLicense/generateNewEnterpriseLicense.ts` (+14 -6)
📝 `server/routers/client/index.ts` (+1 -0)
📝 `server/routers/client/listClients.ts` (+160 -78)
➕ `server/routers/client/listUserDevices.ts` (+500 -0)
📝 `server/routers/external.ts` (+7 -0)
📝 `server/routers/integration.ts` (+7 -0)
📝 `server/routers/resource/listResources.ts` (+239 -104)
📝 `server/routers/site/listSites.ts` (+126 -51)
📝 `server/routers/siteResource/createSiteResource.ts` (+1 -1)
📝 `server/routers/siteResource/listAllSiteResourcesByOrg.ts` (+127 -50)
📝 `server/routers/target/handleHealthcheckStatusMessage.ts` (+4 -1)
➕ `server/types/Pagination.ts` (+5 -0)
_...and 25 more files_
</details>
### 📄 Description
## Community Contribution License Agreement
By creating this pull request, I grant the project maintainers an unlimited,
perpetual license to use, modify, and redistribute these contributions under any terms they
choose, including both the AGPLv3 and the Fossorial Commercial license terms. I
represent that I have the right to grant this license for all contributed content.
## Summary
Add server side pagination, filtering and sorting for all the main tables.
## Screenshots
| Name | Screenshots |
| :----------------: | :-----------: |
| Sites table | <video src="https://github.com/user-attachments/assets/20bdff0c-790f-48da-995f-79c98c494d7c"></video> |
| Proxy Resource table | <video src="https://github.com/user-attachments/assets/b604c013-b4f3-4b29-aa06-8cae5c490db8"></video> |
| Internal Resource table | <video src="https://github.com/user-attachments/assets/944b4188-213e-4ac5-9e81-78c166f8af3f"></video> |
| Approval feed | <video src="https://github.com/user-attachments/assets/772a0f14-bd63-47c7-bcff-61af6981f15e"></video> |
| User devices table | <video src="https://github.com/user-attachments/assets/4371067a-5d6f-45d0-8833-f66926941088"></video> |
---
<sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
📋 Pull Request Information
Original PR: https://github.com/fosrl/pangolin/pull/2371
Author: @Fredkiss3
Created: 1/29/2026
Status: ✅ Merged
Merged: 2/14/2026
Merged by: @miloschwartz
Base:
dev← Head:refactor/paginated-tables📝 Commits (10+)
38ac4c5🚧 wip: paginated tablesc89c1a0🎨 use prettier for formatting typescript01a2820🚧 POC: pagination in sites tabled374ea6🚧wipb04385a🚧 search on table89695df🚧 wip: pagination and search work066305b✨ toggle column sorting & paginationcda6b67✨ search, filter & paginate sites tablebb1a375✨ paginate, search & filter resources by enabled1fc40b3✨ filter by auth state📊 Changes
45 files changed (+3348 additions, -1186 deletions)
View changed files
📝
.vscode/settings.json(+1 -1)📝
messages/en-US.json(+4 -1)📝
package-lock.json(+13 -1)📝
package.json(+2 -1)📝
server/db/pg/schema/schema.ts(+11 -11)📝
server/db/sqlite/schema/schema.ts(+5 -10)📝
server/private/routers/approvals/countApprovals.ts(+2 -2)📝
server/private/routers/approvals/listApprovals.ts(+108 -53)📝
server/private/routers/generatedLicense/generateNewEnterpriseLicense.ts(+14 -6)📝
server/routers/client/index.ts(+1 -0)📝
server/routers/client/listClients.ts(+160 -78)➕
server/routers/client/listUserDevices.ts(+500 -0)📝
server/routers/external.ts(+7 -0)📝
server/routers/integration.ts(+7 -0)📝
server/routers/resource/listResources.ts(+239 -104)📝
server/routers/site/listSites.ts(+126 -51)📝
server/routers/siteResource/createSiteResource.ts(+1 -1)📝
server/routers/siteResource/listAllSiteResourcesByOrg.ts(+127 -50)📝
server/routers/target/handleHealthcheckStatusMessage.ts(+4 -1)➕
server/types/Pagination.ts(+5 -0)...and 25 more files
📄 Description
Community Contribution License Agreement
By creating this pull request, I grant the project maintainers an unlimited,
perpetual license to use, modify, and redistribute these contributions under any terms they
choose, including both the AGPLv3 and the Fossorial Commercial license terms. I
represent that I have the right to grant this license for all contributed content.
Summary
Add server side pagination, filtering and sorting for all the main tables.
Screenshots
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.