bloggy 0.1.43__py3-none-any.whl → 0.2.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,8 +14,8 @@
14
14
  .sidenote.show { display: block; float: left; clear: both; width: 95%; margin: 0.75rem 2.5%; position: relative; }
15
15
  }
16
16
  @media (min-width: 1280px) {
17
- .sidenote { display: block; float: right; clear: right; width: 14rem; margin-right: -16rem; margin-top: 0.25rem; margin-bottom: 0.75rem; }
17
+ .sidenote { display: block; float: right; clear: right; width: 18rem; margin-right: -20rem; margin-top: 0.25rem; margin-bottom: 0.75rem; }
18
18
  .sidenote.hl { background-color: rgba(221, 166, 55, 0.1); }
19
19
  .dark .sidenote.hl { background-color: rgba(96, 165, 250, 0.1); }
20
20
  }
21
-
21
+
@@ -0,0 +1,173 @@
1
+ Metadata-Version: 2.4
2
+ Name: bloggy
3
+ Version: 0.2.5
4
+ Summary: A lightweight, elegant blogging platform built with FastHTML
5
+ Home-page: https://github.com/yeshwanth/bloggy
6
+ Author: Yeshwanth
7
+ Author-email:
8
+ License: Apache-2.0
9
+ Project-URL: Homepage, https://github.com/yeshwanth/bloggy
10
+ Project-URL: Repository, https://github.com/yeshwanth/bloggy
11
+ Project-URL: Issues, https://github.com/yeshwanth/bloggy/issues
12
+ Keywords: fasthtml,blog,markdown,htmx,mermaid,sidenotes
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: Apache Software License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Framework :: FastAPI
22
+ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
23
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
+ Requires-Python: >=3.9
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Requires-Dist: python-fasthtml>=0.6.9
28
+ Requires-Dist: mistletoe>=1.4.0
29
+ Requires-Dist: python-frontmatter>=1.1.0
30
+ Requires-Dist: uvicorn>=0.30.0
31
+ Requires-Dist: monsterui>=0.0.37
32
+ Provides-Extra: dev
33
+ Requires-Dist: pytest>=8.0.0; extra == "dev"
34
+ Requires-Dist: black>=24.0.0; extra == "dev"
35
+ Requires-Dist: ruff>=0.5.0; extra == "dev"
36
+ Dynamic: home-page
37
+ Dynamic: license-file
38
+ Dynamic: requires-python
39
+
40
+ ---
41
+ title: Bloggy
42
+ ---
43
+
44
+ <p align="center">
45
+ <img src="static/icon.png" alt="Bloggy icon" class="bloggy-icon" style="width: 256px;">
46
+ </p>
47
+
48
+ <p class="bloggy-caption" style="text-align: center;">
49
+ Markdown lovers write<br>
50
+ Python roots, JavaScript sparks<br>
51
+ Styles without limits
52
+ </p>
53
+
54
+
55
+ ---
56
+
57
+ Bloggy is a Python‑first blogging tool: drop in Markdown, get a site instantly.
58
+ Simple by default. Infinitely customizable for CSS lovers.[^1]
59
+
60
+ [^1]: If you're curious about how the intro was styled, [visit this page](https://github.com/sizhky/bloggy/blob/fa9a671931ad69b24139ba9d105bbadd8753b85b/custom.css#L36C1-L36C13).<br>
61
+ Check out the [Theming & CSS](bloggy%20manual/theming.md) guide for details on customizing your blog's appearance.
62
+
63
+ ---
64
+
65
+ ## Quick Start
66
+ 1. Install Bloggy:
67
+ ```bash
68
+ pip install bloggy
69
+ ```
70
+
71
+ 2. Create a directory with your markdown files:
72
+ ```bash
73
+ mkdir my-blog
74
+ cd my-blog
75
+ echo "# Hello World" > hello.md
76
+ mkdir -p posts
77
+ echo "# My First Post\nThis is a sample blog post." > posts/first-post
78
+ ```
79
+
80
+ 3. Run Bloggy:
81
+ ```bash
82
+ bloggy .
83
+ ```
84
+
85
+ 4. Open your browser at `http://127.0.0.1:5001`
86
+
87
+
88
+ ## Key Features
89
+
90
+ ### ✨ Advanced Markdown Features
91
+ - **Footnotes as Sidenotes**: `[^1]` references become elegant margin notes on desktop, expandable on mobile with smooth animations
92
+ - **YouTube Embeds**: Use `[yt:VIDEO_ID]` or `[yt:VIDEO_ID|Caption]` for responsive iframe cards with aspect-ratio containers
93
+ - **Task Lists**: `- [ ]` / `- [x]` render as custom styled checkboxes (green for checked, gray for unchecked) with SVG checkmarks
94
+ - **Mermaid Diagrams**: Full support for flowcharts, sequence diagrams, state diagrams, Gantt charts, etc.
95
+ - **Interactive Diagrams**:
96
+ - Zoom with mouse wheel (zooms towards cursor position)
97
+ - Pan by dragging with mouse
98
+ - Built-in controls: fullscreen, reset, zoom in/out buttons
99
+ - Auto-scaling based on diagram aspect ratio (wide diagrams like Gantt charts get special handling)
100
+ - Fullscreen modal viewer with dark mode support
101
+ - **Theme-aware Rendering**: Diagrams automatically re-render when switching light/dark mode via MutationObserver
102
+ - **Mermaid Frontmatter**: Configure diagram size with YAML frontmatter (width, height, min-height)
103
+ - **Tabbed Content**: Create multi-tab sections using `:::tabs` and `::tab{title="..."}` syntax with smooth transitions
104
+ - **Relative Links**: Full support for relative markdown links (`./file.md`, `../other.md`) with automatic path resolution
105
+ - **Plain-Text Headings**: Inline markdown in headings is stripped for clean display and consistent anchor slugs
106
+ - **Math Notation**: KaTeX support for inline `$E=mc^2$` and block `$$` math equations, auto-renders after HTMX swaps
107
+ - **Superscript & Subscript**: Use `^text^` for superscript and `~text~` for subscript (preprocessed before rendering)
108
+ - **Strikethrough**: Use `~~text~~` for strikethrough formatting
109
+ - **Pandoc-style Attributes**: Add classes to inline text with `` `text`{.class #id} `` syntax for semantic markup (renders as `<span>` tags, not `<code>`)
110
+ - **Cascading Custom CSS**: Add `custom.css` or `style.css` files at multiple levels (root, folders) with automatic scoping
111
+
112
+ See the full list in [Markdown Writing Features](bloggy%20manual/markdown-features.md).
113
+
114
+ ### 🎨 Modern UI
115
+ - **Responsive Design**: Works beautifully on all screen sizes with mobile-first approach
116
+ - **Three-Panel Layout**: Posts sidebar, main content, and table of contents for easy navigation
117
+ - **Dark Mode**: Automatic theme switching with localStorage persistence and instant visual feedback
118
+ - **HTMX Navigation**: Fast, SPA-like navigation without full page reloads using `hx-get`, `hx-target`, and `hx-push-url`
119
+ - **Collapsible Folders**: Organize posts in nested directories with chevron indicators and smooth expand/collapse
120
+ - **Sidebar Search**: HTMX-powered filename search with results shown below the search bar (tree stays intact)
121
+ - **PDF Posts**: PDFs show up in the sidebar and open inline in the main content area
122
+ - **Auto-Generated TOC**: Table of contents automatically extracted from headings with scroll-based active highlighting
123
+ - **TOC Autoscroll + Accurate Highlights**: Active TOC item stays in view and highlight logic handles duplicate headings
124
+ - **Mobile Menus**: Slide-in panels for posts and TOC on mobile devices with smooth transitions
125
+ - **Sticky Navigation**: Navbar stays at top while scrolling, with mobile menu toggles
126
+ - **Active Link Highlighting**: Current post and TOC section highlighted with blue accents
127
+ - **Auto-Reveal in Sidebar**: Active post automatically expanded and scrolled into view when opening sidebar
128
+ - **Ultra-Thin Scrollbars**: Custom styled 3px scrollbars that adapt to light/dark theme
129
+ - **Frosted Glass Sidebars**: Backdrop blur and transparency effects on sidebar components
130
+
131
+ | Feature | Description |
132
+ |-----------------------------|--------------------------------------------------|
133
+ | FastHTML Integration | Built on FastHTML for high performance and ease of use |
134
+ | Advanced Markdown Support | Footnotes as sidenotes, YouTube embeds, task lists, Mermaid diagrams, math notation, tabbed content, and more |
135
+ | Modern UI | Responsive design, dark mode, three-panel layout, HTMX navigation |
136
+ | Interactive Diagrams | Zoomable, pannable Mermaid diagrams with fullscreen support |
137
+
138
+ ## Installation
139
+
140
+ ### From PyPI (recommended)
141
+
142
+ ```bash
143
+ pip install bloggy
144
+ ```
145
+
146
+ ### From source
147
+
148
+ ```bash
149
+ git clone https://github.com/yeshwanth/bloggy.git
150
+ cd bloggy
151
+ pip install -e .
152
+ ```
153
+
154
+ ## Configuration
155
+
156
+ Bloggy supports four ways to configure your blog (in priority order):
157
+
158
+ 1. cli arguments (e.g. `bloggy /path/to/markdown`) - Highest priority
159
+ 1. **[`.bloggy` configuration file](bloggy%20manual/configuration.md)** (TOML format)
160
+ 2. **Environment variables** - Fallback
161
+ 3. **Default values** - Final fallback
162
+
163
+ ## Bloggy Manual
164
+
165
+ Short, focused guides for deeper topics. Start with configuration and writing content, then dive into architecture and advanced details.
166
+
167
+ - [Configuration & CLI](bloggy%20manual/configuration.md)
168
+ - [Markdown Writing Features](bloggy%20manual/markdown-features.md)
169
+ - [Mermaid Diagrams](bloggy%20manual/mermaid-diagrams.md)
170
+ - [Architecture Overview](bloggy%20manual/architecture.md)
171
+ - [Theming & CSS](bloggy%20manual/theming.md)
172
+ - [Security & Auth](bloggy%20manual/security.md)
173
+ - [Advanced Behavior](bloggy%20manual/advanced.md)
@@ -0,0 +1,13 @@
1
+ bloggy/__init__.py,sha256=CXJuJqjh0GtdZAT35gicjEu1jkgrUDE5nfMlhuiP02g,158
2
+ bloggy/build.py,sha256=m-GcYDSCtk5y-sTn1_8kOFlaGEv10GL9Uid2pgz52GQ,24218
3
+ bloggy/config.py,sha256=5lcLFgnYkk-_o6_vGK-vaNk9vPJ-kOkGbnBJ9bGIUdc,4592
4
+ bloggy/core.py,sha256=NCOncMB85gtcx6cUlozIN3PHKtYkhDQNGHZxq852Szk,101060
5
+ bloggy/main.py,sha256=_WafOavniToqpyRVVwhIavhK6UBmzbuR3YKDHWRzvDE,4093
6
+ bloggy/static/scripts.js,sha256=13OU0HVZJQRxU2GL-iWraw3Lh_IDeMlsL7cfIro_2b0,45131
7
+ bloggy/static/sidenote.css,sha256=ZzZGWMGtEtZrGb-UKc8CkQdzGsxNYgq8ojWSTnRdtuI,1047
8
+ bloggy-0.2.5.dist-info/licenses/LICENSE,sha256=xV8xoN4VOL0uw9X8RSs2IMuD_Ss_a9yAbtGNeBWZwnw,11337
9
+ bloggy-0.2.5.dist-info/METADATA,sha256=M9NFfa9rZWxIN21YMAFXedtLPWTpBK3ZlSOea2EMJmk,7970
10
+ bloggy-0.2.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
11
+ bloggy-0.2.5.dist-info/entry_points.txt,sha256=CNKjPiT6yMMEPbeyHXsiN0xHMwBqSo-kO3J5ClISDW4,43
12
+ bloggy-0.2.5.dist-info/top_level.txt,sha256=YjR92iFE4BhzWG-Hg2l55N0xUNv5207y-daHjWja1aI,7
13
+ bloggy-0.2.5.dist-info/RECORD,,