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/
- 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
- Creating Notes: Click the "Create Note" button in the header to create a new note
- Organizing Notes: Assign categories when creating or editing notes
- Finding Notes: Browse by category using the sidebar, or use the search function
- Editing Notes: Each note has an "Edit" button for quick modifications
-
Backend:
- Elixir (v1.14+)
- Phoenix Framework (v1.7+)
- Ecto - Database abstraction layer
- SQLite - Database (via ecto_sqlite3)
-
Frontend:
- Phoenix LiveView - For interactive UI components
- Tailwind CSS - For styling
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
- Header: Site title, create button, search bar
- Sidebar: Category navigation
- Main Content: Note listing or individual note view
The application uses a SQLite database with the following structure:
CREATE TABLE notes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
content TEXT NOT NULL,
inserted_at DATETIME,
updated_at DATETIME
);CREATE TABLE categories (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL
);CREATE TABLE note_categories (
note_id INTEGER REFERENCES notes(id),
category_id INTEGER REFERENCES categories(id),
PRIMARY KEY (note_id, category_id)
);-
Prerequisites:
- Elixir and Erlang installed (installation guide)
- Phoenix Framework installed:
mix archive.install hex phx_new
-
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
-
Run the Application:
# Start Phoenix server mix phx.server -
Visit
localhost:4000in your browser
- Code Format:
mix format - Start Interactive Console:
iex -S mix
- 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
