In short. Belgelik brings a legislation reader, a PDF library and a study planner into one app. Statutes are taken from the official source through Emsal MCP; an incomplete text is not imported. Data stays on its own server, syncs across devices and works offline. It was built for a single user, for personal use.
- What
- Study app and serverFlutter client, Python (FastAPI) server
- Legislation
- 11 core Turkish lawsConstitution, Civil Code, Code of Obligations, Commercial Code, Code of Civil Procedure, Criminal Code, Code of Criminal Procedure, Administrative Procedure Law, Enforcement and Bankruptcy Law, Labour Law, Private International Law
- Platforms
- Android, iOS, macOS, Windows, Linux
- Use
- Personal, single userNo app store release, no accounts, no cloud dependency
- Source code
- github.com/afsozer/belgelikOpen source, AGPL-3.0 license
How does the legislation reader work?
- Text comes from the official source. Belgelik has no crawler of its own and never scrapes a legislation site itself; it takes the text through Emsal MCP's source connection and keeps the raw version.
- Incomplete text is rejected. The official last article number of each law is known. If the full text does not arrive, or the text ends before reaching that article, the law is not imported.
- Article, paragraph, subparagraph. The text is split into parts, sections, articles, paragraphs and subparagraphs; temporary, additional and repeated articles, as well as the “amended”, “repealed”, “added” and “annulled” notes, are preserved. The parser does not alter the source text; instead of silently dropping an article marker it does not recognise, it reports it.
- On the device, offline. Article texts are downloaded to the device and are full-text searchable.
- Amended articles. When a text is imported again, changed articles are detected at article level; the old and new versions can be compared.
- Citations become links. References to laws and articles inside an article's text turn into clickable links. Notes, highlights and bookmarks can be added per article.
The parser is tested against fixed sample texts: the same official text must produce the same article structure every time.
Library and study routine
- PDF library. Books on the server are browsed by folder and searched in full text; table of contents, bookmarks, annotations and notes.
- Pick up where you left off. The page you were reading, annotations and notes travel across devices.
- Study schedule. Sources and laws linked to a topic open with a single tap; a study timer and statistics.
Where is the data kept?
Belgelik has no cloud. Data stays on a server running on the user's own machine; devices connect to the server only over a private network, and the server cannot be reached from the internet.
- Written to the device first. Every change is saved on the device first and sent to the server when a connection is available. In a conflict, the last write wins at record level; deletions are synced too.
- Access token in secure storage. Kept in the Android Keystore, the Apple Keychain or the Windows Credential Store.
- Separate profiles. Each profile has its own database and library folder; the server makes an automatic backup every day.
What it does not do
- It is not a public app. It is not in app stores and has no account system; it works for a single user with its own server.
- It does not cover all legislation. It currently works with 11 core laws.
- It does not search case law. It is a reading and study environment; for case law research there is Emsal MCP.
Technical details
- Client
- Flutter (Dart)Local SQLite and full-text search cache; bottom navigation on mobile, side rail, split view and keyboard shortcuts on desktop
- Server
- Python, FastAPI, SQLiteAuthenticated, profile-scoped endpoints
- Tests
- flutter test, pytestAnalysis and tests with GitHub Actions on every change
- Development
- In phases, each with its own design documentDesign and product decisions are mine; coding done with AI-assisted tools (Claude Code)
Source code
The source code is open on GitHub under the GNU Affero General Public License, version 3 (AGPL-3.0). You may use, modify and distribute it; if you offer a modified version to others over a network, you must make your modified source code available to them under the same license. Security vulnerabilities can be reported privately as described in the repository's SECURITY.md file.
This page describes version 1.14 as of 7 October 2026.