Skip to content

HVossi92/holz-log

Repository files navigation

Holz Log

Holz Log Screenshot

A lightweight micro-blog built with the Phoenix Framework, inspired by Joplin's note-taking organization. Create, categorize and share markdown notes in a clean, organized interface.

Live Demo: https://holzlog.duckdns.org/

Table of Contents

For Users

Features

  • Simple Note Management: Create, edit, view, and organize notes with ease
  • Category Organization: Assign notes to multiple categories for flexible organization
  • Quick Search: Find notes by title or content with the built-in search feature
  • Clean Interface: Minimalist design focused on content readability

Using Holz Log

  1. Creating Notes: Click the "Create Note" button in the header to create a new note
  2. Organizing Notes: Assign categories when creating or editing notes
  3. Finding Notes: Browse by category using the sidebar, or use the search function
  4. Editing Notes: Each note has an "Edit" button for quick modifications

For Developers

Tech Stack

Architecture

The application follows Phoenix's standard MVC architecture with LiveView components:

  • Contexts: Business logic organized into domain-specific modules
  • Schema: Ecto schemas representing database tables with validations
  • Controllers/LiveViews: Handle incoming requests and manage state
  • Templates: Render HTML responses using HEEx templates

UI Layout

  • Header: Site title, create button, search bar
  • Sidebar: Category navigation
  • Main Content: Note listing or individual note view

Database Schema

The application uses a SQLite database with the following structure:

notes

CREATE TABLE notes (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    title TEXT NOT NULL,
    content TEXT NOT NULL,
    inserted_at DATETIME,
    updated_at DATETIME
);

categories

CREATE TABLE categories (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT NOT NULL
);

note_categories (Join Table)

CREATE TABLE note_categories (
    note_id INTEGER REFERENCES notes(id),
    category_id INTEGER REFERENCES categories(id),
    PRIMARY KEY (note_id, category_id)
);

Setup and Installation

  1. Prerequisites:

    • Elixir and Erlang installed (installation guide)
    • Phoenix Framework installed: mix archive.install hex phx_new
  2. Clone and Setup:

    # Clone the repository
    git clone https://github.com/yourusername/holz_log.git
    cd holz_log
    
    # Get dependencies
    mix deps.get
    
    # Setup database
    mix ecto.setup
  3. Run the Application:

    # Start Phoenix server
    mix phx.server
  4. Visit localhost:4000 in your browser

Development

  • Code Format: mix format
  • Start Interactive Console: iex -S mix

Roadmap

  • Basic note creation and management
  • Category organization
  • Make sure docker compose deployments persist db through new containers (fix docker compose)
  • Add Earmark dependency for note body
  • Do not list category IDs in frontend
  • Implement database backups (download or email)
  • Change after create & update redirects to go back to main page
  • Increase note preview character limit

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors