4.6 KiB
4.6 KiB
Ormentia Markus
⚠️ This project is currently under active development and may have bugs or incomplete features. Use at your own discretion.
A modern, cross-platform markdown editor built with Avalonia UI and .NET 10.
✨ Features
- Multi-tab Interface - Work with multiple markdown files simultaneously
- Live Preview - Toggle between raw markdown and rendered preview
- Rich Formatting - Quick access to common markdown formatting (bold, italic, headings, lists, code, quotes)
- Syntax Highlighting - Code-aware editor with line numbers
- Cross-Platform - Runs on Windows, macOS, and Linux
- Theme Support - Toggle between light and dark modes
- Adjustable Text Size - Small, Medium, and Large text size options
- PDF Export - Export your markdown documents to PDF format
- Session Persistence - Automatically restores your open files and tabs
🚀 Quick Start
Prerequisites
- .NET 10.0 SDK or later
Installation
- Clone the repository:
git clone https://github.com/yourusername/ormentia-markus.git
cd ormentia-markus/src/DesktopApp
- Build the project:
dotnet build
- Run the application:
dotnet run
Building for Distribution
macOS (ARM64):
cd src/DesktopApp
dotnet publish -c Release -r osx-arm64
macOS (Intel):
cd src/DesktopApp
dotnet publish -c Release -r osx-x64
Windows:
cd src/DesktopApp
dotnet publish -c Release -r win-x64
Linux:
cd src/DesktopApp
dotnet publish -c Release -r linux-x64
📸 Screenshots
Coming soon - Screenshots will be added as the UI stabilizes.
🏗️ Architecture
This application follows clean architecture principles with clear separation of concerns:
- MVVM Pattern - Using CommunityToolkit.Mvvm for data binding
- Service Layer - Business logic abstracted into testable services
- Strategy Pattern - Modular markdown rendering system
- Dependency Injection - Services injected via constructors
Project Structure
ormentia-markus/
├── LICENSE # GPLv3 License
├── README.md # This file
└── src/
└── DesktopApp/ # Main application code
├── Constants/ # Application-wide constants
├── Models/ # Domain models
├── Services/ # Business logic services
├── ViewModels/ # MVVM view models
└── Views/ # UI components and renderers
The application uses:
- MVVM Pattern with CommunityToolkit.Mvvm
- Service Layer for business logic abstraction
- Strategy Pattern for modular markdown rendering
- Dependency Injection via constructor parameters
🛠️ Development
Key Technologies
- Avalonia UI 11.3.8 - Cross-platform UI framework
- AvaloniaEdit 11.3.0 - Text editor with syntax highlighting
- Markdig 0.43.0 - Markdown parsing
- CommunityToolkit.Mvvm 8.2.1 - MVVM helpers
- QuestPDF 2025.7.4 - PDF generation
- Font Awesome - Icon library
Code Style
- XML documentation for all public APIs
- Nullable reference types enabled
- Consistent async/await patterns
- Constants instead of magic values
📋 Roadmap
- Spell checking
- Find and replace
- Export to HTML
- Custom theme colors
- Plugin system
- Git integration
- Local file browser for images
- Notification service for errors
- Settings persistence
- Recent files list
- Keyboard shortcuts customization
- Table insertion helper
🤝 Contributing
Contributions are welcome! Please follow these guidelines:
- Follow the established architecture patterns
- Add XML documentation for all public APIs
- Use services for business logic
- Keep ViewModels focused on presentation
- Add constants instead of magic values
- Maintain error handling consistency
📄 License
This project is licensed under the GNU General Public License v3.0 (GPLv3). See the LICENSE file for details.
🙏 Acknowledgments
- Built with Avalonia UI
- Markdown parsing by Markdig
- Icons by Font Awesome
Note: This project is under active development. Features may change, and bugs may exist. Please report issues on GitHub.