A cross-platform Flutter app to browse, read, and share content from the TransIRC DokuWiki, with full offline support and PDF export capabilities. Which you can compile for your own DokuWiki!
- Browse Any Page: Jump to any wiki page by ID.
- Offline Sync: The app syncs the entire wiki for offline access, so you can read pages anytime, anywhere.
- Dark/Light Theme: Easily switch between dark and light modes.
- Sidebar Menu: Quickly access common pages and sections.
- PDF Export: Export any page or entire section as a PDF, including proper internal linking and emoji support.
- Markdown Rendering: DokuWiki syntax is automatically converted to readable Markdown.
- Safe External Links: External links are disabled for safety (can be customized).
- Flutter 3.x
- Dart 3.x
- hive_flutter - persistent offline storage
- printing - PDF export and sharing
- flutter_markdown - Markdown rendering
- connectivity_plus - Detect online/offline status
- xml_rpc - DokuWiki XML-RPC API client
-
Clone the Repo
git clone https://github.com/TransIRC/DokuFlutter.git cd transirc-wiki-app
-
Install Dependencies
flutter pub get
-
Fonts
- Make sure you have these fonts in your
assets/fonts/
directory: - Register them in your
pubspec.yaml
if not already done.
- Make sure you have these fonts in your
-
Run the App
flutter run
- main.dart: App entry point, theme management, and initial sync.
- screens/home_screen.dart: Home page for selecting wiki pages.
- screens/page_screen.dart: Wiki page viewer, handles offline/online logic, PDF export.
- services/wiki_service.dart: Handles API calls to DokuWiki XML-RPC.
- services/sync_service.dart: Manages offline syncing and cache.
- widgets/page_content.dart: Renders wiki text as Markdown.
- widgets/wiki_sidebar.dart: Sidebar menu with quick-links and theme/PDF controls.
- widgets/wiki_text_parser.dart: Converts DokuWiki links to Markdown links.
- Exports support both plain text and emoji.
- Internal links within a section become clickable anchors in the PDF.
- You can share either the current page or a whole section (namespace) as a PDF.
- API Endpoint: Change the DokuWiki API endpoint in
config/config.dart
. - Sidebar / Start Page: Set default section or menu in
screens/page_screen.dart
orwidgets/wiki_sidebar.dart
. - External Links: Enable or disable external links in
page_content.dart
.
- Improve section detection for PDF export in sidebar.
- Add search by title/keyword.
- Support for page editing (if/when authentication is added).
- More robust error handling and user feedback.