Browse Source

New blog post

master
Nicolas Petton 2 years ago
parent
commit
6ff1c00d0a
Signed by: nico GPG Key ID: 233587A47C207910
14 changed files with 594 additions and 4 deletions
  1. +136
    -0
      _posts/2017-11-30-elbank-intro.markdown
  2. +6
    -1
      _site/css/cafe.css
  3. +299
    -0
      _site/elbank/emacs/2017/11/30/elbank-intro.html
  4. +135
    -2
      _site/feed.xml
  5. BIN
     
  6. BIN
     
  7. BIN
     
  8. BIN
     
  9. +12
    -0
      _site/index.html
  10. +6
    -1
      css/cafe.css
  11. BIN
     
  12. BIN
     
  13. BIN
     
  14. BIN
     

+ 136
- 0
_posts/2017-11-30-elbank-intro.markdown View File

@@ -0,0 +1,136 @@
---
layout: post
title: "Introducing Elbank"
date: 2017-11-30 14:28:00 +0100
author: Nicolas Petton
categories: elbank emacs
description: "Elbank is a personal finances and budgeting package for Emacs."
---

[Elbank](https://github.com/NicolasPetton/elbank) is a new Emacs package I've
been working on lately. It's a *personal finances* and *budgeting* package for
Emacs that uses [Weboob](https://weboob.org) for scraping data from bank
websites.

![Overview buffer](/img/elbank-overview.png)

I started building Elbank after using [Ledger](https://github.com/ledger/ledger)
for several years. While Ledger is a real gem, I didn't want to spend time
doing bookkeeping anymore.

Instead, I wanted a simple reporting tool that would automatically scrap data
and build reports within Emacs from it.

## Setting up Weboob

To use Elbank, you will first have to [install
Weboob](https://weboob.org/install). Weboob is a collection of applications
used to interact with websites from the command-line. Elbank uses the banking
application named `boobank` to scrap data.

The list of currently supported bank websites is available [on this
page](http://weboob.org/applications/boobank).

Fortunately, installing Weboob should be a breeze as there are
[packages](http://weboob.org/install) for most GNU/Linux distros, and an
[homebrew formula](http://formulae.brew.sh/formula/weboob) for Mac users.

Once Weboob is installed, run `boobank` in a console to setup your accounts.

## Installing Elbank

You can now install elbank from [MELPA](https://melpa.org)[^1] by
running `M-x package-install RET elbank RET`, and voila!

## Using Elbank

### The overview buffer

Run `M-x elbank-overview` to get started. The overview buffer lists all
accounts as custom reports and budgets.

Press `u` to import the bank statements from your bank website.

You can click on each account or report displayed in the buffer to open them.

## Categorizing transactions

Transaction categories is an important aspect of Elbank. Categories make it
possible to filter and budget.

Transactions are automatically categorized when reporting, using the custom
variable `elbank-categories`.

Here's an example value for `elbank-categories`, you should adjust it based on
your own transactions and categorizing needs.

```emacs-lisp
(setq elbank-categories
'(("Expenses:Food" . ("^supermarket"
"^restaurant"
"Local store XXX"
"Bakery XXX"))
("Expenses:Rent" . ("Real Estate Agency XXX"))
("Income:Salary" . ("Bank transfer from Company XXX"))))
```

Each transaction's text is matched against the regular expressions of
`elbank-categories`, the first match defines the category of a transaction.

### Reports

Evaluate `M-x elbank-report` to create a new report. The command will ask you
for an account, period and category, which are all optional.

![Report](/img/elbank-report-example.png)

Here's the list of keybindings available in a report buffer:

- `f c`: Filter the transactions by category
- `f a`: Only show transactions in a specified account
- `f p`: Select the period of the report
- `G`: Group transactions by some property
- `S`: Sort transactions
- `s`: Reverse the sort order
- `M-p`: Move backward by one period (month or year)
- `M-n`: Move forward by one period (month or year)

You can also customize the variable `elbank-saved-monthly-reports` and
`elbank-saved-yearly-reports` to conveniently get a quick list of commonly used
reports from the overview buffer.

### Budgeting

The custom variable `elbank-budget` is used to define a monthy budget. It
defines how much money we want to spend by category of transaction, like
`"Food"` or `"Rent"`.

```emacs-lisp
(setq elbank-budget '(("Expenses:Food" . 300)
("Expenses:Rent" . 450)
("Expenses:Transport" . 120)
("Expenses:Utilities" . 145)))
```

Note that budgeted amounts are positive numbers while expenses have negative
values.

Press `b` from the overview buffer or evaluate `M-x elbank-budget-report` to see
your expenses based on your budget.

![Budget report](/img/elbank-budget-report.png)

You can switch periods with `M-p` and `M-n` the same way as in report buffers.

## Conclusion

That's all for now!

Elbank is still in its infancy, but I'm already using it daily. If you find any
bug or would like to suggest improvements, feel free to open a ticket on the
[GitHub project](https://github.com/NicolasPetton/elbank).


[^1]: As of today, the package is not yet in MELPA, but a [pull
request](https://github.com/melpa/melpa/pull/5157) is in review to add it to
the repository.

+ 6
- 1
_site/css/cafe.css View File

@@ -13,7 +13,7 @@ h1, h2, h3, .site-header, .site-footer, .post-meta {
font-family: "Lato", "Helvetica Neue", Helvetica, sans-serif;
}

h1, h2, h3, .site-title {
h1, h2, h3, h4, .site-title {
font-weight: 900;
color: #444;
}
@@ -54,3 +54,8 @@ pre, code,
background: #fafafa;
line-height: 1.5em;
}

.footnotes {
border-top: 1px solid #aaa;
margin-top: 20px;
}

+ 299
- 0
_site/elbank/emacs/2017/11/30/elbank-intro.html View File

@@ -0,0 +1,299 @@
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">

<title>Introducing Elbank</title>
<meta name="description" content="Elbank is a new Emacs package I’ve been working on lately. It’s a personal finances and budgeting package for Emacs that uses Weboob for scraping data from b...">

<link rel="shortcut icon" type="image/png" href="/favicon.png"/>
<link href="https://fonts.googleapis.com/css?family=Fira+Mono|Gentium+Book+Basic|Lato" rel="stylesheet">
<link rel="stylesheet" href="/assets/main.css">
<link rel="stylesheet" href="/css/cafe.css">
<link rel="canonical" href="https://emacs.cafe/elbank/emacs/2017/11/30/elbank-intro.html">
<link rel="alternate" type="application/rss+xml" title="Emacs café" href="/feed.xml">
</head>


<body>

<header class="site-header" role="banner">

<div class="wrapper">
<a class="site-title" href="/"><img src="/img/emacscafe.png"/>Emacs café</a>
<nav class="site-nav">
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger">
<span class="menu-icon">
<svg viewBox="0 0 18 15" width="18px" height="15px">
<path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/>
<path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/>
<path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/>
</svg>
</span>
</label>

<div class="trigger">
<a class="page-link" href="/about/">About Emacs café</a>
</div>
</nav>
</div>
</header>


<main class="page-content" aria-label="Content">
<div class="wrapper">
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">

<header class="post-header">
<h1 class="post-title" itemprop="name headline">Introducing Elbank</h1>
<p class="post-meta">
<time datetime="2017-11-30T14:28:00+01:00" itemprop="datePublished">
Nov 30, 2017
</time>
• <span itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">Nicolas Petton</span></span>
</p>
</header>

<div class="post-content" itemprop="articleBody">
<p><a href="https://github.com/NicolasPetton/elbank">Elbank</a> is a new Emacs package I’ve
been working on lately. It’s a <em>personal finances</em> and <em>budgeting</em> package for
Emacs that uses <a href="https://weboob.org">Weboob</a> for scraping data from bank
websites.</p>

<p><img src="/img/elbank-overview.png" alt="Overview buffer" /></p>

<p>I started building Elbank after using <a href="https://github.com/ledger/ledger">Ledger</a>
for several years. While Ledger is a real gem, I didn’t want to spend time
doing bookkeeping anymore.</p>

<p>Instead, I wanted a simple reporting tool that would automatically scrap data
and build reports within Emacs from it.</p>

<h2 id="setting-up-weboob">Setting up Weboob</h2>

<p>To use Elbank, you will first have to <a href="https://weboob.org/install">install
Weboob</a>. Weboob is a collection of applications
used to interact with websites from the command-line. Elbank uses the banking
application named <code class="highlighter-rouge">boobank</code> to scrap data.</p>

<p>The list of currently supported bank websites is available <a href="http://weboob.org/applications/boobank">on this
page</a>.</p>

<p>Fortunately, installing Weboob should be a breeze as there are
<a href="http://weboob.org/install">packages</a> for most GNU/Linux distros, and an
<a href="http://formulae.brew.sh/formula/weboob">homebrew formula</a> for Mac users.</p>

<p>Once Weboob is installed, run <code class="highlighter-rouge">boobank</code> in a console to setup your accounts.</p>

<h2 id="installing-elbank">Installing Elbank</h2>

<p>You can now install elbank from <a href="https://melpa.org">MELPA</a><sup id="fnref:1"><a href="#fn:1" class="footnote">1</a></sup> by
running <code class="highlighter-rouge">M-x package-install RET elbank RET</code>, and voila!</p>

<h2 id="using-elbank">Using Elbank</h2>

<h3 id="the-overview-buffer">The overview buffer</h3>

<p>Run <code class="highlighter-rouge">M-x elbank-overview</code> to get started. The overview buffer lists all
accounts as custom reports and budgets.</p>

<p>Press <code class="highlighter-rouge">u</code> to import the bank statements from your bank website.</p>

<p>You can click on each account or report displayed in the buffer to open them.</p>

<h2 id="categorizing-transactions">Categorizing transactions</h2>

<p>Transaction categories is an important aspect of Elbank. Categories make it
possible to filter and budget.</p>

<p>Transactions are automatically categorized when reporting, using the custom
variable <code class="highlighter-rouge">elbank-categories</code>.</p>

<p>Here’s an example value for <code class="highlighter-rouge">elbank-categories</code>, you should adjust it based on
your own transactions and categorizing needs.</p>

<div class="language-emacs-lisp highlighter-rouge"><pre class="highlight"><code><span class="p">(</span><span class="k">setq</span> <span class="nv">elbank-categories</span>
<span class="o">'</span><span class="p">((</span><span class="s">"Expenses:Food"</span> <span class="o">.</span> <span class="p">(</span><span class="s">"^supermarket"</span>
<span class="s">"^restaurant"</span>
<span class="s">"Local store XXX"</span>
<span class="s">"Bakery XXX"</span><span class="p">))</span>
<span class="p">(</span><span class="s">"Expenses:Rent"</span> <span class="o">.</span> <span class="p">(</span><span class="s">"Real Estate Agency XXX"</span><span class="p">))</span>
<span class="p">(</span><span class="s">"Income:Salary"</span> <span class="o">.</span> <span class="p">(</span><span class="s">"Bank transfer from Company XXX"</span><span class="p">))))</span>
</code></pre>
</div>

<p>Each transaction’s text is matched against the regular expressions of
<code class="highlighter-rouge">elbank-categories</code>, the first match defines the category of a transaction.</p>

<h3 id="reports">Reports</h3>

<p>Evaluate <code class="highlighter-rouge">M-x elbank-report</code> to create a new report. The command will ask you
for an account, period and category, which are all optional.</p>

<p><img src="/img/elbank-report-example.png" alt="Report" /></p>

<p>Here’s the list of keybindings available in a report buffer:</p>

<ul>
<li><code class="highlighter-rouge">f c</code>: Filter the transactions by category</li>
<li><code class="highlighter-rouge">f a</code>: Only show transactions in a specified account</li>
<li><code class="highlighter-rouge">f p</code>: Select the period of the report</li>
<li><code class="highlighter-rouge">G</code>: Group transactions by some property</li>
<li><code class="highlighter-rouge">S</code>: Sort transactions</li>
<li><code class="highlighter-rouge">s</code>: Reverse the sort order</li>
<li><code class="highlighter-rouge">M-p</code>: Move backward by one period (month or year)</li>
<li><code class="highlighter-rouge">M-n</code>: Move forward by one period (month or year)</li>
</ul>

<p>You can also customize the variable <code class="highlighter-rouge">elbank-saved-monthly-reports</code> and
<code class="highlighter-rouge">elbank-saved-yearly-reports</code> to conveniently get a quick list of commonly used
reports from the overview buffer.</p>

<h3 id="budgeting">Budgeting</h3>

<p>The custom variable <code class="highlighter-rouge">elbank-budget</code> is used to define a monthy budget. It
defines how much money we want to spend by category of transaction, like
<code class="highlighter-rouge">"Food"</code> or <code class="highlighter-rouge">"Rent"</code>.</p>

<div class="language-emacs-lisp highlighter-rouge"><pre class="highlight"><code><span class="p">(</span><span class="k">setq</span> <span class="nv">elbank-budget</span> <span class="o">'</span><span class="p">((</span><span class="s">"Expenses:Food"</span> <span class="o">.</span> <span class="mi">300</span><span class="p">)</span>
<span class="p">(</span><span class="s">"Expenses:Rent"</span> <span class="o">.</span> <span class="mi">450</span><span class="p">)</span>
<span class="p">(</span><span class="s">"Expenses:Transport"</span> <span class="o">.</span> <span class="mi">120</span><span class="p">)</span>
<span class="p">(</span><span class="s">"Expenses:Utilities"</span> <span class="o">.</span> <span class="mi">145</span><span class="p">)))</span>
</code></pre>
</div>

<p>Note that budgeted amounts are positive numbers while expenses have negative
values.</p>

<p>Press <code class="highlighter-rouge">b</code> from the overview buffer or evaluate <code class="highlighter-rouge">M-x elbank-budget-report</code> to see
your expenses based on your budget.</p>

<p><img src="/img/elbank-budget-report.png" alt="Budget report" /></p>

<p>You can switch periods with <code class="highlighter-rouge">M-p</code> and <code class="highlighter-rouge">M-n</code> the same way as in report buffers.</p>

<h2 id="conclusion">Conclusion</h2>

<p>That’s all for now!</p>

<p>Elbank is still in its infancy, but I’m already using it daily. If you find any
bug or would like to suggest improvements, feel free to open a ticket on the
<a href="https://github.com/NicolasPetton/elbank">GitHub project</a>.</p>

<div class="footnotes">
<ol>
<li id="fn:1">
<p>As of today, the package is not yet in MELPA, but a <a href="https://github.com/melpa/melpa/pull/5157">pull
request</a> is in review to add it to
the repository.&nbsp;<a href="#fnref:1" class="reversefootnote">&#8617;</a></p>
</li>
</ol>
</div>

</div>


<div id="disqus_thread"></div>
<script>
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'emacs-cafe';

/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>


</article>

</div>
</main>

<footer class="site-footer">

<div class="wrapper">

<h2 class="footer-heading">Emacs café</h2>

<div class="footer-col-wrapper">
<div class="footer-col footer-col-1">
<ul class="contact-list">
<li>
Emacs café
</li>
<li><a href="mailto:nicolas@petton.fr">nicolas@petton.fr</a></li>
</ul>
</div>

<div class="footer-col footer-col-2">
<ul class="social-media-list">
<li>
<a href="https://github.com/NicolasPetton"><span class="icon icon--github"><svg viewBox="0 0 16 16" width="16px" height="16px"><path fill="#828282" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"/></svg>
</span><span class="username">NicolasPetton</span></a>

</li>

<li>
<a href="https://twitter.com/NicolasPetton"><span class="icon icon--twitter"><svg viewBox="0 0 16 16" width="16px" height="16px"><path fill="#828282" d="M15.969,3.058c-0.586,0.26-1.217,0.436-1.878,0.515c0.675-0.405,1.194-1.045,1.438-1.809c-0.632,0.375-1.332,0.647-2.076,0.793c-0.596-0.636-1.446-1.033-2.387-1.033c-1.806,0-3.27,1.464-3.27,3.27 c0,0.256,0.029,0.506,0.085,0.745C5.163,5.404,2.753,4.102,1.14,2.124C0.859,2.607,0.698,3.168,0.698,3.767 c0,1.134,0.577,2.135,1.455,2.722C1.616,6.472,1.112,6.325,0.671,6.08c0,0.014,0,0.027,0,0.041c0,1.584,1.127,2.906,2.623,3.206 C3.02,9.402,2.731,9.442,2.433,9.442c-0.211,0-0.416-0.021-0.615-0.059c0.416,1.299,1.624,2.245,3.055,2.271 c-1.119,0.877-2.529,1.4-4.061,1.4c-0.264,0-0.524-0.015-0.78-0.046c1.447,0.928,3.166,1.469,5.013,1.469 c6.015,0,9.304-4.983,9.304-9.304c0-0.142-0.003-0.283-0.009-0.423C14.976,4.29,15.531,3.714,15.969,3.058z"/></svg>
</span><span class="username">NicolasPetton</span></a>

</li>
</ul>
</div>

<div class="footer-col footer-col-3">
<p>A blog about Emacs, mostly focused on JavaScript development, by Nicolas Petton.
</p>
</div>
</div>

</div>

</footer>


</body>

</html>

+ 135
- 2
_site/feed.xml View File

@@ -1,5 +1,138 @@
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.5.1">Jekyll</generator><link href="https://emacs.cafe/feed.xml" rel="self" type="application/atom+xml" /><link href="https://emacs.cafe/" rel="alternate" type="text/html" /><updated>2017-11-10T15:59:11+01:00</updated><id>https://emacs.cafe/</id><title type="html">Emacs café</title><subtitle>A blog about Emacs, mostly focused on JavaScript development, by Nicolas Petton.
</subtitle><entry><title type="html">beginend.el</title><link href="https://emacs.cafe/emacs/package/2017/08/01/beginend.html" rel="alternate" type="text/html" title="beginend.el" /><published>2017-08-01T10:38:00+02:00</published><updated>2017-08-01T10:38:00+02:00</updated><id>https://emacs.cafe/emacs/package/2017/08/01/beginend</id><content type="html" xml:base="https://emacs.cafe/emacs/package/2017/08/01/beginend.html">&lt;p&gt;Thank you Nicolas for letting me borrow (again) your blog to talk
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.5.1">Jekyll</generator><link href="https://emacs.cafe/feed.xml" rel="self" type="application/atom+xml" /><link href="https://emacs.cafe/" rel="alternate" type="text/html" /><updated>2017-11-30T14:28:48+01:00</updated><id>https://emacs.cafe/</id><title type="html">Emacs café</title><subtitle>A blog about Emacs, mostly focused on JavaScript development, by Nicolas Petton.
</subtitle><entry><title type="html">Introducing Elbank</title><link href="https://emacs.cafe/elbank/emacs/2017/11/30/elbank-intro.html" rel="alternate" type="text/html" title="Introducing Elbank" /><published>2017-11-30T14:28:00+01:00</published><updated>2017-11-30T14:28:00+01:00</updated><id>https://emacs.cafe/elbank/emacs/2017/11/30/elbank-intro</id><content type="html" xml:base="https://emacs.cafe/elbank/emacs/2017/11/30/elbank-intro.html">&lt;p&gt;&lt;a href=&quot;https://github.com/NicolasPetton/elbank&quot;&gt;Elbank&lt;/a&gt; is a new Emacs package I’ve
been working on lately. It’s a &lt;em&gt;personal finances&lt;/em&gt; and &lt;em&gt;budgeting&lt;/em&gt; package for
Emacs that uses &lt;a href=&quot;https://weboob.org&quot;&gt;Weboob&lt;/a&gt; for scraping data from bank
websites.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/elbank-overview.png&quot; alt=&quot;Overview buffer&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I started building Elbank after using &lt;a href=&quot;https://github.com/ledger/ledger&quot;&gt;Ledger&lt;/a&gt;
for several years. While Ledger is a real gem, I didn’t want to spend time
doing bookkeeping anymore.&lt;/p&gt;

&lt;p&gt;Instead, I wanted a simple reporting tool that would automatically scrap data
and build reports within Emacs from it.&lt;/p&gt;

&lt;h2 id=&quot;setting-up-weboob&quot;&gt;Setting up Weboob&lt;/h2&gt;

&lt;p&gt;To use Elbank, you will first have to &lt;a href=&quot;https://weboob.org/install&quot;&gt;install
Weboob&lt;/a&gt;. Weboob is a collection of applications
used to interact with websites from the command-line. Elbank uses the banking
application named &lt;code class=&quot;highlighter-rouge&quot;&gt;boobank&lt;/code&gt; to scrap data.&lt;/p&gt;

&lt;p&gt;The list of currently supported bank websites is available &lt;a href=&quot;http://weboob.org/applications/boobank&quot;&gt;on this
page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Fortunately, installing Weboob should be a breeze as there are
&lt;a href=&quot;http://weboob.org/install&quot;&gt;packages&lt;/a&gt; for most GNU/Linux distros, and an
&lt;a href=&quot;http://formulae.brew.sh/formula/weboob&quot;&gt;homebrew formula&lt;/a&gt; for Mac users.&lt;/p&gt;

&lt;p&gt;Once Weboob is installed, run &lt;code class=&quot;highlighter-rouge&quot;&gt;boobank&lt;/code&gt; in a console to setup your accounts.&lt;/p&gt;

&lt;h2 id=&quot;installing-elbank&quot;&gt;Installing Elbank&lt;/h2&gt;

&lt;p&gt;You can now install elbank from &lt;a href=&quot;https://melpa.org&quot;&gt;MELPA&lt;/a&gt;&lt;sup id=&quot;fnref:1&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; by
running &lt;code class=&quot;highlighter-rouge&quot;&gt;M-x package-install RET elbank RET&lt;/code&gt;, and voila!&lt;/p&gt;

&lt;h2 id=&quot;using-elbank&quot;&gt;Using Elbank&lt;/h2&gt;

&lt;h3 id=&quot;the-overview-buffer&quot;&gt;The overview buffer&lt;/h3&gt;

&lt;p&gt;Run &lt;code class=&quot;highlighter-rouge&quot;&gt;M-x elbank-overview&lt;/code&gt; to get started. The overview buffer lists all
accounts as custom reports and budgets.&lt;/p&gt;

&lt;p&gt;Press &lt;code class=&quot;highlighter-rouge&quot;&gt;u&lt;/code&gt; to import the bank statements from your bank website.&lt;/p&gt;

&lt;p&gt;You can click on each account or report displayed in the buffer to open them.&lt;/p&gt;

&lt;h2 id=&quot;categorizing-transactions&quot;&gt;Categorizing transactions&lt;/h2&gt;

&lt;p&gt;Transaction categories is an important aspect of Elbank. Categories make it
possible to filter and budget.&lt;/p&gt;

&lt;p&gt;Transactions are automatically categorized when reporting, using the custom
variable &lt;code class=&quot;highlighter-rouge&quot;&gt;elbank-categories&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Here’s an example value for &lt;code class=&quot;highlighter-rouge&quot;&gt;elbank-categories&lt;/code&gt;, you should adjust it based on
your own transactions and categorizing needs.&lt;/p&gt;

&lt;div class=&quot;language-emacs-lisp highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;setq&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;elbank-categories&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Expenses:Food&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;^supermarket&quot;&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;&quot;^restaurant&quot;&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;&quot;Local store XXX&quot;&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;&quot;Bakery XXX&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Expenses:Rent&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Real Estate Agency XXX&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Income:Salary&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Bank transfer from Company XXX&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Each transaction’s text is matched against the regular expressions of
&lt;code class=&quot;highlighter-rouge&quot;&gt;elbank-categories&lt;/code&gt;, the first match defines the category of a transaction.&lt;/p&gt;

&lt;h3 id=&quot;reports&quot;&gt;Reports&lt;/h3&gt;

&lt;p&gt;Evaluate &lt;code class=&quot;highlighter-rouge&quot;&gt;M-x elbank-report&lt;/code&gt; to create a new report. The command will ask you
for an account, period and category, which are all optional.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/elbank-report-example.png&quot; alt=&quot;Report&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Here’s the list of keybindings available in a report buffer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;f c&lt;/code&gt;: Filter the transactions by category&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;f a&lt;/code&gt;: Only show transactions in a specified account&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;f p&lt;/code&gt;: Select the period of the report&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;G&lt;/code&gt;: Group transactions by some property&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;S&lt;/code&gt;: Sort transactions&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;s&lt;/code&gt;: Reverse the sort order&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;M-p&lt;/code&gt;: Move backward by one period (month or year)&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;M-n&lt;/code&gt;: Move forward by one period (month or year)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also customize the variable &lt;code class=&quot;highlighter-rouge&quot;&gt;elbank-saved-monthly-reports&lt;/code&gt; and
&lt;code class=&quot;highlighter-rouge&quot;&gt;elbank-saved-yearly-reports&lt;/code&gt; to conveniently get a quick list of commonly used
reports from the overview buffer.&lt;/p&gt;

&lt;h3 id=&quot;budgeting&quot;&gt;Budgeting&lt;/h3&gt;

&lt;p&gt;The custom variable &lt;code class=&quot;highlighter-rouge&quot;&gt;elbank-budget&lt;/code&gt; is used to define a monthy budget. It
defines how much money we want to spend by category of transaction, like
&lt;code class=&quot;highlighter-rouge&quot;&gt;&quot;Food&quot;&lt;/code&gt; or &lt;code class=&quot;highlighter-rouge&quot;&gt;&quot;Rent&quot;&lt;/code&gt;.&lt;/p&gt;

&lt;div class=&quot;language-emacs-lisp highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;setq&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;elbank-budget&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Expenses:Food&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;300&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Expenses:Rent&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;450&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Expenses:Transport&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;120&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Expenses:Utilities&quot;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;.&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;145&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Note that budgeted amounts are positive numbers while expenses have negative
values.&lt;/p&gt;

&lt;p&gt;Press &lt;code class=&quot;highlighter-rouge&quot;&gt;b&lt;/code&gt; from the overview buffer or evaluate &lt;code class=&quot;highlighter-rouge&quot;&gt;M-x elbank-budget-report&lt;/code&gt; to see
your expenses based on your budget.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/elbank-budget-report.png&quot; alt=&quot;Budget report&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You can switch periods with &lt;code class=&quot;highlighter-rouge&quot;&gt;M-p&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;M-n&lt;/code&gt; the same way as in report buffers.&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;That’s all for now!&lt;/p&gt;

&lt;p&gt;Elbank is still in its infancy, but I’m already using it daily. If you find any
bug or would like to suggest improvements, feel free to open a ticket on the
&lt;a href=&quot;https://github.com/NicolasPetton/elbank&quot;&gt;GitHub project&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&quot;footnotes&quot;&gt;
&lt;ol&gt;
&lt;li id=&quot;fn:1&quot;&gt;
&lt;p&gt;As of today, the package is not yet in MELPA, but a &lt;a href=&quot;https://github.com/melpa/melpa/pull/5157&quot;&gt;pull
request&lt;/a&gt; is in review to add it to
the repository.&amp;nbsp;&lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</content><author><name>Nicolas Petton</name></author><summary type="html">Elbank is a new Emacs package I’ve been working on lately. It’s a personal finances and budgeting package for Emacs that uses Weboob for scraping data from bank websites.</summary></entry><entry><title type="html">beginend.el</title><link href="https://emacs.cafe/emacs/package/2017/08/01/beginend.html" rel="alternate" type="text/html" title="beginend.el" /><published>2017-08-01T10:38:00+02:00</published><updated>2017-08-01T10:38:00+02:00</updated><id>https://emacs.cafe/emacs/package/2017/08/01/beginend</id><content type="html" xml:base="https://emacs.cafe/emacs/package/2017/08/01/beginend.html">&lt;p&gt;Thank you Nicolas for letting me borrow (again) your blog to talk
about my work. This time, this will not only be my work, but the one
of Matus Goljer too (aka &lt;a href=&quot;https://github.com/Fuco1/&quot;&gt;Fuco1&lt;/a&gt;). Let me
present &lt;a href=&quot;https://github.com/DamienCassou/beginend&quot;&gt;beginend&lt;/a&gt;.&lt;/p&gt;


BIN
View File


BIN
View File


BIN
View File


BIN
View File


+ 12
- 0
_site/index.html View File

@@ -78,6 +78,18 @@
<li>
<span class="post-meta">Nov 30, 2017</span>

<h2>
<a class="post-link" href="/elbank/emacs/2017/11/30/elbank-intro.html">Introducing Elbank</a>
</h2>
<div class="post-desc post-meta">Elbank is a personal finances and budgeting package for Emacs.</div>
</li>
<li>
<span class="post-meta">Aug 1, 2017</span>

<h2>


+ 6
- 1
css/cafe.css View File

@@ -13,7 +13,7 @@ h1, h2, h3, .site-header, .site-footer, .post-meta {
font-family: "Lato", "Helvetica Neue", Helvetica, sans-serif;
}

h1, h2, h3, .site-title {
h1, h2, h3, h4, .site-title {
font-weight: 900;
color: #444;
}
@@ -54,3 +54,8 @@ pre, code,
background: #fafafa;
line-height: 1.5em;
}

.footnotes {
border-top: 1px solid #aaa;
margin-top: 20px;
}

BIN
View File


BIN
View File


BIN
View File


BIN
View File


Loading…
Cancel
Save