Files
marstemedia/README.md
Bytemalte e355c1014b
All checks were successful
Android Build Final Fixed / build-android (push) Successful in 7m21s
update README with Logo
2026-01-31 11:48:41 +01:00

89 lines
3.3 KiB
Markdown

<p align="center">
<img src="public/logo.png" alt="Maltemedia Logo" width="150">
</p>
# 📰 Maltemedia
![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)
![Rust](https://img.shields.io/badge/Made%20with-Rust-black?logo=rust)
A modern, fast, and secure application to stay updated with the latest news from different worlds — from decentralized social networks to AI-generated insights.
---
## ✨ Key Features
- **📡 Nostr Feed**: Browse decentralized posts from various relays (like Damus and Snort) anonymously using secure, temporary keys.
- **🤖 AI-Powered News**: Get instant tech news summaries generated by powerful AI models via Groq (Llama 3) or OpenRouter.
- **📻 RSS Reader**: Follow your favorite news sources (like NASA or Heise) by adding custom RSS/Atom feeds.
- **📝 Markdown Support**: Enjoy a clean reading experience with full Markdown rendering for all posts and articles.
- **🔒 Private & Secure**: Built with Rust and Tauri v2 for a native, high-performance experience with a minimal footprint.
---
## 📂 Project Structure
The project is split into a **Frontend** (UI) and a **Backend** (System) layer.
### 🌓 Frontend (`src/`)
Built with **Yew** (Rust/Wasm) for a reactive and fast interface.
| File/Folder | Purpose |
| :--- | :--- |
| `main.rs` | Entry point for the WebAssembly application. |
| `app.rs` | Handles client-side routing and the main layout shell. |
| `navbar/` | Contains the side navigation component. |
| `pages/home.rs` | The UI for the Nostr feed display. |
| `pages/news.rs` | The UI for AI News, RSS feeds, and configuration settings. |
### 🌑 Backend (`src-tauri/`)
Built with **Rust** to handle system-level tasks and networking.
| File/Folder | Purpose |
| :--- | :--- |
| `src/main.rs` | The main entry point for the desktop executable. |
| `src/lib.rs` | Configures Tauri plugins and registers all backend commands. |
| `src/home.rs` | Logic for connecting to Nostr relays and fetching posts. |
| `src/news.rs` | Logic for parsing RSS feeds and calling AI APIs (Groq/OpenRouter). |
---
## 🛠️ Tech Stack
- **Framework**: [Tauri v2](https://tauri.app/) (Desktop Bridge)
- **Frontend**: [Yew](https://yew.rs/) (Rust to WebAssembly)
- **Styling**: Vanilla CSS (Modern & Responsive)
- **Networking**: `reqwest` & `feed-rs`
- **Protocol**: `nostr-sdk` for decentralised communication
- **Config**: RON (Rusty Object Notation) for local settings
---
## 🚀 Customization & Extension
### How to add a new Page
1. **Create the UI**: Add a new `.rs` file in `src/pages/`.
2. **Export it**: Add your page to `src/pages/mod.rs`.
3. **Add Route**: Define a new path in `src/app.rs` inside the `Route` enum and `switch` function.
### How to add a Backend Command
1. **Write the Logic**: Create a function in `src-tauri/src/` (e.g., in a new module).
2. **Use `#[tauri::command]`**: Mark your function so it can be called from the frontend.
3. **Register it**: Add the function to the `invoke_handler` in `src-tauri/src/lib.rs`.
### How to change the Design
- Most visual styles are defined in `styles.css` in the project root.
- The Navbar layout can be adjusted in `src/navbar/`.
---
*Made with ❤️ and Rust.*
---
## ⚖️ License
This project is licensed under the **GNU GPL v3**.
See the [LICENSE](LICENSE) file for the full license text.
*Copyright (c) 2026 Bytemalte*