You are browsing as a guest. Sign up (or log in) to start making projects!

jupeme6

@jupeme6

Joined June 1st, 2026

  • 25Devlogs
  • 7Projects
  • 6Ships
  • 96Votes
no se como cambiarme la foto de perfil
Open comments for this post

3h 35m 14s logged

Flujo 6.1. Budgets and savings goals.

Budgets. Set a monthly limit per category. A progress bar shows how much
you have spent vs the limit. The bar changes color: category color under
80 percent, ochre at 80 to 100 (almost there warning), red over 100
(over budget). The percentage and a short warning message appear next to
each bar. Delete a budget with the x button on hover.

Savings goals. Set a goal with a name, target amount and optional
deadline. The app calculates your current savings (total income minus
total expenses across all time) and shows a green progress bar toward
the goal. When you hit 100 percent the goal name turns green with a
checkmark. Useful for things like save 500 for summer trip.

Both features appear in the resumen tab below the charts. They update
automatically when you add or remove expenses. Everything is stored in
localStorage, no server.

0
0
11
Ship

What did you make?
A markdown note editor called Margen with a digital typewriter aesthetic. Three columns: sidebar with notes, raw markdown editor, live preview. The parser is written from scratch, no library. Six betas added LaTeX support with KaTeX, a formula toolbar, dark mode, ES/EN i18n, code highlighting, PWA offline, import/export, folders with colors, linked notes via [[wiki-style]] syntax, and formula OCR via Tesseract.js. Local-first, no account, no server.

What was challenging?
The markdown parser broke on multi-line constructs. Rewrote it line-by-line. KaTeX loads async so had to chain CSS then JS then auto-render. Formula OCR needed a text-to-LaTeX converter since Tesseract is for text not math.

What are you proud of?
The parser from scratch, the formula toolbar for non-LaTeX users, and the whole thing working offline as a PWA.

What should people know so they can test?
Open the demo. Choose language on first launch. Click + for new note. Type markdown, see live preview. Press ? for cheat sheet. Click “formulas” for math buttons. Click camera to scan a formula. Create folders with colors. Link notes with [[Title]]. Gear icon for dark mode and language.

Live demo: https://notjuangamer10.github.io/margen/
Source: https://github.com/notjuangamer10/margen

  • 4 devlogs
  • 22h
  • 10.32x multiplier
  • 225 Stardust
Try project → See source code →
Open comments for this post

5h 52m 23s logged

Margen Beta 6, the final version. Three new features.Folders with colors. You can create folders (subjects) and assign notes
to them. Each folder gets a color from a preset palette. The sidebar
shows a folder list above the notes, click a folder to filter. A
selector in the editor header lets you assign or change the folder of
the current note. Useful for organizing by subject: Calculus, Physics,
Programming.Linked notes. You can now link notes together using double brackets like
[[Note Title]]. The parser finds the note by title and creates a
clickable link in the preview. Click it and the linked note opens. If
the note doesn’t exist, it shows in red with strikethrough. Useful for
connecting related topics across subjects.Formula OCR. A camera button in the editor header lets you upload a
photo of a math formula. Tesseract.js extracts the text and a basic
converter turns common math notation into LaTeX: ^ becomes ^{}, sqrt
becomes \sqrt{}, int becomes \int, Greek letters get backslashed, etc.
The result is inserted at the cursor wrapped in $$ for block math. It’s
not perfect OCR (Tesseract is designed for text, not math) but it gives
you a starting point that you can edit manually.Calling Margen complete. Six betas across editor, parser, cheat sheet,
LaTeX, dark mode, i18n, code highlighting, PWA, import, export,
onboarding, shortcuts, focus mode, word count, folders, linked notes
and formula OCR.

0
0
50
Open comments for this post

7h 15m 56s logged

Margen 5.2. Onboarding, power features, and translation fixes.Language prompt on first launch. New users see a modal asking them to
choose Spanish or English before the app loads. This was the top
complaint from reviewers, who said the language toggle was hard to find.Onboarding tour. First-time visitors get a welcome screen explaining how
Margen works: type markdown on the left, see it rendered on the right,
press + for new note, press ? for cheat sheet, press “formulas” for math
buttons. Also lists the keyboard shortcuts. Dismissible with one click.Keyboard shortcuts. Ctrl+B for bold, Ctrl+I for italic, Ctrl+N for new
note, Ctrl+E for focus mode, Ctrl+S for save. The shortcuts wrap the
selected text or insert empty markers if nothing is selected.Focus mode. A toggle button (or Ctrl+E) hides the sidebar so you can
write without distractions. The editor and preview center on screen
with a max width for comfortable reading.Word counter. A small character and word count appears in the editor
header, updating live as you type.Translation fixes. The welcome note and the markdown cheat sheet now
respect the language setting and switch between Spanish and English
fully. Relative dates like “ahora mismo” now show as “just now” in
English.

0
0
9
Open comments for this post

4h 50m 5s logged

Margen 5.1. Fixes based on reviewer feedback.Full i18n. Before, switching to English left several strings in Spanish
because only parts of the UI were translated. Now everything visible
translates: buttons, placeholders, footer, header, cheat sheet, settings
panel, export/import labels. The language toggle updates the UI in real
time without needing a reload.Strikethrough support. Added text syntax to the markdown parser for
strikethrough text. Also added it to the cheat sheet.Auto-detect language. On first launch, Margen now checks the browser’s
language setting and defaults to English or Spanish accordingly. The
user can still override it in settings.Export as .md. The export button now opens a small menu with three
options: export as HTML (downloads a standalone file, no new tab),
export as Markdown (.md file), and print to PDF. Previously it only
exported HTML and opened a new tab, which was annoying.

0
0
7
Open comments for this post

3h 56m 8s logged

Beta 5 of Flujo. Improvements based on reviewer feedback.PWA installable. A service worker now caches the core files so the app
works offline on desktop and Android. The manifest is generated
dynamically. CDN assets like Tesseract.js and Google Fonts are not
cached to avoid bloat. The app itself, your expenses and charts all work
offline.Language prompt on first launch. New users now see a modal asking them
to choose Spanish or English before the app loads. This was the top
complaint from reviewers on my other projects, who said the language
toggle was hard to find.Onboarding overlay. First-time visitors get a welcome screen explaining
the four tabs (resumen, apuntes, tickets, deudas) with a short
description of each, plus tips like adding income sources first to see
the Sankey diagram. Dismissible with a single click.Fixed incomplete translations. The canvas text “sin datos para mostrar”
and “sin gastos” now respect the language setting. The footer and header
subtitle also translate. Everything visible to the user is now either
English or Spanish based on the preference.

0
0
17
Open comments for this post

3h 49m 52s logged

Beta 4 of Margen, the final version. Four additions.

Code syntax highlighting via highlight.js. Code blocks in the preview now
get colored based on language. Works in dark mode too.

Export and import. An export button downloads the current note as a
standalone HTML file with markdown, LaTeX and code already rendered, and
opens the print dialog so you can save it as PDF. An import button lets
you load an existing .md file as a new note.

PWA installable. A service worker caches the core files so the app works
offline on desktop and Android. The manifest is generated dynamically.
CDN assets like KaTeX and highlight.js are not cached to avoid bloat, so
formulas and code highlighting need internet the first time, but the app
itself, your notes and the markdown parser all work offline.

Calling Margen done. Four betas: basic editor, parser fix and cheat
sheet, LaTeX and dark mode, now code highlighting, import, export and
PWA.

0
0
8
Ship

What did you make?
A markdown note editor called Margen, built with a “digital typewriter” aesthetic. The app is a three-column layout: a sidebar with the list of notes, a raw markdown editor pane, and a live preview pane that renders the markdown as you type. The markdown parser is written from scratch, no marked.js or any library, just a chain of regex and line-by-line processing.

Built in four planned betas, currently on Beta 3. Beta 1 was the basics: editor, preview, note list, search, auto-save. Beta 2 fixed a bug where opening a note to read it would mark it as modified, added a markdown cheat sheet accessible via a button, and rewrote the markdown parser which had bugs with lists, blockquotes and code blocks. Beta 3 added LaTeX support via KaTeX for math formulas, a formula toolbar with 16 buttons that insert LaTeX at the cursor so you don’t need to know LaTeX syntax, a dark mode with a warm dark palette, and an ES/EN language toggle.

Everything is local-first, stored in localStorage, no account, no server, no tracking. The goal is a clean, offline place to write university notes with formulas, without the bloat of Notion or the online-only dependency of most editors.

What was challenging?
The markdown parser was the hardest part. My first version used a single regex per element type, which broke on multi-line constructs like lists and blockquotes. The blockquote bug was sneaky: after escaping HTML, the > character becomes >, but my regex was looking for > literally, so blockquotes never matched. Rewrote the parser to process line by line, opening and closing ul/ol/blockquote tags as it goes, and protecting code blocks in a temporary array so other regexes don’t touch them.

The LaTeX integration had a loading order issue. KaTeX loads from CDN asynchronously, so the first renderMathInElement call would fail because the library wasn’t ready yet. Had to chain the loads: first KaTeX CSS, then KaTeX JS, then the auto-render extension, and only then try to render. If a formula has a syntax error, I set throwOnError to false so it shows the raw LaTeX instead of breaking the whole preview.

The dirty flag bug from Beta 2 was a design problem. Before, every time you opened a note it would save with modificada=now and jump to the top of the sidebar, which made browsing notes frustrating. Had to track whether the user actually changed anything before marking a note as modified.

What are you proud of?
The markdown parser, written entirely from scratch, no library. About 150 lines of regex and line-by-line processing, handles headers, bold, italic, lists, code blocks, inline code, links, images, blockquotes and horizontal rules. The formula toolbar with 16 buttons that insert LaTeX at the cursor position, so you can write math without knowing LaTeX syntax. And the “digital typewriter” aesthetic: Bitter serif for rendered content, Inter for UI, JetBrains Mono for the raw editor, thin dividing lines instead of cards or shadows.

What should people know so they can test your project?
Open the demo URL. A welcome note with markdown examples appears on first launch. Click the + button in the sidebar to create a new note. Type markdown in the left pane, see it rendered live in the right pane. Click the ? button to open a markdown cheat sheet. Click the “formulas” button in the editor header to open a toolbar with 16 math buttons (square root, integral, fraction, etc.) that insert LaTeX at the cursor. Click the “ajustes” button to switch between light/dark mode and ES/EN language. Notes auto-save to localStorage, nothing is sent anywhere.

Live demo: https://notjuangamer10.github.io/margen/
Source: https://github.com/notjuangamer10/margen

  • 3 devlogs
  • 20h
  • 8.34x multiplier
  • 168 Stardust
Try project → See source code →
Open comments for this post

5h 59m 51s logged

Beta 3 of Margen adds LaTeX support, dark mode and multi-language.

LaTeX is the big one. KaTeX loads from CDN the first time you need it,
then renders $…$ as inline math and $$…$$ as block math. So you can
write $E=mc^2$ inline or a full integral in a block. If a formula has
an error it just shows the raw text instead of breaking the preview.

The formula toolbar was important to me because I don’t know LaTeX
syntax by heart. A “formulas” button in the editor header opens a bar
with 16 buttons: square root, integral, fraction, superscript,
subscript, sum, limit, Greek letters, infinity, plus-minus, inequalities,
arrows. Click one and it inserts the LaTeX at the cursor position, then
you just fill in the blanks. No need to remember that integral is
\int_{}^{} or that fraction is \frac{}{}.

Dark mode uses a warm dark palette instead of the usual cold gray, so
it still feels like the typewriter aesthetic. The toggle is in a settings
panel in the sidebar, along with an ES/EN language switch that
translates the whole UI.

Next version will be the last: code syntax highlighting, PDF export,
and PWA installable for offline use on desktop and Android.

But I’m starting to get tired, so i wil be on vacation for the next week!

0
0
9
Open comments for this post

6h 19m 14s logged

Beta 2 of Margen fixes a usability bug and adds helpful features.

Fixed the modified timestamp bug. Before, every time you opened a note
to read it, it would save with modificada=now and jump to the top of the
sidebar list. Now there is a dirty flag that tracks whether you actually
changed anything. Opening a note to read it does not mark it as
modified. The sidebar list stays stable when you are just browsing.

Added a markdown cheat sheet. A ? button in the sidebar opens a floating
panel with the full syntax: headers, bold, italic, lists, code blocks,
links, images, blockquotes, horizontal rules. Useful for when you forget
how to do something without leaving the editor.

Also added a welcome note that appears on first launch with examples of
every markdown feature rendered in the preview. You can delete it if you
want.

Changed the typography from Source Serif 4 to Bitter, a slab serif that
gives a more typewriter feel without being monospaced. Still legible,
but more character.
I personally like this version, this is like, the base of what i want to build, i would leave it like this and thats it, but I feel that i can get better at coding if i just add more things, it would be more usefull

0
0
22
Open comments for this post

7h 52m 23s logged

Started a new project called Margen, a markdown note editor for
university notes. The idea came from wanting a clean, offline place to
write notes with formulas, without the bloat of Notion or the
online-only dependency of most editors.

Beta 1 is the basics. A three-column layout: sidebar with the list of
notes, editor pane with a monospace textarea, and a live preview pane
that renders markdown as you type. The markdown parser is written from
scratch, no marked.js or any library, just a chain of regex replaces
handling headers, bold, italic, lists, code blocks, inline code, links,
images, blockquotes and horizontal rules.

The design is “digital typewriter”: white background, serif typography
for the rendered content, monospace for the raw editor, thin dividing
lines instead of cards or shadows. The aesthetic is deliberately calm
and distraction-free, like iA Writer or Bear.

Notes auto-save to localStorage 400ms after you stop typing. There is
also a Ctrl+S shortcut for manual save. The sidebar shows title, first
line preview and relative date for each note, and filters instantly as
you type in the search bar.

Next version will add subjects (folders), tags, and better organization.

0
0
8
Ship

What did you make?
A personal expense tracker called Flujo, built with an editorial / ledger aesthetic. The app tracks income and expenses with categories, a 5-day forecast visualization, an OCR ticket scanner, and a full debt and shared expenses system for tracking who owes whom between flatmates or friends.
Everything is local-first, stored in localStorage, no account, no server, no tracking.

Built in four betas. Beta 1 was the basics: add expenses, browse by month, summary totals. Beta 2 added a Sankey diagram showing money flow from income to expense categories, a stacked bar chart for the last 6 months, and a donut chart for category breakdown, all drawn on canvas with vanilla JS (no charting library). Beta 3 added a tabbed interface (resumen, apuntes, tickets, deudas) and an OCR ticket scanner using Tesseract.js that extracts products and prices from receipt photos.
Beta 4 added the debts system with four split methods (equal, by shares, exact, by percentage), a greedy algorithm to settle debts with minimum transfers, pattern detection for subscriptions and recurring expenses, plus a dark mode and ES/EN language toggle.

What was challenging?
The Sankey diagram was the hardest part. My first version drew two separate bezier curves joined at the ends, which looked angular and flat and kinda ugly ngl.
Asked another AI for help and it spotted a missing lineTo, but the real fix was using a single bezierCurveTo per ribbon with control points at 42 percent of the horizontal distance (the same proportion D3 uses).
Also had to make both sides share the same scale so ribbons flow horizontally instead of diagonal. The proportional sizing was another bug: I had a minimum height of 38px, so a 10 euro expense looked the same as a 400 euro income. Fixed by dropping the minimum to 3px.

The OCR scanner had a silent bug where it would hang forever on “procesando imagen”. I was calling tesseractCargado.createWorker where
tesseractCargado is a boolean, not the Tesseract library object. So I was doing true.createWorker which throws a TypeError that nobody caught. Fixed by calling Tesseract.createWorker and added a 90 second timeout.

The internationalization had a sneaky bug too. The language toggle translated the main UI but left the forecast and debts sections in Spanish because that code was hardcoded from earlier betas. Had to re-translate every section separately.

What are you proud of?
The Sankey diagram, drawn entirely with vanilla canvas, no D3 or any charting library. About 200 lines of math and bezier curves, but the result looks professional. The debt settlement algorithm that minimizes
transfers, so if three people owe each other small amounts it suggests the minimum set of payments instead of everyone paying everyone. The pattern detection that finds subscriptions and projects their annual cost, which is a sobering number to see. And the whole thing works offline with no backend, no account, no tracking.

What should people know so they can test your project?
Open the demo URL. The resumen tab shows the Sankey diagram, bar chart and donut chart. The apuntes tab lets you add expenses and browse them by month. The tickets tab lets you upload a receipt photo and the OCR extracts products and prices automatically. The deudas tab is where you add people and track shared expenses with four split methods, then see the minimum transfers needed to settle all debts. The gear icon in the header opens settings with a dark mode toggle and ES/EN language switch.
Everything is stored locally in the browser, nothing is sent anywhere.

Live demo: https://notjuangamer10.github.io/flujo/
Source: https://github.com/notjuangamer10/flujo

  • 8 devlogs
  • 54h
  • 16.01x multiplier
  • 864 Stardust
Try project → See source code →
Open comments for this post

8h 5m 44s logged

Beta 4 of Flujo is up. The biggest one yet, split into two parts
because of the autoescritor’s 10 hour session limit.

Beta 4a added the settings panel with dark mode and language toggle
(ES/EN). The dark mode uses a warm dark brown palette instead of the
usual cold gray, so it still feels editorial. The language toggle
reloads the page to re-translate static text.

Beta 4b added the debts and shared expenses system. You can add people
(flatmates, friends) and track who owes whom. Shared expenses support
four split methods: equal, by shares (e.g. 2:1:1 means one person pays
double), exact amounts per person, and by percentage. The settle-up
section uses a greedy algorithm to minimize the number of transfers
needed to clear all debts, so if three people owe each other small
amounts, it suggests the minimum set of transfers instead of everyone
paying everyone.

Also added pattern detection. The app analyzes your expenses and finds
recurring ones, things you pay the same amount for multiple times. It
separates them into likely subscriptions (same exact amount, repeated)
and general recurring expenses (same description, similar amounts). Shows
the projected annual cost for subscriptions, which is a sobering number
to see.

Next version will be the last: FastAPI backend for sync between phone
and laptop, plus PWA installable.

1
0
81
Open comments for this post

7h 46m 15s logged

Beta 4a of Flujo is up. I’m starting to get tired of being all day coding. Started the debts and shared expenses feature,
plus two settings that were requested on my other projects. First, a theme toggle. The app now supports a dark mode alongside the
default cream paper look. The toggle is in a small settings panel in the
header. The dark palette uses a warm dark brown instead of the usual
cold gray, so it still feels like the editorial aesthetic.Second, multi-language support. The interface can switch between Spanish
and English. Switching reloads the page so all the static text gets
re-translated. The dynamic content (expenses, descriptions) stays in
whatever language the user typed it in.Third, the structure for the debts tab is in place. A new “deudas” tab
appears next to resumen, apuntes and tickets. The HTML is there (persons
form, shared expense form with split method selector, movements list,
settle-up section, patterns section) but the JavaScript logic comes in
Beta 4b. The shared expense form supports four split methods: equal, by
shares (e.g. 2:1:1 means one person pays double), exact amounts per
person, and by percentage.Split this into two parts because of the autoescritor session limit.
4b comes next with all the logic for shared expenses, debt settlement
and pattern detection.

0
0
9
Ship

What did you make?
A weather app that lets you search the current weather of any city and
get a 5-day forecast. Each search shows temperature, humidity, wind
speed, feels-like, and a description, with a GIF background that matches
the weather condition (sun, rain, snow, storm, etc.). Built in four
betas: basic lookup, glassmorphism redesign with weather GIFs, 5-day
forecast with a temperature chart drawn on canvas, and the final version
with geolocation, favorites, PWA support, plus a settings panel with
language (ES/EN) and units (Celsius/Fahrenheit) toggles added in
response to reviewer feedback. The app is installable on desktop and
mobile, works offline, and uses OpenWeatherMap + Giphy APIs.

What was challenging?
Two bugs almost broke me. My editor’s autocomplete kept rewriting value
to ariaValueMax, which silently broke the search button in two
projects. Later, when I tried to extend my mostrarClima function by
saving the old one and redefining it, I caused infinite recursion because
of JavaScript hoisting. Fix was to use a function expression instead.
Also, the Giphy search API returned random GIFs that didn’t represent
the weather (got a dancing water drop for London), so I picked one fixed
GIF per weather type by hand and hardcoded the URLs.

The internationalization had a sneaky bug too. The language toggle
translated the main UI but left the forecast section in Spanish because
that code was hardcoded from an earlier beta. Had to re-query the API
with the correct lang parameter and re-translate the forecast cards, the
canvas day labels, and the legend separately.

What are you proud of?
The temperature chart is drawn with vanilla canvas, no Chart.js, just
moveTo/lineTo/arc. About 60 lines of code, exactly the result I wanted.
Also the weather GIF backgrounds: each weather type has a fixed GIF
picked by hand, so it feels like you’re actually looking at the sky of
that city. And the whole thing works as an installable PWA with offline
support, plus now supports English and Fahrenheit for international
users.

What should people know so they can test your project?
Open the demo URL and type a city name (Madrid, London, Tokyo, New
York). You’ll see the current weather with a matching GIF background,
plus a 5-day forecast with a temperature chart below. Click the gear
icon in the top right to open settings and switch between Spanish /
English and Celsius / Fahrenheit. Click the star next to the city name
to add it to favorites. Click “My location” to get weather for your
actual coordinates. On Chrome you can install the app from the address
bar icon.

Live demo: https://notjuangamer10.github.io/weather-app/
Source: https://github.com/notjuangamer10/weather-app

  • 1 devlog
  • 7h
  • 14.13x multiplier
  • 93 Stardust
Try project → See source code →
Open comments for this post

6h 33m 42s logged

Small patch for the Weather App based on reviewer feedback. Three fixes.

First, the language toggle now actually translates the full UI. Before,
switching to English left several strings in Spanish: the forecast
heading, the day labels in both the cards and the canvas chart, the
“highs / lows” legend, and most embarrassingly, the weather description
itself (“algo de nubes” instead of “scattered clouds”). The issue was
that the forecast code was hardcoded in Spanish. Now it queries the
OpenWeatherMap API with the correct lang parameter, and re-translates
the forecast cards, the canvas labels, and the legend when the language
changes.

Second, the units toggle (Celsius / Fahrenheit) was already working but
now also converts wind speed from km/h to mph when Fahrenheit is
selected, which makes sense for imperial users.

Third, the welcome state is in place. First-time visitors now see a
pulsing sun icon and a short prompt instead of a blank page with just a
search bar.

Thanks to everyone who tested and left feedback. Three reviewers asked
for multi-language support and one asked for unit conversion, so those
were the top requested features.

0
0
7
Open comments for this post

6h 26m 8s logged

Beta 4a of Flujo is up. Started the debts and shared expenses feature,
plus two settings that were requested on my other projects.

First, a theme toggle. The app now supports a dark mode alongside the
default cream paper look. The toggle is in a small settings panel in the
header. The dark palette uses a warm dark brown instead of the usual
cold gray, so it still feels like the editorial aesthetic.

Second, multi-language support. The interface can switch between
Spanish and English. Switching reloads the page so all the static text
gets re-translated. The dynamic content (expenses, descriptions) stays
in whatever language the user typed it in.

Third, the structure for the debts tab is in place. A new “deudas” tab
appears next to resumen, apuntes and tickets. The HTML is there
(persons form, shared expense form with split method selector,
movements list, settle-up section, patterns section) but the JavaScript
logic comes in Beta 4b. The shared expense form supports four split
methods: equal, by shares (e.g. 2:1:1), exact amounts per person, and
by percentage. The settle-up section will use a greedy algorithm to
minimize the number of transfers needed to clear all debts.

0
0
28
Open comments for this post

4h 2m 20s logged

Beta 3.1 is a bugfix release. Two issues.

First, the OCR ticket scanner was completely broken. When you uploaded a
photo it would say “procesando imagen” forever and never finish. Turned
out I was calling tesseractCargado.createWorker where tesseractCargado
is a boolean (true), not the Tesseract library object. So I was doing
true.createWorker which is undefined.createWorker which throws a
TypeError that nobody caught. Switched to Tesseract.createWorker and
added a 90 second timeout plus proper try/catch so it can never hang
again.

Second, the Sankey text was blurry. Canvas draws with whatever font is
available at draw time, and if Google Fonts was still loading on the
first render it fell back to Arial which looked bad when scaled by
devicePixelRatio. Fixed by waiting for document.fonts.ready before the
first draw, rounding all Y coordinates to integers so they align with
physical pixels, and redrawing on window resize so the DPR stays
correct.

0
0
5
Open comments for this post

7h 2m 4s logged

Beta 3 is up
Tabs and OCR Update!!
Three changes.

First, the Sankey is now proportional. Before, every node had a minimum
height of 38px, so a 10 euro expense looked the same as a 400 euro
income. Now the minimum is 3px and both sides use the global total as
their scale, so node heights actually reflect the amounts. A 10 euro
category is a tiny sliver next to a 400 euro income source.

Second, added tabs. The app was getting long with everything in one
column. Now there are three tabs: resumen (income sources and charts),
apuntes (the expense form and list), and tickets (new). The tab bar uses
the same editorial styling, lowercase text with an ochre underline on
the active tab.

Third, the big one: OCR ticket scanning. On the tickets tab you upload a
photo of a supermarket receipt and Tesseract.js extracts the text, then
a regex parser pulls out product names and prices. Each detected item
shows up in a list with a checkbox, you pick a category, hit save, and
all items become individual expenses. The parser looks for lines ending
in a decimal number (the classic receipt format) and skips lines that
look like totals, subtotals or payment info.

Tesseract loads from CDN the first time you use it. It runs entirely in
the browser, no server involved, which keeps the local-first promise.
The recognition is decent for clean photos, struggles with crumpled
receipts. The parser is basic but catches most supermarket formats. If
it fails, there is a details panel showing the raw OCR text so you can
see what went wrong.

0
0
11
Open comments for this post

4h 21m 12s logged

Beta 2.1 is a visual rework of the Sankey diagram.
Charts Update!:
The previous version
worked but looked rough: the flow ribbons were angular, the nodes were
plain rectangles, and the two sides used independent scales so the
ribbons went diagonal instead of horizontal.

I asked another AI for help with the algorithm and it suggested a
cleaner approach. Each ribbon is now a single bezier curve with control
points at 42 percent of the horizontal distance (the same proportion D3
uses in its Sankey layout), instead of two curves joined at the ends.
The nodes are rounded rectangles with a soft shadow. Both sides share
the same scale so the ribbons flow straight. Nodes are centered
vertically instead of pinned to the top.

I kept the editorial palette: dark green for income nodes, black ink for
the center “total” node, cream with a colored accent stripe for each
expense category. The ribbons use the category color at 30 percent
opacity so overlaps create natural layering.

Also fixed a timezone bug in the 6 month bar chart. I was using
toISOString to build the month key, which converts to UTC and can return
the wrong month near midnight. Switched to getFullYear and getMonth
which stay in local time. The bars were technically drawing before but
some months were mismatched, now they line up correctly.
I still have to work that better, but it isnt thaaat bad

0
0
4
Loading more…

Followers

Loading…