No description
  • Kotlin 97.9%
  • JavaScript 1.4%
  • Rust 0.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Kai Ritthaler 2d1f81e045 Merge branch 'feature/fix-text-color' into 'main'
fix: update text color to black in Markdown editor and toolbar button

See merge request dhbw-se/se-tinf24b6/g3-twonote/twonote-editor!46
2026-07-15 07:05:41 +00:00
.agent/skills/context7 feat: ai helper files 2026-05-26 11:29:25 +00:00
.github/prompts feat: ai helper files 2026-05-26 11:29:25 +00:00
.gitlab/issue_templates docs: Edit Story.md 2025-12-01 13:22:44 +00:00
commonMain/com/mikepenz/markdown/compose/elements feat: markdown renderer 2026-06-17 15:08:28 +00:00
components fix: update text color to black in Markdown editor and toolbar button 2026-07-15 08:47:38 +02:00
composeApp feat: Add background plugin with configurable lines and grid 2026-06-18 06:21:58 +00:00
docker fix: copy pdfjs-bootstrap.js into Docker image 2026-06-18 08:34:45 +02:00
gradle feat: markdown renderer 2026-06-17 15:08:28 +00:00
icons feat: markdown renderer 2026-06-17 15:08:28 +00:00
plugins fix: update text color to black in Markdown editor and toolbar button 2026-07-15 08:47:38 +02:00
plugins-processor feat: kernel and api tests and docs 2026-05-06 13:11:04 +00:00
rust feat: sync 2026-06-14 17:17:25 +00:00
server feat: Add background plugin with configurable lines and grid 2026-06-18 06:21:58 +00:00
shared feat: Add background plugin with configurable lines and grid 2026-06-18 06:21:58 +00:00
.dockerignore feat: sync 2026-06-14 17:17:25 +00:00
.gitignore feat: sync 2026-06-14 17:17:25 +00:00
.gitlab-ci.yml fix: switched pipeline runner to large 2026-06-17 18:33:30 +02:00
AGENTS.md feat: ai helper files 2026-05-26 11:29:25 +00:00
build.gradle.kts feat: markdown renderer 2026-06-17 15:08:28 +00:00
gradle.properties feat: implement OIDC integration with authorization and redirect handling 2026-06-01 17:42:06 +00:00
gradlew feat: dokka configuration 2026-05-03 12:26:51 +02:00
gradlew.bat chore: initial project setup 2026-04-17 12:15:41 +00:00
README.md feat: update readme 2026-06-30 22:04:22 +02:00
settings.gradle.kts feat: Add background plugin with configurable lines and grid 2026-06-18 06:21:58 +00:00

TwoNote

TwoNote is a Kotlin Multiplatform note-taking application built with a microkernel architecture, targeting Android, Web, Desktop (JVM), and Server platforms.

Documentation

For a comprehensive installation guide, please refer to the Manual Installation Documentation.

Architecture

The project follows a microkernel (plugin-based) architecture where almost all functionality is implemented as plugins. This design provides:

  • Extensibility: New features can be added as plugins without modifying the core
  • Modularity: Each plugin is self-contained and can be developed independently
  • Flexibility: Plugins can be enabled/disabled and configured at runtime
  • Maintainability: Clear separation between core kernel and feature implementations

Project Structure

  • /shared - The microkernel core

    • Contains the plugin API and kernel implementation in commonMain
    • Key components:
      • TwoNoteKernel: The core kernel interface
      • PluginManager: Handles plugin lifecycle and registration
      • Plugin & AutoPlugin: Base interfaces for plugin development
      • PluginManifest: Plugin metadata and capabilities
  • /plugins - Plugin modules (all features are plugins!)

    • ui: User interface components and screens
    • settings: Application settings and configuration
    • info: Information and about screens
    • io: Input/output operations and file handling
  • /plugins-processor - KSP-based plugin processor

    • Handles compile-time plugin discovery and code generation
  • /composeApp - Compose Multiplatform application

  • /server - Ktor server application

Creating a Plugin

To create a new plugin:

  1. Create a new module under /plugins
  2. Implement the Plugin or AutoPlugin interface
  3. Define your plugin's PluginManifest with metadata and capabilities
  4. The plugin will be automatically discovered by the plugin processor

Building and Running

Android Application

Build and run the Android app using the run configuration from your IDE's toolbar or from terminal:

# macOS/Linux
./gradlew :composeApp:assembleDebug

# Windows
.\gradlew.bat :composeApp:assembleDebug

Desktop (JVM) Application

Run the desktop application:

# macOS/Linux
./gradlew :composeApp:run

# Windows
.\gradlew.bat :composeApp:run

Server

Run the Ktor server:

# macOS/Linux
./gradlew :server:run

# Windows
.\gradlew.bat :server:run

Web Application

Run the web application:

Wasm target (faster, modern browsers):

# macOS/Linux
./gradlew :composeApp:wasmJsBrowserDevelopmentRun

# Windows
.\gradlew.bat :composeApp:wasmJsBrowserDevelopmentRun

JS target (supports older browsers):

# macOS/Linux
./gradlew :composeApp:jsBrowserDevelopmentRun

# Windows
.\gradlew.bat :composeApp:jsBrowserDevelopmentRun

Technologies