165 lines
4.6 KiB
Markdown
165 lines
4.6 KiB
Markdown
# 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](https://dotnet.microsoft.com/download) or later
|
|
|
|
### Installation
|
|
|
|
1. Clone the repository:
|
|
```bash
|
|
git clone https://github.com/yourusername/ormentia-markus.git
|
|
cd ormentia-markus/src/DesktopApp
|
|
```
|
|
|
|
2. Build the project:
|
|
```bash
|
|
dotnet build
|
|
```
|
|
|
|
3. Run the application:
|
|
```bash
|
|
dotnet run
|
|
```
|
|
|
|
### Building for Distribution
|
|
|
|
**macOS (ARM64):**
|
|
```bash
|
|
cd src/DesktopApp
|
|
dotnet publish -c Release -r osx-arm64
|
|
```
|
|
|
|
**macOS (Intel):**
|
|
```bash
|
|
cd src/DesktopApp
|
|
dotnet publish -c Release -r osx-x64
|
|
```
|
|
|
|
**Windows:**
|
|
```bash
|
|
cd src/DesktopApp
|
|
dotnet publish -c Release -r win-x64
|
|
```
|
|
|
|
**Linux:**
|
|
```bash
|
|
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:
|
|
|
|
1. Follow the established architecture patterns
|
|
2. Add XML documentation for all public APIs
|
|
3. Use services for business logic
|
|
4. Keep ViewModels focused on presentation
|
|
5. Add constants instead of magic values
|
|
6. Maintain error handling consistency
|
|
|
|
## 📄 License
|
|
|
|
This project is licensed under the GNU General Public License v3.0 (GPLv3). See the [LICENSE](LICENSE) file for details.
|
|
|
|
## 🙏 Acknowledgments
|
|
|
|
- Built with [Avalonia UI](https://avaloniaui.net/)
|
|
- Markdown parsing by [Markdig](https://github.com/xoofx/markdig)
|
|
- Icons by [Font Awesome](https://fontawesome.com/)
|
|
|
|
---
|
|
|
|
**Note**: This project is under active development. Features may change, and bugs may exist. Please report issues on GitHub.
|