<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Pedro Araújo</title>
    <description>The latest articles on Forem by Pedro Araújo (@pedroaraujo74).</description>
    <link>https://forem.com/pedroaraujo74</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F391200%2F57af7f6a-e695-4bda-8a16-917b01a4ee49.jpg</url>
      <title>Forem: Pedro Araújo</title>
      <link>https://forem.com/pedroaraujo74</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/pedroaraujo74"/>
    <language>en</language>
    <item>
      <title>Building a Real-Time Garmin Dashboard on My Personal Website</title>
      <dc:creator>Pedro Araújo</dc:creator>
      <pubDate>Wed, 11 Mar 2026 13:32:10 +0000</pubDate>
      <link>https://forem.com/pedroaraujo74/building-a-real-time-garmin-dashboard-on-my-personal-website-1d98</link>
      <guid>https://forem.com/pedroaraujo74/building-a-real-time-garmin-dashboard-on-my-personal-website-1d98</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu1ao9cqy8ke1gk9q9shn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu1ao9cqy8ke1gk9q9shn.png" alt="Pedro Araujo Website" width="800" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I wanted a page on my website that showed my training data. &lt;/p&gt;

&lt;p&gt;A heatmap like GitHub's contribution graph, but for workouts. &lt;br&gt;
Why? I don't really know, but it looks cool and it's a fun way to view my training data. &lt;br&gt;
And of course, I'm also not a fan of garmin connect's UI, so with this method I can view my data however I want.&lt;/p&gt;




&lt;h2&gt;
  
  
  The problem: Garmin has no public API
&lt;/h2&gt;

&lt;p&gt;This is the main issue. You can't just grab a token and start fetching. &lt;br&gt;
Luckily, there's there's python-garminconnect, a reverse-engineered Python library that wraps Garmin's internal APIs,  so I just hosted that on my VPS.&lt;br&gt;
Garmin uses OAuth tokens managed by the garth library under the hood.  First setup requires MFA (I think only if you have ECG enabled), but after that tokens persist to disk and refresh automatically&lt;br&gt;
After this boring part is done, I can easily query any  any sort of data, like /sleep_data. /body_composition, etc.&lt;/p&gt;




&lt;h2&gt;
  
  
  Astro SSR on Cloudflare
&lt;/h2&gt;

&lt;p&gt;I've built this entire site on Astro, just because I'm tired of next.js. &lt;br&gt;
At this point, I've almost ditched it entirely and most of my projects run on React Router 7 or Astro.&lt;br&gt;
I chose SSR over static builds because I'm not gonna be rebuilding the site every time I go for a run.&lt;br&gt;
I use cf.cacheTtl so Cloudflare's edge caches the responses too. Combined with the VPS cache and browser Cache-Control headers, that's three layers of caching. Data is always fresh enough without hitting Garmin API's on every page load.&lt;/p&gt;




&lt;h2&gt;
  
  
  Withings Data
&lt;/h2&gt;

&lt;p&gt;I use a Withings Body+ for weight, body fat, and muscle mass. It doesn't sync to Garmin natively, but withings-sync handles that.&lt;br&gt;
All it does is pull data from the Withings API and pushes to Garmin Connect. It runs every day on a cron job on the same VPS.&lt;br&gt;
Every morning after I weigh in, the data shows up in Garmin, and then my training page picks it up through the body composition endpoint. I show 30-day rolling averages instead of the last reading because daily weights can be noisy.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'd change
&lt;/h2&gt;

&lt;p&gt;Honestly not much.&lt;br&gt;
This whole thing only took 30m-1h to setup (thank you Claude for handling the boring setups) and then creating the frontend was also pretty easy. &lt;br&gt;
My input was mostly the  design and telling Claude what architecture to follow.&lt;/p&gt;




&lt;h3&gt;
  
  
  Stack
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Tech&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Watch&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Garmin Fenix 7 Pro&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scale&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Withings Body+ &amp;gt; &lt;a href="https://github.com/jaroslawhartman/withings-sync" rel="noopener noreferrer"&gt;withings-sync&lt;/a&gt; &amp;gt; Garmin&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;API&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Python FastAPI + &lt;a href="https://github.com/cyberjunky/python-garminconnect" rel="noopener noreferrer"&gt;python-garminconnect&lt;/a&gt; on VPS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Web&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Astro SSR on Cloudflare Workers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;UI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;React 19 + Tailwind + Framer Motion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cache&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;VPS (1h) &amp;gt; Cloudflare edge &amp;gt; browser&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Check it out at &lt;a href="https://araujo.zip/training" rel="noopener noreferrer"&gt;https://araujo.zip/training&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>personalwebsite</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to Convert Your Behance Profile and Projects to PDF</title>
      <dc:creator>Pedro Araújo</dc:creator>
      <pubDate>Tue, 27 Feb 2024 16:12:00 +0000</pubDate>
      <link>https://forem.com/pedroaraujo74/how-to-convert-your-behance-profile-and-projects-to-pdf-1bcj</link>
      <guid>https://forem.com/pedroaraujo74/how-to-convert-your-behance-profile-and-projects-to-pdf-1bcj</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcimohmkhvf152du7p3uj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcimohmkhvf152du7p3uj.png" alt="Behance to PDF" width="800" height="737"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Having a good portfolio is key. &lt;br&gt;
And as we all know, Behance has become a standard in showcasing portfolios and it allows designers and photographers to show their projects in a super easy, but professional way.&lt;/p&gt;

&lt;p&gt;But there are several reasons why you should convert your behance portfolio into a PDF format. Here's how you can easily do it using &lt;a href="https://lasso.ink"&gt;Lasso's Convert To PDF Tool&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  But Why Convert Your Behance Profile to PDF?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Offline Accessibility&lt;/strong&gt;: A PDF version of your Behance portfolio can be accessed offline, ensuring that your work can be viewed anytime, anywhere, without relying on internet access.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Universal Format&lt;/strong&gt;: PDFs are widely recognized and can be opened on virtually any device or operating system, making your portfolio more accessible to a broader audience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Professional Presentation&lt;/strong&gt;: PDFs offer a professional way to present your work in a format that is widely accepted in the business world, ideal for emails, presentations and printouts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Control over Layout&lt;/strong&gt;: While Behance offers a great platform for displaying your work, converting your projects to PDF gives you more control over the layout and presentation of your portfolio.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Archiving and Backup&lt;/strong&gt;: Having a PDF copy provides a backup of your portfolio, ensuring that your work is preserved in a format that won't change over time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sharing and Distribution&lt;/strong&gt;: PDFs are easy to share and distribute, making it easier to send your portfolio to potential clients, employers, or collaborators. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Print-Ready&lt;/strong&gt;: A PDF version of your portfolio is print-ready, allowing you to easily create physical copies for interviews, presentations, or exhibitions.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Convert a Profile
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Visit the Lasso Tool&lt;/strong&gt;: Enter your email or login with google at &lt;a href="https://lasso.ink/login"&gt;Lasso's Behance to PDF conversion page&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Choose a Template&lt;/strong&gt; After login, select the template you want for your PDF&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enter Your Behance Profile URL&lt;/strong&gt;: Enter your username and paste it into the designated field on the app.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Start the Conversion Process&lt;/strong&gt;: Follow the checklist, making sure all your data on behance is up-to-date. Once you're readdy, click on the convert button to initiate the conversion. Lasso will process your Behance project and convert it into a PDF file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Download Your PDF&lt;/strong&gt;: Once the conversion is complete, you'll be able to download the PDF version of your project. You will be a paid account to download a non-watermark version, that's ready for professional use.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Review and Share&lt;/strong&gt;: Make sure to review the PDF for any layout or formatting issues.&lt;br&gt;
If you want to make any changes, just update your behance portfolio and generate your pdf again.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Convert a Project
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Login to Lasso&lt;/strong&gt;: Enter your email or login with google at &lt;a href="https://lasso.ink/login?go=behance"&gt;Lasso's Behance to PDF conversion page&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enter Your Behance Project URL&lt;/strong&gt;: Enter the URL of the Behance project you want to convert to PDF. Simply copy the URL from your browser and paste it into the designated field on the app.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Start the Conversion Process&lt;/strong&gt;: Click on the convert button to initiate the conversion. Lasso will process your Behance project and convert it into a PDF file. (Note that it might take a few minutes to process, depending on the size of your project.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Download Your PDF&lt;/strong&gt;: Once the conversion is complete, you'll be able to download the PDF version of your project. You will need a paid account to download a non-watermark version, that's ready for professional use.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Convert to Your Own Website
&lt;/h2&gt;

&lt;p&gt;With Lasso, you can also convert your Behance projects to your own website! PDFs are super useful, but having a website is even better.&lt;/p&gt;

&lt;p&gt;Just go to &lt;a href="https://lasso.ink/portfolio-builder"&gt;Portfolio Builder&lt;/a&gt;, claim your unique username, which will be available at lasso.ink/(username), and follow the steps to create your own website. You can import your Behance information and projects directly, saving you hours work and then choose one of our templates to customize it to your liking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Converting your Behance projects to PDF is a great move for any designer or photographer looking to expand the reach and accessibility of their portfolio. With Lasso, this process is super easy and efficient. No need to waste time designing different versions of the same portfolio, just for one job offer.&lt;/p&gt;

&lt;p&gt;By converting your Behance projects to PDF, you can ensure that your work is accessible, professional, and preserved for the long term. &lt;/p&gt;

&lt;p&gt;And with the website builder, you can take it a step further and create your own website. That way you can have the best of both worlds, a professional PDF and a website to showcase your work.&lt;/p&gt;

</description>
      <category>uidesign</category>
      <category>ui</category>
      <category>ux</category>
      <category>graphicdesign</category>
    </item>
  </channel>
</rss>
