Skip to content

Commit 613fed1

Browse files
committed
Rework readme
1 parent 7bb4b07 commit 613fed1

2 files changed

Lines changed: 85 additions & 80 deletions

File tree

README.md

Lines changed: 85 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,78 @@
11
# Holz Log
22

3-
This is a simple micro-blog built with the Phoenix Framework and inspired by Joplin's note-taking organization. The goal is to provide a straightforward way to create, categorize, and share notes publicly.
4-
A demo can be seen at https://holzlog.duckdns.org/
3+
![Holz Log Screenshot](screenshots/holzlog.png) <!-- Add a screenshot for visual appeal -->
4+
![Holz Log Screenshot](screenshots/holzlog.png) <!-- Add a screenshot for visual appeal -->
55

6-
## Todos:
6+
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.
77

8-
[] Improve and restructure readme
9-
[] Add Earmark dependency for note body
10-
[] Implement db backups, either as download or email
8+
**Live Demo**: [https://holzlog.duckdns.org/](https://holzlog.duckdns.org/)
119

12-
## Features
10+
## Table of Contents
1311

14-
- **Note Creation**: A "Create Note" button at the top opens a form to create new notes. Uses a simple text area for content, allowing Markdown.
15-
- **Note Editing**: Each note displayed has an "Edit" button that opens a form to modify the note.
16-
- **Categories (Notebooks)**: Notes can be assigned to multiple categories.
17-
- **Category Sidebar**: A sidebar displays a list of categories/notebooks. Clicking a category filters the notes to only show those in that category. Clicking "All Notes" shows all notes.
18-
- **Search**: A search bar allows users to find notes by title or content.
19-
- **Markdown Support**: Note content is interpreted as Markdown for formatted display.
20-
- **SQLite Database**: Uses SQLite for easy setup and deployment.
21-
- **Tailwind CSS**: Styled with Tailwind CSS for a clean and responsive design.
12+
- [For Users](#for-users)
13+
- [Features](#features)
14+
- [Using Holz Log](#using-holz-log)
15+
- [For Developers](#for-developers)
16+
- [Tech Stack](#tech-stack)
17+
- [Architecture](#architecture)
18+
- [Database Schema](#database-schema)
19+
- [Setup and Installation](#setup-and-installation)
20+
- [Development](#development)
21+
- [Roadmap](#roadmap)
22+
- [Contributing](#contributing)
23+
- [License](#license)
2224

23-
## Layout
25+
## For Users
2426

25-
The website consists of the following main sections:
27+
### Features
2628

27-
### Header
29+
- **Simple Note Management**: Create, edit, view, and organize notes with ease
30+
- **Category Organization**: Assign notes to multiple categories for flexible organization
31+
- **Quick Search**: Find notes by title or content with the built-in search feature
32+
- **Clean Interface**: Minimalist design focused on content readability
2833

29-
- Contains the site title/logo (if any)
30-
- "Create Note" button
31-
- Search bar
34+
### Using Holz Log
3235

33-
### Sidebar (Left)
36+
1. **Creating Notes**: Click the "Create Note" button in the header to create a new note
37+
2. **Organizing Notes**: Assign categories when creating or editing notes
38+
3. **Finding Notes**: Browse by category using the sidebar, or use the search function
39+
4. **Editing Notes**: Each note has an "Edit" button for quick modifications
3440

35-
- A list of all categories/notebooks
36-
- Each category is a clickable link
37-
- An "All Notes" link to display all notes regardless of category
41+
## For Developers
3842

39-
### Main Content Area (Right)
43+
### Tech Stack
4044

41-
- Displays a list of notes
42-
- Each note shows:
43-
- Title (clickable link to view the full note)
44-
- Short excerpt of the content (e.g., the first 100-200 characters)
45-
- The categories/notebooks the note is assigned to
46-
- An "Edit" button to open the edit form for that note
45+
- **Backend**:
4746

48-
### Single Note View
47+
- [Elixir](https://elixir-lang.org/) (v1.14+)
48+
- [Phoenix Framework](https://www.phoenixframework.org/) (v1.7+)
49+
- [Ecto](https://hexdocs.pm/ecto/Ecto.html) - Database abstraction layer
50+
- [SQLite](https://www.sqlite.org/) - Database (via [ecto_sqlite3](https://hexdocs.pm/ecto_sqlite3))
4951

50-
- Displays the full content of a single note
51-
- Shows the title and categories
52-
- An "Edit" button to edit the note
53-
- A "Back" button to return to the main notes list (or the category listing)
52+
- **Frontend**:
53+
- [Phoenix LiveView](https://hexdocs.pm/phoenix_live_view/) - For interactive UI components
54+
- [Tailwind CSS](https://tailwindcss.com/) - For styling
5455

55-
## Tailwind CSS Styling
56+
### Architecture
5657

57-
The site uses Tailwind CSS utility classes extensively. Here's a general overview of the styling approach:
58+
The application follows Phoenix's standard MVC architecture with LiveView components:
5859

59-
- **Readability**: Focus on clear typography, good line height, and sufficient padding/margin
60-
- **Color Palette**: Primarily light backgrounds, with a muted accent color for links, headings, and highlighting. Dark mode is not implemented in this iteration
61-
- **Responsive Design**: Uses Tailwind's responsive prefixes (e.g., `md:`, `lg:`) to adjust the layout for different screen sizes. The sidebar typically collapses to a top navigation bar on smaller screens
60+
- **Contexts**: Business logic organized into domain-specific modules
61+
- **Schema**: Ecto schemas representing database tables with validations
62+
- **Controllers/LiveViews**: Handle incoming requests and manage state
63+
- **Templates**: Render HTML responses using HEEx templates
6264

63-
## Database Schema (SQLite)
65+
#### UI Layout
6466

65-
The SQLite database consists of two main tables:
67+
- **Header**: Site title, create button, search bar
68+
- **Sidebar**: Category navigation
69+
- **Main Content**: Note listing or individual note view
6670

67-
### notes
71+
### Database Schema
72+
73+
The application uses a SQLite database with the following structure:
74+
75+
#### notes
6876

6977
```sql
7078
CREATE TABLE notes (
@@ -76,7 +84,7 @@ CREATE TABLE notes (
7684
);
7785
```
7886

79-
### categories
87+
#### categories
8088

8189
```sql
8290
CREATE TABLE categories (
@@ -85,7 +93,7 @@ CREATE TABLE categories (
8593
);
8694
```
8795

88-
### note_categories (Join Table)
96+
#### note_categories (Join Table)
8997

9098
```sql
9199
CREATE TABLE note_categories (
@@ -95,48 +103,45 @@ CREATE TABLE note_categories (
95103
);
96104
```
97105

98-
## Technologies Used
106+
### Setup and Installation
99107

100-
- **Phoenix Framework**: The web framework
101-
- **Ecto**: Database abstraction layer
102-
- **SQLite**: Database
103-
- **Tailwind CSS**: CSS framework
104-
- **Earmark**: Markdown parser
108+
1. **Prerequisites**:
105109

106-
## Setup Instructions
110+
- Elixir and Erlang installed ([installation guide](https://elixir-lang.org/install.html))
111+
- Phoenix Framework installed: `mix archive.install hex phx_new`
107112

108-
1. Install Elixir and Erlang:
113+
2. **Clone and Setup**:
109114

110-
- Follow the instructions on the [Elixir website](https://elixir-lang.org/install.html)
115+
```bash
116+
# Clone the repository
117+
git clone https://github.com/yourusername/holz_log.git
118+
cd holz_log
111119

112-
2. Install Phoenix:
120+
# Get dependencies
121+
mix deps.get
113122

114-
```bash
115-
mix archive.install hex phx_new
123+
# Setup database
124+
mix ecto.setup
116125
```
117126

118-
3. Create a new Phoenix project:
127+
3. **Run the Application**:
119128

120129
```bash
121-
mix phx.new my_microblog --no-html --no-webpack --no-dashboard
122-
cd my_microblog
130+
# Start Phoenix server
131+
mix phx.server
123132
```
124133

125-
- `--no-html` prevents the generation of the default HTML layouts (we'll use Tailwind instead)
126-
- `--no-webpack` skips the default webpack configuration since we'll use the simpler esbuild
127-
- `--no-dashboard` omits the Erlang Observer dashboard
128-
129-
4. Install esbuild:
130-
Add esbuild as a dependency in `mix.exs` and run `mix deps.get`:
131-
132-
```elixir
133-
defp deps do
134-
[
135-
{:phoenix, "~> 1.7.0"},
136-
{:ecto_sqlite3, "~> 0.2"},
137-
{:ecto_sql, "~> 3.0"},
138-
{:esbuild, "~> 0.8", runtime: Mix.env() == :dev},
139-
{:earmark, "~> 1.4"}
140-
]
141-
end
142-
```
134+
4. Visit [`localhost:4000`](http://localhost:4000) in your browser
135+
136+
### Development
137+
138+
- **Run Tests**: `mix test`
139+
- **Code Format**: `mix format`
140+
- **Start Interactive Console**: `iex -S mix`
141+
142+
## Roadmap
143+
144+
- [x] Basic note creation and management
145+
- [x] Category organization
146+
- [ ] Add Earmark dependency for note body
147+
- [ ] Implement database backups (download or email)

screenshots/holzlog.png

203 KB
Loading

0 commit comments

Comments
 (0)