f910fa2f469a258eb9cb183e4c53b287fe4fadf2
K-Notes
A modern, self-hosted note-taking application built with performance, security, and clean architecture in mind.
Features
- Authentication: Secure user registration and login.
- Note Management: Create, edit, pin, archive, and delete notes.
- Rich Text: Markdown support for note content.
- Version History: Track changes, view history, note diffs, download versions, and restore previous states.
- Organization: Tagging system for easy filtering.
- Theme: Dark and Light mode support.
- Responsive: Mobile-friendly UI built with Tailwind CSS.
- Architecture:
- Backend: Hexagonal Architecture (Domain, Infra, API layers) in Rust.
- Frontend: Modern React with TypeScript and Vite.
- Deployment: Full Docker support with
compose.yml.
Tech Stack
Backend
- Language: Rust
- Framework: Axum
- Database: SQLite (SQLx)
- Dependency Injection: Manual wiring for clear boundaries
Frontend
- Framework: React + Vite
- Language: TypeScript
- Styling: Tailwind CSS + Shadcn UI
- State Management: TanStack Query (React Query)
Getting Started
Docker (Recommended)
Run the entire stack with a single command:
docker compose up -d --build
- Frontend: http://localhost:8080
- Backend: http://localhost:3000
The frontend is automatically configured to talk to the backend.
Local Development
Backend
- Navigate to the
notes-apidirectory (or root). - Set up the environment variables (see
.env.example). - Run the server:
cargo run -p notes-api
Frontend
- Navigate to
k-notes-frontend. - Install dependencies:
bun install
- Run the dev server:
bun dev
🏗️ Project Structure
├── notes-api # API Interface (Axum, HTTP routes)
├── notes-domain # Core Business Logic (Entities, Services, Ports)
├── notes-infra # Infrastructure (Database adapters, Repositories)
├── k-notes-frontend # React Frontend Application
├── migrations # SQLx Database Migrations
└── compose.yml # Docker Composition
License
MIT
Description
Languages
TypeScript
58%
Rust
39.6%
CSS
0.8%
HTML
0.6%
Dockerfile
0.4%
Other
0.6%
