Skip to content

veilasius/Layered

Repository files navigation

Layered πŸƒ

A beautiful, modern note-taking and finance tracking application built with Tauri, React, and TypeScript. Layered is a simplified Notion/Obsidian clone with essential features, combining markdown note-taking with basic financial management in a sleek, customizable interface.

Note: This is my first Tauri application and my first time working with Rust! It's a learning project that focuses on core functionality rather than feature completeness.

Layered App Screenshot

✨ Features

πŸ“ Note Taking

  • Markdown Support: Full GitHub Flavored Markdown with live preview
  • Tag System: Organize notes with customizable tags
  • Real-time Search: Quickly find notes with instant search
  • Auto-save: Never lose your work with automatic saving
  • File-based Storage: All notes stored as JSON files for portability

πŸ’° Finance Tracking

  • Multi-currency Support: Built with Euro (€) support
  • Category Management: Income, Expenses, Investments, and Savings
  • Visual Statistics: Beautiful overview cards with totals and net worth
  • CSV Export: Export your financial data to Excel/CSV
  • Transaction Notes: Add detailed notes to each financial entry

🎨 Customization

  • 5 Accent Colors: Choose from Salad Green, Ocean Blue, Royal Purple, Rose Pink, or Sunset Orange
  • Dark/Light Mode: Seamless theme switching
  • Custom Storage: Choose where your data is stored
  • Responsive Design: Beautiful on all screen sizes

πŸ”§ Technical Features

  • Native Performance: Built with Tauri for optimal speed
  • Cross-platform: Works on macOS, Windows, and Linux
  • Type-safe: Full TypeScript implementation
  • Modern UI: Tailwind CSS with glass morphism effects
  • Secure: No external dependencies for data storage

πŸš€ Getting Started

Prerequisites

Installation

  1. Clone the repository

    git clone https://github.com/smailiukas/layered.git
    cd layered
  2. Install dependencies

    npm install
  3. Run in development mode

    npm run tauri dev
  4. Build for production

    npm run tauri build

πŸ“ Project Structure

layered/
β”œβ”€β”€ src/                    # React frontend
β”‚   β”œβ”€β”€ components/         # React components
β”‚   β”œβ”€β”€ contexts/          # React contexts (Theme)
β”‚   β”œβ”€β”€ types.ts           # TypeScript type definitions
β”‚   └── styles.css         # Global styles
β”œβ”€β”€ src-tauri/             # Rust backend
β”‚   β”œβ”€β”€ src/               # Rust source code
β”‚   β”œβ”€β”€ icons/             # App icons
β”‚   └── tauri.conf.json    # Tauri configuration
└── package.json           # Node.js dependencies

🎯 Usage

Creating Notes

  1. Click the "New Note" button in the sidebar
  2. Add a title and start writing in Markdown
  3. Use tags to organize your notes
  4. Toggle between edit and preview modes

Managing Finances

  1. Switch to the Finance tab
  2. Click "Add Entry" to create transactions
  3. Categorize as Income, Expense, Investment, or Savings
  4. View your financial overview in the statistics cards
  5. Export data using the "Export CSV" button

Customizing Settings

  1. Click the settings icon in the header
  2. Choose your preferred accent color
  3. Set custom storage locations for notes and finance data
  4. Settings are automatically saved

πŸ› οΈ Development

Tech Stack

  • Frontend: React 18, TypeScript, Tailwind CSS
  • Backend: Rust, Tauri
  • Build Tool: Vite
  • Styling: Tailwind CSS with custom color system
  • Icons: Lucide React

Key Dependencies

  • @tauri-apps/api - Tauri JavaScript API
  • react-markdown - Markdown rendering
  • date-fns - Date formatting
  • lucide-react - Beautiful icons

Scripts

  • npm run dev - Start Vite development server
  • npm run build - Build frontend for production
  • npm run tauri dev - Run Tauri in development mode
  • npm run tauri build - Build Tauri app for production

πŸ“¦ Building

Development Build

npm run tauri dev

Production Build

npm run tauri build

The built application will be available in src-tauri/target/release/bundle/.

🎨 Theming

Layered supports 5 beautiful accent colors:

  • Salad Green (default) - #22c55e
  • Ocean Blue - #3b82f6
  • Royal Purple - #a855f7
  • Rose Pink - #ec4899
  • Sunset Orange - #f97316

Colors are managed through React Context and applied dynamically throughout the application.

πŸ“„ Data Storage

Default Locations

  • macOS: ~/Library/Application Support/com.layered.app/
  • Windows: %APPDATA%\com.layered.app\
  • Linux: ~/.local/share/com.layered.app/

Custom Storage

Users can choose custom storage locations through the settings panel. Data is stored as:

  • Notes: Individual JSON files in notes/ directory
  • Finance: Individual JSON files in finance/ directory
  • Settings: settings.json file

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

🎯 Project Goals

This project was created as a learning experience to:

  • Explore Tauri as a modern alternative to Electron
  • Learn Rust fundamentals through practical application
  • Build a simplified productivity app with essential features
  • Practice React + TypeScript with modern tooling

What Layered is:

  • A lightweight note-taking app with markdown support
  • A basic finance tracker for personal use
  • A clean, customizable interface
  • A learning project showcasing Tauri capabilities

What Layered is NOT:

  • A full-featured Notion replacement
  • An advanced knowledge management system
  • A comprehensive financial management tool
  • Production-ready enterprise software

πŸ™ Acknowledgments

  • Tauri - For the amazing Rust-based app framework that made this possible
  • Tailwind CSS - For the utility-first CSS framework
  • Lucide - For the beautiful icon set
  • React Markdown - For markdown rendering
  • The Rust and Tauri communities for excellent documentation and support

πŸ“ž Support

If you encounter any issues or have questions:

  1. Check the Issues page
  2. Create a new issue with detailed information
  3. Remember this is a learning project - contributions and suggestions are welcome!

Made with ❀️, lots of β˜•, and a healthy dose of Rust learning curve please help me, I'm mentally insane now

Layered - A first step into Tauri development