Projects · 05

Tensip

An app I built to keep the case files from the UYAP Lawyer Portal, the portal of Türkiye's judicial information system, in a tidy archive on my own computer. It lists the files I represent, downloads the documents of a chosen file and keeps them in sync with the portal, and shows UDF and PDF documents as text inside the app. The name comes from the tensip order, the court's first order that sets a new case in order.

Version 1.1.0 · TypeScript and Node.js · Open source on GitHub (AGPL-3.0) · Türkçe

In short. Tensip consists of an engine that runs on the computer, a local dashboard served by that engine, and a macOS window that displays the dashboard. The lawyer signs in to the portal in their own browser through e-Devlet; Tensip takes over the session and only runs queries and downloads documents on the portal. The archive stays on the computer. It is not an official application and has no connection to the Ministry of Justice or UYAP.

What
Local archive app for the UYAP Lawyer PortalEngine, command line, local dashboard and macOS window
Scope
Civil, criminal and enforcement filesAdministrative court and high court queries are out of scope
Platform
macOSChrome, Brave or Edge is needed to sign in
Data
On the lawyer's own computerThe app connects to no server other than UYAP
Source code
github.com/afsozer/tensipOpen source, AGPL-3.0 license

What does it do?

  • File list. The civil, criminal and enforcement files the lawyer represents are listed with a single button, without entering a court, year and number; the list can be searched and filtered locally.
  • Archive and sync. The documents of a chosen file are downloaded into a local folder. Later syncs fetch only new or changed documents and mark them; attachments sit under their main document. Up to fifty files can be selected and synced one after another.
  • Document preview. UDF and text-layer PDF documents are read as text inside the app, without opening them separately.
  • File details. Case history, parties and account details are shown on the file screen.
  • Calendar. Upcoming hearings and site inspections are listed by day and can be exported to macOS Calendar. Party names are left out of exported entries by default, because calendar sync takes client names off the device.
  • Audit and repair. Missing, damaged or duplicate records in the archive are found; only those that can be fixed safely are repaired, and the reason is given for the rest.

How does it treat the portal?

The Lawyer Portal's user agreement forbids placing unusual load on the system with software, and access to the portal can be blocked for a breach. I built Tensip to stay within that rule.

  • One request at a time. Every request to the portal goes through a single queue; the next one does not leave before the previous one has finished.
  • Waiting between requests. Between two requests it waits for a period between 3 and 5 seconds, chosen anew each time.
  • Daily cap. At most 500 portal requests and 40 file jobs are made per day. When the cap is reached no request is sent, and syncing resumes the next day where it left off.
  • The portal's own limits. Limits such as the case history query, which the portal accepts once an hour, are respected; when a result is shown from the cache, the time it was fetched is shown too.
  • Silence during sign-in. No request is sent to the portal while the lawyer completes the e-Devlet steps; the session is detected from the browser's own traffic.

What it does not do

  • It sends nothing to the portal. It does not upload documents, petitions or any other content, and it does not sign anything.
  • It is not an official application. It was not developed or approved by the Ministry of Justice, UYAP or any bar association.
  • It does not cover every kind of court. Administrative court files and high court queries are not listed.

Technical details

Engine
Node.js 22, TypeScriptNo npm runtime dependencies; the dashboard and command line are reachable only from the same computer
Window
Swift, AppKit and WebKitShows the local dashboard in a macOS app window
Documents
UDF, PDF and HTMLText is extracted locally; PDFs use pdftotext
Tests
678 tests against a mock UYAP serverThe tests never connect to the real portal
Development
Design and product decisions are mineCoding with AI-assisted tools (Claude Code); I have kept the archive of my own files with it since September 2026

Source code

The source code is public on GitHub under the GNU Affero General Public License, version 3 (AGPL-3.0). You may use, modify and distribute it; if you distribute a modified version or offer it to others as a service over a network, you must also make your modified source code available under the same license. The repository also includes a demo environment for trying the app with made-up files, without connecting to the real portal. The app's interface and documentation are in Turkish.

github.com/afsozer/tensip

This page describes version 1.1.0 as of 8 October 2026.

About Alpaslan Fatih Sözer (in Turkish)