<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Heaper Blog]]></title><description><![CDATA[Heaper Blog]]></description><link>https://blog.heaper.de/</link><image><url>https://blog.heaper.de/favicon.png</url><title>Heaper Blog</title><link>https://blog.heaper.de/</link></image><generator>Ghost 5.82</generator><lastBuildDate>Thu, 23 Apr 2026 09:27:15 GMT</lastBuildDate><atom:link href="https://blog.heaper.de/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Why Heaper Replaces Folders with Links]]></title><description><![CDATA[<p><strong>Folders Made Sense, Until They Didn&#x2019;t</strong></p><p>Folders were designed for a physical world.</p><p>You had a cabinet, a drawer, a manila folder, and inside it were papers that belonged there.</p><p>It worked because paper existed in one place at a time.</p><p>When computers arrived, we copied that same</p>]]></description><link>https://blog.heaper.de/why-heaper-replaces-folders-with-links/</link><guid isPermaLink="false">690d444edc5c7a0001cc9b91</guid><dc:creator><![CDATA[Jan Lunge]]></dc:creator><pubDate>Fri, 07 Nov 2025 01:07:37 GMT</pubDate><content:encoded><![CDATA[<p><strong>Folders Made Sense, Until They Didn&#x2019;t</strong></p><p>Folders were designed for a physical world.</p><p>You had a cabinet, a drawer, a manila folder, and inside it were papers that belonged there.</p><p>It worked because paper existed in one place at a time.</p><p>When computers arrived, we copied that same metaphor: icons, folders, subfolders.</p><p>But in a digital world, <strong>a file doesn&#x2019;t need to live in one place.</strong></p><p>That&#x2019;s where the cracks started to show.</p><p>You duplicate files to use them in multiple projects.</p><p>You rename things just to find them later.</p><p>You forget where something &#x201C;belongs.&#x201D;</p><p>The truth is digital information doesn&#x2019;t fit inside physical logic.</p><hr><h3 id="the-multi-place-problem"><strong>The Multi-Place Problem</strong></h3><p>Folders create tension the moment something could belong in more than one place.</p><p>Is a client&#x2019;s logo under Designs/ClientA or ClientA/Assets?</p><p>Is your tax document in 2024/Invoices or Accounting/Tax?</p><p>You can&#x2019;t win, unless you make copies.</p><p>And every copy is another version waiting to get lost, renamed, or outdated.</p><p>This is what I call <strong>the multi-place problem</strong> and it&#x2019;s why I stopped organizing by folders altogether.</p><hr><p><strong>The Heaper Approach: Everything as a Link</strong></p><p>Instead of nesting files inside folders, Heaper connects them through <strong>links.</strong> A link says, <em>this relates to that.</em></p><p>In Heaper, any Block (a file, note, or idea) can be connected to another:</p><ul><li>@Mentions link one Block to another (like connecting a photo to a note).</li><li>#Tags describe what it <em>is</em> (&#x201C;#Invoice&#x201D;, &#x201C;#KeyboardBuild&#x201D;, &#x201C;#Research&#x201D;).</li><li>Connections are visible, bidirectional, and easy to trace.</li></ul><p>You don&#x2019;t <em>file</em> something away, you <strong>connect</strong> it.</p><p>You can view the same Block in multiple contexts without duplication.</p><p>That invoice automatically appears under your &#x201C;Accounting&#x201D; view, your &#x201C;Client A&#x201D; project, and your &#x201C;Taxes 2024&#x201D; Heap, because it&#x2019;s linked, not copied.</p><hr><h3 id="structure-that-grows-with-you"><strong>Structure That Grows With You</strong></h3><p>Traditional organization is <strong>top-down</strong>:</p><p>you decide the structure first, then fill it.</p><p>Heaper&#x2019;s system is <strong>bottom-up</strong>:</p><p>you work naturally, and structure emerges from your links over time.</p><p>Start with one note, attach a file, add a tag, mention another Block &#x2014; and a network begins to form.</p><p>Later, when you open your Heap, you&#x2019;ll see that structure come to life.</p><p>It&#x2019;s organic, not rigid.</p><p>You don&#x2019;t plan your folders before you start, you build meaning as you go.</p><hr><h3 id="links-make-discovery-effortless"><strong>Links Make Discovery Effortless</strong></h3><p>When you link instead of file, discovery becomes a joy again.</p><p>Want to find all photos tagged #Workshop? One click. From there you can dig deeper into your tools or projects but as things are related you could have gotten to the Projects also from your daily notes or even your work area.</p><p>Looking for related ideas you didn&#x2019;t even remember connecting? They&#x2019;ll find you, and when you see a connection its trivial to add.</p><p>The beauty of linking is that it mirrors how we actually think &#x2014; through associations, not hierarchies.</p><p>Folders force you to <em>choose</em>.</p><p>Links let you <em>connect</em>.</p><hr><h3 id="a-living-network-of-ideas"><strong>A Living Network of Ideas</strong></h3><p>Over time, your Heap becomes more than storage, it becomes a map of your thoughts and projects.</p><p>You can browse through it like a photo feed, jump between related notes, or pull up all Blocks that share a tag.</p><p>It feels alive because it <em>is</em> alive, constantly growing and reshaping itself based on what you link together.</p><p>There&#x2019;s no &#x201C;wrong place&#x201D; for something anymore.</p><p>Everything connects.</p><hr><h3 id="why-it-matters"><strong>Why It Matters</strong></h3><p>Replacing folders with links isn&#x2019;t just a technical decision, it&#x2019;s a philosophical one.</p><p>It means your digital workspace no longer mimics a filing cabinet.</p><p>It reflects how your mind works: fluid, relational, creative.</p><p>And that&#x2019;s what Heaper was designed for</p><p>not to store your data,</p><p>but to help it <em>make sense again.</em></p>]]></content:encoded></item><item><title><![CDATA[Every file can have a story]]></title><description><![CDATA[<p>In Heaper, every file is a block with rich text notes. Add context to pictures. Attach deadlines, meeting notes, who sent it. Add journal entries to travel photos. Annotate PDFs with research notes. Track changes between versions, no more presentation_final_final.pptx.</p><p>Every digital tool promises better organization. Folders,</p>]]></description><link>https://blog.heaper.de/every-file-can-have-a-story/</link><guid isPermaLink="false">690d3bd0dc5c7a0001cc9b6f</guid><dc:creator><![CDATA[Jan Lunge]]></dc:creator><pubDate>Fri, 07 Nov 2025 00:48:49 GMT</pubDate><content:encoded><![CDATA[<p>In Heaper, every file is a block with rich text notes. Add context to pictures. Attach deadlines, meeting notes, who sent it. Add journal entries to travel photos. Annotate PDFs with research notes. Track changes between versions, no more presentation_final_final.pptx.</p><p>Every digital tool promises better organization. Folders, tags, albums, even AI-generated categories. Yet the more apps we use, the easier it becomes to lose track of what something actually <em>means</em>.</p><ul><li>A photo of your electricity meter ends up in &#x201C;Camera Roll.&#x201D;</li><li>A design draft lives in &#x201C;Downloads.&#x201D;</li><li>The final version of a client project hides inside &#x201C;Final_Final_v3.zip.&#x201D;</li></ul><p>All these systems store files, but they strip away their <em>context.</em></p><p>That&#x2019;s the core problem Heaper set out to solve.</p><h3 id="what-context-really-means"><strong>What Context Really Means</strong></h3><p>Context is the invisible layer that turns information into understanding.</p><p>It&#x2019;s the story behind a file:</p><ul><li>Why it exists</li><li>What it relates to</li><li>What needs to happen next</li></ul><p>Traditional file systems ignore this. Notes apps, on the other hand, separate context from the files themselves. You might write ideas in Notion or Obsidian, but the related photos, PDFs, or videos live somewhere else entirely.</p><p>Heaper&#x2019;s answer is simple:</p><p>Instead of separating them, <strong>merge files and context into one unit of meaning.</strong></p><h3 id="introducing-blocks"><strong>Introducing Blocks</strong></h3><p>In Heaper, everything, a note, image, video, or even a folder of assets is a <strong>Block.</strong></p><p>A Block can contain:</p><ul><li><strong>A file</strong> (image, video, document, etc.)</li><li><strong>Rich text</strong> for notes, thoughts, or annotations</li><li><strong>Links</strong> to other Blocks</li><li><strong>Attributes</strong> (metadata, timestamps, named relations)  coming soon to heaper</li></ul><p>Think of a Block as a living document, not just a file reference, but a container for all the meaning that surrounds it.</p><p>You can:</p><ul><li>Attach notes to explain a photo or file</li><li>Link related Blocks (e.g. connect a receipt to a project)</li><li>Tag a Block with a related note to categorize or sort</li></ul><p>It&#x2019;s lightweight, flexible, and relational, without the complexity of a database or the rigidity of folders.</p><h3 id="from-folders-to-links"><strong>From Folders to Links</strong></h3><p>Folders assume one truth: <em>a file can only live in one place.</em></p><p>That made sense when things were physical.</p><p>But in digital space, that limitation becomes chaos, endless copies, &#x201C;duplicate&#x201D; folders, and the mental tax of remembering where things belong.</p><p>Heaper replaces folders with <strong>relationships.</strong></p><ul><li>@Mentions link one Block to another</li><li>#Tags define type or meaning (&#x201C;#Invoice&#x201D;, &#x201C;#Reference&#x201D;, &#x201C;#KeyboardProject&#x201D;)</li><li>Relationships are visible and traceable, like a map of your digital life</li></ul><p>You&#x2019;re no longer filing things away. You&#x2019;re <strong>connecting them.</strong></p><p>Structure emerges naturally from these links, what we call a <strong>bottom-up approach</strong>. You don&#x2019;t design a system before using it; it grows with your work.</p><h3 id="why-context-changes-everything"><strong>Why Context Changes Everything</strong></h3><p>Attaching notes and metadata directly to a file doesn&#x2019;t just make it easier to find &#x2014; it makes your data more <em>alive.</em></p><ul><li>Every file can tell its own story.</li><li>You can revisit old projects and still understand their purpose.</li><li>Files and notes move together, no more broken references or missing context.</li><li>Search becomes human again: look for what it <em>was about</em>, not what it <em>was called.</em></li></ul><p>Heaper&#x2019;s search doesn&#x2019;t just find filenames, it finds <em>meaning</em>. Because meaning is stored alongside the content, not elsewhere. Now you can use the fulltext.</p>]]></content:encoded></item><item><title><![CDATA[Every Block Can Be an App]]></title><description><![CDATA[<p><em>Why interactive documents are the future</em></p><p>In traditional systems, apps and documents are often separate entities. Apps are built to manage data, and documents are where the data lives. But what if every document, note, or task could also act as an app? This is the core idea behind <strong>Heaper</strong></p>]]></description><link>https://blog.heaper.de/every-block-can-be-an-app/</link><guid isPermaLink="false">6784ead5e8c9cb00014c10df</guid><dc:creator><![CDATA[Jan Lunge]]></dc:creator><pubDate>Mon, 13 Jan 2025 10:31:02 GMT</pubDate><content:encoded><![CDATA[<p><em>Why interactive documents are the future</em></p><p>In traditional systems, apps and documents are often separate entities. Apps are built to manage data, and documents are where the data lives. But what if every document, note, or task could also act as an app? This is the core idea behind <strong>Heaper</strong>&#x2014;a system that takes the concept of Blocks and transforms each one into a customizable, interactive app. This unique approach allows for a more flexible, personalized, and efficient workflow by enabling each Block to function as its own app. Let&#x2019;s dive into how this works and why it&#x2019;s a game-changer for productivity.</p><h3 id="what-is-a-block-in-heaper">What is a Block in Heaper?</h3><p>At its core, a <strong>Block</strong> in Heaper is a unit of content. It can be anything from a simple note, to a task, to a file or media, and even a more complex piece of data. Blocks are flexible, and they hold the information you need to stay organized. The key to Heaper&#x2019;s system is that these Blocks are <strong>dynamic</strong>&#x2014;they can contain not just data, but <strong>interactive functionality</strong> as well. This means that every Block can act as its own <strong>custom app</strong> to display or manipulate its content in different ways.</p><h3 id="blocks-as-customizable-apps">Blocks as Customizable Apps</h3><p>The idea of turning every Block into an app is powerful because it enables a <strong>tailored experience</strong> for users. Instead of being confined to a single way of interacting with your data, you can <strong>choose</strong> how each Block is displayed and used. For example, a task Block might include a checkbox to track completion, but it could also include additional attributes like a priority level, due date, and associated files.</p><p>Different apps can be attached to each Block, depending on what you need. These apps are versatile, letting you <strong>customize how you view, edit, and interact with your content</strong>. For example, you can:</p><p>&#x2022; View your tasks in a <strong>Kanban board</strong> for a visual workflow.</p><p>&#x2022; See your project timelines in a <strong>calendar</strong> to track deadlines.</p><p>&#x2022; Display a <strong>table view</strong> to manage tasks or project attributes.</p><p>&#x2022; Use a <strong>graph view</strong> to visualize relationships between related Blocks.</p><p>Each of these apps is specific to the Block it&#x2019;s attached to, meaning that you can have <strong>multiple app views</strong> for different Blocks, making it easier to work the way you want to.</p><h3 id="how-it-works-adding-apps-to-blocks">How It Works: Adding Apps to Blocks</h3><p>Adding an app to a Block is simple and intuitive. When you create a Block, you can choose from a variety of built-in app types, such as <strong>Kanban boards</strong>, <strong>calendar views</strong>, or <strong>task lists</strong>. You can even combine apps on a single Block to display multiple views of the same content at once.</p><p>For example, if you&#x2019;re working on a project, you might have a Block with a <strong>task list app</strong> to track daily tasks and a <strong>calendar app</strong> to view due dates. These apps are interactive&#x2014;tasks can be checked off, and calendar events can be rescheduled with a simple drag-and-drop action.</p><p>Furthermore, the system allows you to <strong>map Block attributes</strong> to specific fields in the app. For instance, you might map a due date from a task Block to a calendar event&#x2019;s start and end date, allowing the calendar app to show tasks alongside scheduled events seamlessly. This level of customization gives users the flexibility to organize their work in ways that make sense for their specific needs.</p><h3 id="the-benefits-of-having-an-app-for-every-block">The Benefits of Having an App for Every Block</h3><p>1. <strong>Flexibility and Customization</strong></p><p>The primary advantage of having each Block function as an app is the <strong>customization</strong> it offers. Every Block can be molded to fit the unique requirements of the user or project. Whether it&#x2019;s tracking a task, managing a project, or analyzing data, the user can choose the app that best suits the type of content in the Block. This flexibility ensures that users are never locked into a rigid workflow, but instead can adapt their tools to the task at hand.</p><p>2. <strong>Multiple Views for a Single Block</strong></p><p>One of the most powerful features of having an app for each Block is the ability to switch between different views without having to leave the context of that Block. Imagine managing a project where you need to track tasks, deadlines, and dependencies all at once. In a traditional system, you might have to flip between separate apps or pages to view these different aspects. But in Heaper, you can simply switch between apps attached to a Block, allowing you to seamlessly interact with all relevant data in one place.</p><p>3. <strong>Centralized Management</strong></p><p>Instead of managing multiple documents across different platforms or apps, you can centralize everything in <strong>Blocks</strong>. Since each Block can function as its own app, everything you need to track or manage is contained within that Block. You can add notes, attach files, assign attributes, and even integrate advanced apps like Kanban boards or graphs&#x2014;all within the same workspace. This not only makes it easier to stay organized but also increases productivity by reducing the need to jump between different systems.</p><p>4. <strong>Improved Data Relationships</strong></p><p>By making each Block an app, you enhance the relationships between your data. Since tags in Heaper are also Blocks, the tags themselves become active, interactive reference points. If a document or task is tagged with &#x201C;Project A,&#x201D; clicking that tag Block can bring up all related tasks, files, or notes associated with the project. You can see connections between different pieces of data without needing to manually search or cross-reference files, which speeds up workflows and improves overall efficiency.</p><h3 id="examples-of-blocks-as-apps-in-action">Examples of Blocks as Apps in Action</h3><p>1. <strong>Task Management</strong></p><p>A simple task Block can transform into a complete <strong>task management app</strong> with checkboxes, due dates, and priority settings. Attach a Kanban app to organize tasks into different stages (To Do, In Progress, Done) or use a calendar app to visually track deadlines. These apps are built into the Block and can interact with the data contained within it, providing a dynamic, customizable approach to task management.</p><p>2. <strong>Project Tracking</strong></p><p>A project Block could house not only documents but also the apps needed to manage the project effectively. Attach a table app to track project milestones, a calendar app to set deadlines, and a graph view to visualize dependencies between different tasks. Each Block becomes a mini-dashboard that houses all the tools and data necessary to keep the project moving forward.</p><p>3. <strong>Knowledge Management</strong></p><p>In a research project, each note or report can be tagged and organized as a Block, with apps like a graph view showing the relationships between documents or a table view summarizing key findings. With each Block acting as an app, you can dynamically update your research database, making it more comprehensive and easier to navigate.</p><h3 id="conclusion-the-future-of-work-is-customizable-and-interactive">Conclusion: The Future of Work is Customizable and Interactive</h3><p>Heaper&#x2019;s concept of making every Block an app transforms the way we interact with our data. No longer are we constrained by static folders or rigid file management systems. By enabling each Block to function as a customizable, interactive app, Heaper allows users to tailor their workflow to their unique needs and goals. This level of customization, combined with the flexibility of switching between different views and managing multiple types of content in one place, opens up new possibilities for how we organize and interact with our work.</p><p>With <strong>Blocks as apps</strong>, the future of productivity is all about <strong>personalization</strong>, <strong>interactivity</strong>, and <strong>efficiency</strong>. Every Block is not just a document&#x2014;it&#x2019;s a dynamic workspace that helps you stay organized and focused on what matters most. Whether you&#x2019;re managing tasks, tracking projects, or organizing research, each Block in Heaper can be transformed into the perfect tool for your needs.</p>]]></content:encoded></item><item><title><![CDATA[Blocks Are Your Data]]></title><description><![CDATA[<p><em>How Heaper Transforms Tags into Powerful Documents</em></p><p>In traditional systems, tags are often thought of as simple labels that help categorize or organize content. But in Heaper, tags are much more than that&#x2014;they are full-fledged documents or files themselves. In our system, we call these <strong>&#x201C;Blocks.&#x201D;</strong></p>]]></description><link>https://blog.heaper.de/blocks-are-your-data/</link><guid isPermaLink="false">6784614be8c9cb00014c10b8</guid><dc:creator><![CDATA[Jan Lunge]]></dc:creator><pubDate>Mon, 13 Jan 2025 00:46:37 GMT</pubDate><content:encoded><![CDATA[<p><em>How Heaper Transforms Tags into Powerful Documents</em></p><p>In traditional systems, tags are often thought of as simple labels that help categorize or organize content. But in Heaper, tags are much more than that&#x2014;they are full-fledged documents or files themselves. In our system, we call these <strong>&#x201C;Blocks.&#x201D;</strong> These Blocks are the backbone of the Heaper platform, turning what would be basic metadata into powerful, actionable pieces of content. Instead of just labeling your work, tags in Heaper can link to detailed reports, checklists, images, videos, and more, transforming them into dynamic reference points that help you stay organized, efficient, and connected.</p><h3 id="tags-as-blocks-beyond-simple-labels">Tags as Blocks: Beyond Simple Labels</h3><p>Imagine if every tag you used could not only categorize your content but also serve as a reference point that you can build upon. This is exactly what happens in Heaper. When you tag a document, task, or piece of content, you&#x2019;re not just assigning a label&#x2014;you&#x2019;re creating a <strong>Block</strong> that can contain rich text, files, and even interactive apps. These Blocks are the heart of Heaper&#x2019;s flexible organizational structure.</p><p>Rather than navigating through complex folder hierarchies or trying to find files that seem to &#x201C;belong&#x201D; in multiple places, you can simply tag content with relevant keywords and easily access it from any related Block. For example, a project plan might be tagged with &#x201C;Research,&#x201D; &#x201C;Task List,&#x201D; and &#x201C;Meeting Notes.&#x201D; Each of these tags is a Block, and clicking on a tag will give you quick access to the relevant content&#x2014;whether it&#x2019;s a document, checklist, or video&#x2014;without the need to open multiple files or search through your system.</p><h3 id="linking-tags-to-content-a-new-way-to-find-and-connect-your-work">Linking Tags to Content: A New Way to Find and Connect Your Work</h3><p>The power of Blocks lies in their ability to <strong>link</strong> directly to your content, creating a seamless experience when you&#x2019;re looking for related materials. Instead of manually searching through folders or trying to remember where you put that specific document, you can simply click on a Block and find everything tagged with it. This makes it incredibly easy to quickly retrieve related files and dive deeper into the specifics of your project, task, or idea.</p><p>For instance, let&#x2019;s say you are working on a report. You can tag your report with the Block &#x201C;Project A&#x201D; to link it with all the relevant documents, such as meeting notes, progress reports, and research. When you click on the &#x201C;Project A&#x201D; tag, you not only get a list of everything tagged with &#x201C;Project A&#x201D; but also see the connected Blocks that give you all the context you need.</p><p>This interconnectedness makes the search process faster and far more meaningful than traditional folder systems or simple tag-based searching. You don&#x2019;t just find files that match your search term&#x2014;you find <strong>related content</strong> that&#x2019;s organized through intelligent connections, making it easier to gather everything you need to continue working efficiently.</p><h3 id="tags-as-interactive-documents-and-apps">Tags as Interactive Documents and Apps</h3><p>In Heaper, tags are not passive. They are <strong>interactive Blocks</strong> that can house a variety of content types, from plain text to rich media and even specialized apps. Every tag is a potential entry point into an ecosystem of rich content. These Blocks can contain:</p><p>&#x2022; <strong>Rich Text:</strong> Add detailed descriptions, project notes, or reports to provide context for the content you&#x2019;re tagging.</p><p>&#x2022; <strong>Files:</strong> Attach files, documents, or images to the Block, making it easy to keep related materials together.</p><p>&#x2022; <strong>Media:</strong> Include videos, links, or audio files that can be viewed directly within the app, finally bringing a proper tagging solution to your photos regardless how large your library is.</p><p>&#x2022; <strong>Checklists and Tasks:</strong> Manage tasks or track progress directly within the Block, using built-in apps like to-do lists, Kanban boards.</p><p>In this way, tags evolve into powerful content hubs. By adding these attributes to your tags, you&#x2019;re able to enrich your workflow and manage multiple content types under a single organizing system. Instead of having disparate files spread across different folders or platforms, everything can be grouped into these dynamic, interactive Blocks.</p><h3 id="faster-more-meaningful-connections">Faster, More Meaningful Connections</h3><p>One of the major advantages of using Blocks as tags is the ability to <strong>connect your work in a way that makes sense to you</strong>. No more digging through folders or jumping between applications&#x2014;everything is tied together by the same organizational structure. You can easily map out your projects, track tasks, and visualize your content in a way that&#x2019;s flexible and customized to your needs.</p><p>For example, imagine you&#x2019;re managing a research project. You might have a Block for each area of research, with tasks tagged for completion. Each task can be linked to its respective notes, files, or reports, and each Block can be updated with the latest progress, making it easy to track everything in real-time. These Blocks can also be accessed through different <strong>apps</strong> in the system, such as Kanban boards, tables, or calendar views, allowing you to interact with the same data in multiple ways.</p><p>This interconnected approach ensures that no information is lost, and nothing is siloed. It also provides context to every tag, making each one a jumping-off point for deeper engagement with the content.</p><h3 id="a-new-way-to-organize-data">A New Way to Organize Data</h3><p>By turning tags into Blocks, Heaper offers a flexible, powerful alternative to traditional organizational methods. Tags are no longer just labels; they are <strong>data-rich references</strong> that can hold content, provide context, and streamline your workflow. This system transforms tags into powerful organizing tools that work seamlessly with your content, rather than against it.</p><p>In Heapr, Blocks enable you to connect your work, keep related content together, and access it with ease. No matter how complex your projects or tasks become, the ability to tag them with dynamic, multi-functional Blocks helps you stay on top of everything in your workflow.</p><p>Ultimately, Blocks are your data, providing you with the tools to manage, access, and connect your content in ways that folders simply can&#x2019;t match. It&#x2019;s a more flexible, powerful approach to organizing your work&#x2014;and it&#x2019;s built to grow with you.</p>]]></content:encoded></item><item><title><![CDATA[Tags Are the New Folders]]></title><description><![CDATA[<p><em>A Flexible Approach to Organizing Your Work</em></p><p>Folders have long been the go-to method for organizing digital files. For years, we&#x2019;ve relied on them to categorize documents, images, and notes. However, folders often come with limitations&#x2014;primarily that they force documents into a single location, making them</p>]]></description><link>https://blog.heaper.de/tags-are-the-new-folders/</link><guid isPermaLink="false">67845e53e8c9cb00014c109c</guid><dc:creator><![CDATA[Jan Lunge]]></dc:creator><pubDate>Mon, 13 Jan 2025 00:38:04 GMT</pubDate><media:content url="https://blog.heaper.de/content/images/2025/01/Screenshot-2025-01-13-at-11.07.12.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.heaper.de/content/images/2025/01/Screenshot-2025-01-13-at-11.07.12.png" alt="Tags Are the New Folders"><p><em>A Flexible Approach to Organizing Your Work</em></p><p>Folders have long been the go-to method for organizing digital files. For years, we&#x2019;ve relied on them to categorize documents, images, and notes. However, folders often come with limitations&#x2014;primarily that they force documents into a single location, making them harder to find and manage. Enter <strong>tags</strong>&#x2014;a more flexible and powerful way to organize your content. In a system like the one we&#x2019;re building, tags are not just a way to label content; they act as dynamic, multi-dimensional organizers, allowing your documents to exist in multiple places at once. Let&#x2019;s explore how tags can replace folders and change the way we work.</p><h3 id="the-problem-with-folders">The Problem with Folders</h3><p>Folders are useful, but they come with certain constraints. Every file has to be placed in the &#x201C;right&#x201D; folder, which can be an ongoing challenge when there&#x2019;s no clear-cut category. If you&#x2019;ve ever spent time searching for a document you just know is in the right folder but can&#x2019;t quite recall where, you&#x2019;ve experienced the flaw of folder-based systems firsthand.</p><p>This problem is exacerbated when dealing with complex workflows where documents belong in multiple categories. For example, imagine you&#x2019;re working on a project that involves various research materials, task lists, and meeting notes. Should each document belong in a &#x201C;Research&#x201D; folder? Or a &#x201C;Inspiration&#x201D; folder? Or maybe even both? Duplicating documents across folders is a cumbersome and often inefficient solution, leading to redundant files and confusion. And what happens when documents need to move between categories? It becomes an organizational nightmare.</p><h3 id="the-power-of-tags">The Power of Tags</h3><p>With tags, this traditional limitation is removed. Tags allow documents to exist in more than one place at once. Instead of forcing a document into a singular folder, you can assign multiple tags to it, each representing a different category or context. This way, your documents can simultaneously belong to &#x201C;Research,&#x201D; &#x201C;Task List,&#x201D; and &#x201C;Meeting Notes&#x201D; without the need for duplication.</p><p>The flexibility of tags also eliminates the need to move or copy files to the right folder. Instead, you simply attach the relevant tags and your document automatically appears in all the right places. This is especially useful for complex workflows where documents can be interconnected or need to serve multiple purposes.</p><h3 id="organizing-with-tags-dynamic-not-static">Organizing with Tags: Dynamic, Not Static</h3><p>One of the main advantages of using tags is that they are <strong>dynamic</strong> rather than static. Unlike folders, which often have rigid, predetermined structures, tags are incredibly flexible. For instance, in heaper, you can add a tag to a document at any time. You don&#x2019;t have to worry about deciding the &#x201C;right&#x201D; place for it right away. Instead, you can add a note or document to your workflow and tag it later when you&#x2019;ve figured out the context.</p><p>For example, let&#x2019;s say you create a quick note while brainstorming ideas. At first, it may not fit into any specific category, so you leave it untagged, and it automatically collects in the heap. Later, you can categorize it by adding tags like &#x201C;Research,&#x201D; &#x201C;Tasks,&#x201D; or &#x201C;Upcoming Meetings.&#x201D; This process allows you to stay organized without overthinking where everything should go from the start. You focus on content first, structure second.</p><p>This approach contrasts with traditional folder systems, where you&#x2019;d have to move a document into the right folder first&#x2014;often requiring a detailed decision-making process before even starting your work. Everything is more relative so you don&apos;t need to think about &quot;where&quot; you are just how it connects to your other notes and files to navigate/</p><h3 id="building-connections-through-tags">Building Connections Through Tags</h3><p>Tags also allow for <strong>powerful connections</strong> between different documents and tasks. Since multiple tags can be applied to a single document, you can create networks of related files without worrying about their physical location. A task can be tagged with &#x201C;Project A&#x201D; and &#x201C;Priority,&#x201D; while the meeting notes related to that task can carry the same tags. As a result, both the task and the notes appear together when you filter by &#x201C;Project A&#x201D; or &#x201C;Priority.&#x201D; This enables seamless access to all relevant materials, whether you&#x2019;re looking for documents related to a particular project, client, or team.</p><p>Moreover, tags make it easier to view your content in <strong>different contexts</strong>. You can have a list of tasks, for example, where each task is tagged according to project, priority, or person. A simple app in your system can then display these tasks as a Kanban board, while another app can show them as a list by person.</p><p>Tags essentially give you the power to <strong>visualize</strong> and <strong>interact</strong> with your data in a more intuitive, fluid way than folders ever could. They enable you to switch between different perspectives without needing to reorganize the underlying structure of your documents.</p><h3 id="scalability-and-flexibility">Scalability and Flexibility</h3><p>The most compelling reason to use tags over folders is <strong>scalability</strong>. As your project grows, you don&#x2019;t have to worry about outgrowing your folder structure or needing to create more complex folder hierarchies. You can simply continue to add more tags to your documents. Because tags are metadata attached to the content itself, they grow naturally with the work.</p><p>Additionally, tags are extensible. If you later realize that you need more specific categorization&#x2014;like a new task type or a subcategory for a particular project&#x2014;you can easily create new tags and apply them across your entire system. In contrast, modifying folder structures often requires more work and can lead to disruptions in your workflow.</p><h3 id="tags-the-future-of-organization">Tags: The Future of Organization</h3><p>The shift from folders to tags is more than just a new way to organize documents&#x2014;it&#x2019;s a <strong>fundamental shift in how we think about our work</strong>. With tags, you&#x2019;re no longer confined to rigid, static structures. You have the freedom to tag documents with multiple labels and view them from different angles, creating a more dynamic, adaptable workflow. In a system built around this flexibility, you can spend less time managing files and more time doing meaningful work.</p>]]></content:encoded></item><item><title><![CDATA[Exporting Microsoft Todo Data]]></title><description><![CDATA[<p>In today&apos;s digital age, managing and migrating data between different applications can be a daunting task. When you export your data from Microsoft Todo you will need to do a full export from outlook of your entire postbox, this will result in a Outlook PST file which you</p>]]></description><link>https://blog.heaper.de/exporting-microsoft-todo-data/</link><guid isPermaLink="false">664dc91c3b27b700013c345f</guid><dc:creator><![CDATA[Jan Lunge]]></dc:creator><pubDate>Wed, 22 May 2024 10:38:18 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1662027008658-b615840c7deb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDI5fHx0b2RvfGVufDB8fHx8MTcxNjM3NDUzNHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1662027008658-b615840c7deb?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDI5fHx0b2RvfGVufDB8fHx8MTcxNjM3NDUzNHww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Exporting Microsoft Todo Data"><p>In today&apos;s digital age, managing and migrating data between different applications can be a daunting task. When you export your data from Microsoft Todo you will need to do a full export from outlook of your entire postbox, this will result in a Outlook PST file which you need to convert to JSON for use in another applications, this guide will walk you through the process using libpff and a custom Go script on macOS to convert the PST into normalized JSON for you to import into other tools like Heaper.</p><h4 id="prerequisites">Prerequisites</h4><ul><li>Basic understanding of the terminal and Go programming language.</li><li><code>libpff</code> library installed on macOS.</li><li>Exported PST data using <code>pffexport</code>.</li></ul><h4 id="step-1-install-libpff-on-macos">Step 1: Install libpff on macOS</h4><p>First, we need to install the <code>libpff</code> library, which allows us to work with PST files. Here&#x2019;s how you can install it using Homebrew:</p><pre><code class="language-bash">bash -c &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&quot;
brew install autoconf automake libtool pkg-config gcc
brew install wget

wget https://github.com/libyal/libpff/releases/download/20231205/libpff-alpha-20231205.tar.gz
tar -xzf libpff-alpha-20231205.tar.gz
cd libpff-alpha-20231205

./configure
make
sudo make install</code></pre><h4 id="step-2-export-pst-data-to-files">Step 2: Export PST Data to Files</h4><p>Using <code>pffexport</code>, you can extract the contents of a PST file into a directory. This directory will contain <code>Task.txt</code> and possibly <code>Message.txt</code> files.</p><pre><code class="language-bash">shmkdir pst_export
pffexport -t pst_export yourfile.pst</code></pre><p>look for the exported directory in this folder and insert the path into the script below</p><h4 id="step-3-write-a-go-script-to-convert-data-to-json">Step 3: Write a Go Script to Convert Data to JSON</h4><p>We need a script that will:</p><ol><li>Scan the exported directory for <code>Task.txt</code> files.</li><li>Check for corresponding <code>Message.txt</code> files.</li><li>Extract the parent folder name two levels up.</li><li>Save all data into a JSON file.</li></ol><p>Here&#x2019;s the Go script to achieve this:</p><pre><code class="language-go">package main

import (
	&quot;encoding/json&quot;
	&quot;fmt&quot;
	&quot;io/ioutil&quot;
	&quot;os&quot;
	&quot;path/filepath&quot;
	&quot;strings&quot;
)

// Task represents a single task with key-value pairs.
type Task struct {
	ParentFolder string            `json:&quot;parent_folder&quot;`
	Fields       map[string]string `json:&quot;fields&quot;`
	Message      string            `json:&quot;message,omitempty&quot;`
}

// ExtractTasks walks through the given directory and extracts tasks from Task.txt files.
func ExtractTasks(directory string) ([]Task, error) {
	var tasks []Task
	err := filepath.Walk(directory, func(path string, info os.FileInfo, err error) error {
		if err != nil {
			return err
		}
		if !info.IsDir() &amp;&amp; strings.HasSuffix(info.Name(), &quot;Task.txt&quot;) {
			task, err := parseTask(path)
			if err != nil {
				return err
			}
			tasks = append(tasks, task)
		}
		return nil
	})
	return tasks, err
}

// ParseTask reads and parses a single task from the given Task.txt file path.
func parseTask(path string) (Task, error) {
	content, err := ioutil.ReadFile(path)
	if err != nil {
		return Task{}, err
	}
	lines := strings.Split(string(content), &quot;\n&quot;)
	fields := make(map[string]string)
	for _, line := range lines {
		if strings.Contains(line, &quot;:&quot;) {
			parts := strings.SplitN(line, &quot;:&quot;, 2)
			key := strings.TrimSpace(parts[0])
			value := strings.TrimSpace(parts[1])
			fields[key] = value
		}
	}

	// Check for a corresponding Message.txt file
	messagePath := strings.Replace(path, &quot;Task.txt&quot;, &quot;Message.txt&quot;, 1)
	var message string
	if _, err := os.Stat(messagePath); err == nil {
		msgContent, err := ioutil.ReadFile(messagePath)
		if err == nil {
			message = string(msgContent)
		}
	}

	// Get parent folder name two levels up
	parentFolder := filepath.Base(filepath.Dir(filepath.Dir(path)))

	task := Task{
		ParentFolder: parentFolder,
		Fields:       fields,
		Message:      message,
	}
	return task, nil
}

// WriteJSON writes the tasks to a JSON file.
func WriteJSON(tasks []Task, jsonFile string) error {
	file, err := os.Create(jsonFile)
	if err != nil {
		return err
	}
	defer file.Close()

	encoder := json.NewEncoder(file)
	encoder.SetIndent(&quot;&quot;, &quot;  &quot;)
	err = encoder.Encode(tasks)
	if err != nil {
		return err
	}

	return nil
}

func main() {
	exportedDirectory := &quot;./Data/Top of Personal Folders/Aufgaben&quot; // Adjust the directory name to your actual path
	jsonOutput := &quot;tasks.json&quot;

	tasks, err := ExtractTasks(exportedDirectory)
	if err != nil {
		fmt.Printf(&quot;Error extracting tasks: %v\n&quot;, err)
		return
	}

	err = WriteJSON(tasks, jsonOutput)
	if err != nil {
		fmt.Printf(&quot;Error writing JSON: %v\n&quot;, err)
		return
	}

	fmt.Println(&quot;JSON file created successfully.&quot;)
}</code></pre><h4 id="step-4-run-the-go-script">Step 4: Run the Go Script</h4><ol><li>Save the script to a file named <code>convert_to_json.go</code>.</li><li>Open a terminal and navigate to the directory containing the script.</li><li>Run the script using:</li></ol><pre><code class="language-bash">go run convert_to_json.go</code></pre><p>Ensure that the <code>pst export</code> directory contains the appropriate files (<code>Task.txt</code> and optional <code>Message.txt</code>). The script will process these files and create a <code>tasks.json</code> file in the same directory.</p><h3 id="conclusion">Conclusion</h3><p>With this approach, you can efficiently convert Outlook PST files into JSON format on macOS, enabling seamless data migration to other applications. This method leverages the power of Go for parsing and processing files, providing a robust and customizable solution.</p>]]></content:encoded></item><item><title><![CDATA[Why Self-Hosting Heaper?]]></title><description><![CDATA[<div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x26A0;&#xFE0F;</div><div class="kg-callout-text">this an old guide please follow: <a href="https://docs.heaper.de/docs/self-hosting?ref=blog.heaper.de">https://docs.heaper.de/docs/self-hosting</a></div></div><p></p><p>Self-hosting Heaper provides you with full control over your data, offering a level of security and flexibility that is not possible with cloud services. By running Heaper on your own hardware, you ensure that your data</p>]]></description><link>https://blog.heaper.de/self-hosting/</link><guid isPermaLink="false">664dc189010fa900012b00b5</guid><dc:creator><![CDATA[Jan Lunge]]></dc:creator><pubDate>Wed, 22 May 2024 09:57:29 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1517819655378-25fe37197692?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDEzfHxuYXN8ZW58MHx8fHwxNzM3MDY5MjkwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<div class="kg-card kg-callout-card kg-callout-card-blue"><div class="kg-callout-emoji">&#x26A0;&#xFE0F;</div><div class="kg-callout-text">this an old guide please follow: <a href="https://docs.heaper.de/docs/self-hosting?ref=blog.heaper.de">https://docs.heaper.de/docs/self-hosting</a></div></div><img src="https://images.unsplash.com/photo-1517819655378-25fe37197692?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDEzfHxuYXN8ZW58MHx8fHwxNzM3MDY5MjkwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Why Self-Hosting Heaper?"><p></p><p>Self-hosting Heaper provides you with full control over your data, offering a level of security and flexibility that is not possible with cloud services. By running Heaper on your own hardware, you ensure that your data is private and always accessible, even if the company behind Heaper ceases to operate. This guide explains the benefits of self-hosting Heaper and provides the initial steps to get you started.</p><h3 id="full-control-over-your-data">Full Control Over Your Data</h3><p>When you self-host Heaper, you retain complete control over your data. Instead of relying on third-party services, your information stays in your hands. This means that even in the unlikely event that the company behind Heaper shuts down, your data and access to Heaper will remain intact. Self-hosting ensures that your data remains private, secure, and under your management, giving you peace of mind.</p><h3 id="containerized-architecture">Containerized Architecture</h3><p>Heaper is designed to be self-hosted using Docker containers. It runs a Go-based backend and uses ArangoDB, a graph-based NoSQL database, for data storage. This setup provides you with a powerful backend that is easy to manage and scale. ArangoDB also includes an explorer that lets you access and manage your data without requiring any coding experience.</p><h3 id="access-heaper-from-anywhere">Access Heaper from Anywhere</h3><p>For maximum flexibility, Heaper can be run on a NAS or server within your home network, allowing you to access your self-hosted Heaper instance remotely. Whether through port forwarding or a VPN, you can manage your Heaper instance from anywhere, giving you the ability to stay productive even on the go.</p><h3 id="getting-started">Getting Started</h3><h3 id="step-1-install-docker">Step 1: Install Docker</h3><p>To run Heaper, you&#x2019;ll need Docker installed on your system. Docker simplifies the process of running Heaper by isolating its dependencies in containers, making it easier to maintain and update.</p><p>If you&#x2019;re new to Docker, you can download Docker Desktop <a href="https://www.docker.com/products/docker-desktop?ref=blog.heaper.de">here</a>.</p><p>there are 2 ways to work with docker, either you run each container as a command or you have their state and environment managed with docker-compose. we will show both ways here</p><h3 id="step-2-using-docker">Step 2: using docker</h3><p>Heaper uses ArangoDB for data storage. To start the database, run the following Docker command:</p><pre><code class="language-bash">docker run -d -p 8529:8529 -e ARANGO_ROOT_PASSWORD=password -v /tmp/arangodb:/var/lib/arangodb3 --name arangodb-instance arangodb</code></pre><p>This will launch ArangoDB and expose it on localhost:8529.</p><p>Once the database is set up, you can start Heaper. Use the following Docker command to run Heaper with the necessary environment variables:</p><pre><code class="language-bash">docker container run \
--restart unless-stopped \
-v /mnt/user/appdata/heaper/config:/usr/src/app/config \
-v /mnt/user/appdata/heaper/ssl:/usr/src/app/ssl \
-e DB_HOST=http://10.0.1.1:8529 \
-e DB_NAME=heaper \
-e DB_PASS=password \
-e HTTPS_ENABLED=true \
-p 3000:3000 \
-d \
--name heaper \
ghcr.io/janlunge/heaper:latest</code></pre><p>Note that when enabling HTTPS (HTTPS_ENABLED=true), you&#x2019;ll need to supply your own SSL certificates, which should be placed in the ssl directory.</p><h3 id="step-2-using-docker-compose">Step 2: using docker compose</h3><p>first create the web network to map both containers together</p><p><code>docker network create web</code></p><pre><code class="language-yaml">services:
  arangodb:
    image: arangodb/arangodb:3.10.13
    # its more secure to not expose the datase port
    # ports:
    #  - &quot;8529:8529&quot;
    networks:
      - web
    environment:
      - ARANGO_ROOT_PASSWORD=maythetagsbewithyou
    volumes:
      - ./heaper/arango_data:/var/lib/arangodb3
      - ./heaper/arango_apps:/var/lib/arangodb3-apps
      - ./heaper/backups:/mnt/dbbackups

  heaper:
    # image: ghcr.io/janlunge/heaper:latest
    build:
      context: .
      dockerfile: Dockerfile
      target: combined
      args:
        - VERSION=dev-version
        - VITE_APP_VERSION=dev-version
        - VITE_APP_BUILD_TIME=dev-build-time
        - VITE_APP_COMMIT_HASH=dev-commit-hash
    platform: linux/amd64
    ports:
      - &quot;3000:3000&quot;
    environment:  
      - DB_HOST=http://arangodb:8529
      - DB_USER=root
      - DB_NAME=heaper
      - DB_PASS=maythetagsbewithyou
      - HTTPS_ENABLED=true
    # you can also use a .env file
    # env_file:
    #   - .env.local
    depends_on:
      - arangodb
    networks:
      - web
    volumes:
      - ./heaper/config:/usr/src/app/config
      - ./heaper/thumbnails:/mnt/thumbnails
      - ./heaper/storage:/mnt/storage
    # - /Users/janlunge/Documents:/mnt/storage/01JHQXJNZFVAV487BH4TFTGM1H/W2
networks:
  web:
    name: web
    external: true

</code></pre><p>and run this with <code>docker-compose up</code></p><blockquote>If you change the root password for arangodb also change the credentials in the heaper config to connect to the db, to use the arangodb web interface please choose a password without special characters. the password is only set during container creation for the db so you need to clear its data if you want to change the root pw later without using the web interface at port 8529</blockquote><h3 id="step-3-login-and-configure">Step 3: Login and Configure</h3><p>open the web interface at the ip address of your server with the port 3000 (you can change the mapping of this port in the docker compose eg. 3005:3000 to map it to port 3005) for example go to https://localhost:3000/ to make your browser always trust the certificate double click on the cert file in config/ssl/server.crt and set it to always trust.</p><p>Once Heaper is running, you can log in with the default credentials (admin, &quot;may the tags be with you&quot;), and you&#x2019;ll be able to change your username and password in the settings. This is also where you can find your user ID. you can find the user id also from the storage/USERID folders.</p><p>Your user ID is important because it allows you to map specific folders to individual users in the container. This means you can configure personal storage locations for different users on your system.</p><h3 id="step-4-map-folders-for-storage">Step 4: Map Folders for Storage</h3><p>To map folders for users, you&#x2019;ll need to specify directories for items like thumbnails and user-specific storage. </p><p>if you used the docker way you will need to remove the container with <code>docker container rm heaper</code> and then recreate it with the new config, the data is saved in volume mounts and the database so you will not lose data by destroying the container.</p><p>Here&#x2019;s an example of how to map folders for a specific user: </p><pre><code class="language-bash">docker container run \
--restart unless-stopped \
-v /mnt/user/appdata/heaper/config:/usr/src/app/config \
-v /mnt/user/appdata/heaper/thumbnails:/mnt/thumbnails \
-v /mnt/user/PersonalFiles:/mnt/storage/01JAXVAZJGXJNEPH9T1BMAQNDG/Workspace \
-v /mnt/user/appdata/heaper/ssl:/usr/src/app/ssl \
-e DB_HOST=http://10.0.1.1:8529 \
-e DB_NAME=heaper \
-e DB_PASS=password \
-e HTTPS_ENABLED=true \
-p 3000:3000 \
-d \
--name heaper \
ghcr.io/janlunge/heaper:latest</code></pre><p>This command ensures that user data is mapped correctly for previews and file storage, allowing Heaper to function as a multi-user environment.</p><p>with the docker compose way you just add the volume mapping like the Documents folder in the docker-compose and restart the heaper container with <code>docker-compose stop heaper</code> and <code>docker-compose up -d heaper</code></p>]]></content:encoded></item></channel></rss>