<?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>DEV Community: Anton Reshetov</title>
    <description>The latest articles on DEV Community by Anton Reshetov (@antonreshetov).</description>
    <link>https://dev.to/antonreshetov</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F117155%2F859cde61-f2b5-4b39-ae3c-90dc99f7a629.jpeg</url>
      <title>DEV Community: Anton Reshetov</title>
      <link>https://dev.to/antonreshetov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/antonreshetov"/>
    <language>en</language>
    <item>
      <title>Playing a torrent while it downloads: how I got start time from 41 s to 8 s</title>
      <dc:creator>Anton Reshetov</dc:creator>
      <pubDate>Thu, 29 Oct 2026 14:04:10 +0000</pubDate>
      <link>https://dev.to/antonreshetov/playing-a-torrent-while-it-downloads-how-i-got-start-time-from-41-s-to-8-s-hlc</link>
      <guid>https://dev.to/antonreshetov/playing-a-torrent-while-it-downloads-how-i-got-start-time-from-41-s-to-8-s-hlc</guid>
      <description>&lt;p&gt;You hit play on a video that's still downloading, and the player immediately wants bytes you don't have. First the start of the file. Then, quite often, the end, because that's where an MP4 keeps its index. Then wherever you drag the seek bar. BitTorrent doesn't care about any of that: it grabs pieces in whatever order the swarm hands them out, rarest first.&lt;/p&gt;

&lt;p&gt;Getting those two to cooperate turned out to be most of the work.&lt;/p&gt;

&lt;p&gt;I needed this for Torsher, the self-hosted media center I'm building, and I gave myself one rule: on a normal home connection, playback has to start in under 15 seconds. Below is what I tried, what failed, and the numbers.&lt;/p&gt;

&lt;p&gt;Every test used Blender's open movies (Sintel, Big Buck Bunny, Tears of Steel). They're free to share, which makes them perfect for this.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I measured
&lt;/h2&gt;

&lt;p&gt;I didn't want to click around a browser all evening, so a small script pretends to be the player:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;start&lt;/strong&gt;: grab the first 2 MB and the last 1 MB of the file at the same time, and time how long until both are in;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;seek&lt;/strong&gt;: grab 2 MB from the middle of the file, then 2 MB from 85% in.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each run starts from scratch: torrent removed, files deleted. Two rounds per engine, swapping the order between them. Fetching the torrent's metadata isn't counted.&lt;/p&gt;

&lt;h2&gt;
  
  
  First try: a ready-made library
&lt;/h2&gt;

&lt;p&gt;I started with an existing Rust library that already had streaming built in. Median start: &lt;strong&gt;41 seconds&lt;/strong&gt;. Worse, it was random. The same file started in 2 seconds on one run and 57 on the next. Seeking into a part that wasn't downloaded yet took 43 seconds.&lt;/p&gt;

&lt;p&gt;So I read its source. The stream window, 32 MB, went out to peers all at once, and the piece sitting right under the playback position was no more urgent than anything else in that window. If a slow peer happened to grab that piece, the player just sat there until the request got handed to someone else, and that only kicked in once the request was ten times slower than average.&lt;/p&gt;

&lt;h2&gt;
  
  
  What fixed it: a responsive reader
&lt;/h2&gt;

&lt;p&gt;I swapped it for a small Go service on top of &lt;a href="https://github.com/anacrolix/torrent" rel="noopener noreferrer"&gt;anacrolix/torrent&lt;/a&gt;. The library handles the hard stuff (peers, DHT, picking pieces), and my code is just the HTTP API, the stream, file selection and storage.&lt;/p&gt;

&lt;p&gt;The part that matters is the library's &lt;em&gt;responsive&lt;/em&gt; reader. It gives urgent priority to the pieces at the read position, so whatever the player is waiting for right now jumps the queue. Each HTTP request gets its own reader:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;var&lt;/span&gt; &lt;span class="n"&gt;streamReadahead&lt;/span&gt; &lt;span class="kt"&gt;int64&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;16&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;newStreamReader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ctx&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Context&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;torrent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;File&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;torrent&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Reader&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;reader&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;NewReader&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;reader&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SetContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c"&gt;// the player disconnects, the read is cancelled&lt;/span&gt;
    &lt;span class="n"&gt;reader&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SetResponsive&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;reader&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SetReadahead&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;streamReadahead&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;reader&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Range requests I let &lt;code&gt;http.ServeContent&lt;/code&gt; do the work: 206, 416, &lt;code&gt;Content-Range&lt;/code&gt;, &lt;code&gt;Content-Length&lt;/code&gt;, all handled. One thing to watch out for: set &lt;code&gt;Content-Type&lt;/code&gt; yourself before you call it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Header&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Content-Type"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;contentType&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ServeContent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Time&lt;/span&gt;&lt;span class="p"&gt;{},&lt;/span&gt; &lt;span class="n"&gt;reader&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you don't, &lt;code&gt;ServeContent&lt;/code&gt; reads the beginning of the file to guess the type. With a torrent, that means it pulls the first pieces even when the player asked for the middle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Download a window, not the whole file
&lt;/h2&gt;

&lt;p&gt;In a torrent client, picking a file usually means "download all of it". For watching, that's wrong in two ways. The rest of the file fights with the piece under the playback position for the same peers. And a 20 GB file you watched for one minute ends up sitting on your disk.&lt;/p&gt;

&lt;p&gt;So while you watch, only a window ahead of the position gets downloaded: roughly &lt;strong&gt;three minutes of video&lt;/strong&gt;, worked out from the file's average bitrate and kept between 64 MB and 1 GiB. The whole file only comes down if you explicitly hit "download".&lt;/p&gt;

&lt;p&gt;Marking a full 1 GiB window as wanted in one go would bring back the original problem, so the window goes out in 64 MB batches (at least four pieces), closest to the position first. The batch gets recalculated whenever the piece under the position changes, and once a second on top of that, because a paused player doesn't move but the window should keep filling.&lt;/p&gt;

&lt;p&gt;Close the stream, and the pieces outside any open window drop back to "not needed". Downloading just stops.&lt;/p&gt;

&lt;p&gt;One thing made this a lot easier than I expected. In anacrolix, a piece's priority is the highest of three: the file's, the readers', and the piece's own. So a viewing window never clashes with a file someone chose to download in full, and the other way around.&lt;/p&gt;

&lt;h2&gt;
  
  
  What made it worse: prewarming
&lt;/h2&gt;

&lt;p&gt;This one looked obvious. As soon as a torrent is added, read the start and the end of the file, so they're already there when the player asks. I measured it, and the median start went &lt;strong&gt;from 8.3 to 20.3 seconds&lt;/strong&gt;. The prewarm requests were fighting the player's own requests for the same peers. I took it out, and it stays out until a benchmark says otherwise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Start, median (range)&lt;/th&gt;
&lt;th&gt;Seek, median (range)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rust library&lt;/td&gt;
&lt;td&gt;41 s (2–59)&lt;/td&gt;
&lt;td&gt;43 s (6–70)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Go + responsive reader&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;8.3 s&lt;/strong&gt; (3.4–19.5)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;3.8 s&lt;/strong&gt; (1.3–6.9)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Go + prewarm&lt;/td&gt;
&lt;td&gt;20.3 s (5.4–33.0)&lt;/td&gt;
&lt;td&gt;10.9 s (4.2–18.2)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For reference, a popular streaming server built on the same library did 6.0 s to start and 3.0 s to seek on the same files. So I'm still a couple of seconds behind. What bugs me more is how much the start time jumps around. My guess is that other pieces compete with the first ones early on, and that's what I'm measuring next.&lt;/p&gt;

&lt;p&gt;Usual caveats: one machine, one home connection, one evening, two runs per file. Swarms change over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two things that bit me
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Library callbacks run under its lock.&lt;/strong&gt; anacrolix calls some callbacks while it holds the client lock. Touch the client from inside one, and the engine deadlocks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A panic in an HTTP handler can leave that lock held.&lt;/strong&gt; &lt;code&gt;net/http&lt;/code&gt; recovers panics in handlers, so the process keeps running, &lt;code&gt;/health&lt;/code&gt; still says OK, and everything that needs the lock hangs forever. Now any panic in a route takes the whole process down, a watchdog checks the lock every 5 seconds and exits if it's been stuck for a minute, and the parent server restarts the engine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this lives
&lt;/h2&gt;

&lt;p&gt;This is the engine inside &lt;a href="https://github.com/torsher-app/torsher" rel="noopener noreferrer"&gt;Torsher&lt;/a&gt;, an open-source media center that runs in one Docker container and starts from the TV. The engine is in &lt;code&gt;engine/&lt;/code&gt;, the window logic in &lt;code&gt;engine/window.go&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you've beaten the start-time spread some other way, I'd really like to hear how.&lt;/p&gt;

</description>
      <category>go</category>
      <category>streaming</category>
      <category>selfhosted</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Why I Rewrote My Email Editor from Scratch: From Blocks to Atoms Rewrite</title>
      <dc:creator>Anton Reshetov</dc:creator>
      <pubDate>Mon, 16 Feb 2026 16:08:35 +0000</pubDate>
      <link>https://dev.to/antonreshetov/why-i-rewrote-my-email-editor-from-scratch-from-blocks-to-atoms-rewrite-11n8</link>
      <guid>https://dev.to/antonreshetov/why-i-rewrote-my-email-editor-from-scratch-from-blocks-to-atoms-rewrite-11n8</guid>
      <description>&lt;p&gt;Hi there!&lt;/p&gt;

&lt;p&gt;Six years ago, I launched &lt;a href="https://card.mysigmail.com" rel="noopener noreferrer"&gt;MySigMail Card&lt;/a&gt; as a commercial product.&lt;/p&gt;

&lt;p&gt;To be honest, it didn't take off as I hoped. I struggled to attract enough users to make it sustainable. Eventually, I lost motivation and abandoned it to focus on my other open-source project, &lt;a href="https://masscode.io" rel="noopener noreferrer"&gt;massCode&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For years, the project gathered dust. But besides the marketing struggles, it also had a "ticking time bomb" in its core architecture.&lt;/p&gt;

&lt;p&gt;It was built entirely on &lt;strong&gt;Presets&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: The "Preset Trap"
&lt;/h2&gt;

&lt;p&gt;In the initial version, if a user wanted a header, they dragged a "Header Block". If they wanted a testimonial, they dragged a "Testimonial Block". Under the hood, these were rigid, hard-coded HTML chunks.&lt;/p&gt;

&lt;p&gt;This led to several "dev nightmares":&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Variation Explosion:&lt;/strong&gt; Want the image on the right? I had to code a new block. Want 3 columns instead of 2? Another block.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Maintenance Ceiling:&lt;/strong&gt; I became the bottleneck. Every "small change" requested by users required me to push a code update.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rigid Data Structure:&lt;/strong&gt; The JSON was tied to the visual representation, making migrations a headache.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Solution: Embracing Atomic Design
&lt;/h2&gt;

&lt;p&gt;I realized that to make the editor truly powerful, I had to decouple &lt;strong&gt;Layout&lt;/strong&gt; from &lt;strong&gt;Content&lt;/strong&gt;. I scrapped the old engine and rebuilt it using a recursive, hierarchical system:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Block (The Root):&lt;/strong&gt; The top-level section wrapper that handles full-width backgrounds and vertical spacing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Row (The Grid):&lt;/strong&gt; Defines the horizontal structure and manages column gaps and mobile collapsing logic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cell (The Flexible Container):&lt;/strong&gt; The powerhouse of the layout. It controls alignment, dimensions, and—crucially—&lt;strong&gt;can contain nested Rows&lt;/strong&gt;, allowing for complex, multi-level grid structures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Atom (The Content):&lt;/strong&gt; The actual elements: &lt;strong&gt;Text&lt;/strong&gt;, &lt;strong&gt;Image&lt;/strong&gt;, &lt;strong&gt;Button&lt;/strong&gt;, &lt;strong&gt;Menu&lt;/strong&gt;, and &lt;strong&gt;Divider&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This recursive structure (&lt;code&gt;Block -&amp;gt; Row -&amp;gt; Cell -&amp;gt; Row...&lt;/code&gt;) means you aren't limited to simple columns. You can build advanced layouts like "Sidebar + Main Content" or complex product grids without writing a single line of code.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Tech Stack
&lt;/h2&gt;

&lt;p&gt;I wanted this version to be modern, fast, and developer-friendly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Vue 3 (Composition API):&lt;/strong&gt; For a reactive and modular UI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript:&lt;/strong&gt; For a robust data schema (vital for complex email structures).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS:&lt;/strong&gt; Using the latest v4 for blazing fast styling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shadcn Vue:&lt;/strong&gt; For accessible UI components.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clean Email Output:&lt;/strong&gt; It generates production-ready, table-based HTML that actually works in Outlook.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Open Source?
&lt;/h2&gt;

&lt;p&gt;I’m building this in public as an Open Source project (&lt;strong&gt;AGPL-3.0&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;Why? First, because I believe the world needs a powerful, embeddable email builder that isn't locked behind a &lt;strong&gt;$500/month SaaS subscription&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But there is a deeper reason.&lt;/p&gt;

&lt;p&gt;We live in an era of increasing vendor lock-in and centralized control. We have seen instances where entire regions are cut off from services due to geopolitical reasons, leaving developers and users stranded. Software should be accessible and reliable, regardless of borders.&lt;/p&gt;

&lt;p&gt;Driven by a passion for open source, I want to provide a truly independent alternative to ensure that everyone has access to a powerful, self-hosted email builder.&lt;/p&gt;

&lt;p&gt;If you’ve ever struggled with rigid email templates or want to see how we handle complex Drag-and-Drop in Vue 3, I’d love for you to check out the repo.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Check it out here:&lt;/strong&gt; &lt;a href="https://github.com/mysigmail/card" rel="noopener noreferrer"&gt;github.com/mysigmail/card&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m actively looking for feedback on the architecture and, of course, contributors are more than welcome!&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>vue</category>
      <category>webdev</category>
      <category>email</category>
    </item>
    <item>
      <title>Bumpy: zero-config monorepo releases powered by Git history</title>
      <dc:creator>Anton Reshetov</dc:creator>
      <pubDate>Tue, 27 Jan 2026 16:21:37 +0000</pubDate>
      <link>https://dev.to/antonreshetov/bumpy-zero-config-monorepo-releases-powered-by-git-history-1nhe</link>
      <guid>https://dev.to/antonreshetov/bumpy-zero-config-monorepo-releases-powered-by-git-history-1nhe</guid>
      <description>&lt;p&gt;Hi there!&lt;/p&gt;

&lt;p&gt;Monorepo releases can be amazing… until the tooling feels either too heavy (extra metadata, intent files, complex flows) or too opinionated about&amp;nbsp;&lt;em&gt;how&lt;/em&gt;&amp;nbsp;you should work. I wanted something lightweight that stays out of the way — especially if your Git history is already meaningful.&lt;/p&gt;

&lt;p&gt;So I built&amp;nbsp;&lt;strong&gt;Bumpy&lt;/strong&gt;&amp;nbsp;— a&amp;nbsp;&lt;strong&gt;zero-config CLI for monorepo versioning&lt;/strong&gt;&amp;nbsp;that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Auto-discovers packages&lt;/strong&gt;&amp;nbsp;(pnpm/npm workspaces,&amp;nbsp;&lt;code&gt;apps/*&lt;/code&gt;,&amp;nbsp;&lt;code&gt;packages/*&lt;/code&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Suggests the next version&lt;/strong&gt;&amp;nbsp;using Conventional Commits&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Generates per-package changelogs&lt;/strong&gt;&amp;nbsp;from Git history&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Uses per-project tags&lt;/strong&gt;&amp;nbsp;like&amp;nbsp;&lt;code&gt;project@version&lt;/code&gt;&amp;nbsp;for precise release boundaries&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Supports prereleases&lt;/strong&gt;&amp;nbsp;and&amp;nbsp;&lt;code&gt;--dry-run&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Repo:&lt;/strong&gt;&amp;nbsp;&lt;a href="https://github.com/antonreshetov/bumpy" rel="noopener noreferrer"&gt;https://github.com/antonreshetov/bumpy&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best fit:&lt;/strong&gt;&amp;nbsp;small/medium monorepos that already use Conventional Commits and want clean per-package changelogs + tags, without adopting a whole new workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why another release tool?
&lt;/h2&gt;

&lt;p&gt;Tools like&amp;nbsp;&lt;strong&gt;Changesets&lt;/strong&gt;&amp;nbsp;and&amp;nbsp;&lt;strong&gt;Nx Release&lt;/strong&gt;&amp;nbsp;are excellent — they just optimize for different trade-offs than I needed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Changesets:&lt;/strong&gt;&amp;nbsp;great, but it’s a&amp;nbsp;&lt;em&gt;file-based workflow&lt;/em&gt;&amp;nbsp;(changeset “intent” markdown files that you commit and later assemble into releases).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Nx Release:&lt;/strong&gt;&amp;nbsp;powerful and well-integrated if you’re already in Nx; heavier if your repo isn’t.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bumpy tries to keep the best parts (automation + safety) while keeping Git as the source of truth and avoiding extra ceremony.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Bumpy works
&lt;/h2&gt;

&lt;p&gt;At release time, Bumpy:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Scan:&lt;/strong&gt;&amp;nbsp;Finds packages in your workspace.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Locate:&lt;/strong&gt;&amp;nbsp;Detects the last tag for each package (e.g.,&amp;nbsp;&lt;code&gt;project-a@1.2.3&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analyze:&lt;/strong&gt;&amp;nbsp;Reads Git history since that tag.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Suggest:&lt;/strong&gt;&amp;nbsp;Recommends a bump based on Conventional Commits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generate:&lt;/strong&gt;&amp;nbsp;Creates/updates a package-level&amp;nbsp;&lt;code&gt;CHANGELOG.md&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can always confirm the suggestion, choose a different bump type, or enter a custom version.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Global&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @antonreshetov/bumpy

&lt;span class="c"&gt;# Local (recommended for monorepos)&lt;/span&gt;
pnpm add &lt;span class="nt"&gt;-D&lt;/span&gt; @antonreshetov/bumpy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Common commands
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Interactive release:&lt;/strong&gt;&amp;nbsp;&lt;code&gt;bumpy&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Status overview:&lt;/strong&gt;&amp;nbsp;&lt;code&gt;bumpy status&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Release one project (non-interactive):&lt;/strong&gt;&amp;nbsp;&lt;code&gt;bumpy release project-a --type minor --yes&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dry-run:&lt;/strong&gt;&amp;nbsp;&lt;code&gt;bumpy release --dry-run&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Config is optional
&lt;/h2&gt;

&lt;p&gt;By default, Bumpy uses your existing workspace layout. To customize behavior, run &lt;code&gt;bumpy init&lt;/code&gt; to generate &lt;code&gt;bumpy.json&lt;/code&gt; in the repo root.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"projects"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"apps/*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"packages/*"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"release"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ignore"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"apps/internal-tool"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"changelog"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"projectChangelogs"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"workspaceChangelog"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"git"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"commit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"tag"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"push"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"commitMessage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"chore(release): {tag}"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Where I’d love feedback
&lt;/h2&gt;

&lt;p&gt;If you’ve used Changesets / Nx Release / anything similar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Does this release flow feel intuitive?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What would you&amp;nbsp;&lt;em&gt;miss&lt;/em&gt;&amp;nbsp;immediately if you switched to Bumpy?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Any edge cases you’ve hit around per-project tags or changelog structure?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What should&amp;nbsp;&lt;code&gt;bumpy status&lt;/code&gt;&amp;nbsp;show to be useful day-to-day?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repo again:&amp;nbsp;&lt;a href="https://github.com/antonreshetov/bumpy" rel="noopener noreferrer"&gt;https://github.com/antonreshetov/bumpy&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>monorepo</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
    <item>
      <title>MySigMail v2 — Open-Source Email Signature Generator</title>
      <dc:creator>Anton Reshetov</dc:creator>
      <pubDate>Fri, 19 Sep 2025 12:01:07 +0000</pubDate>
      <link>https://dev.to/antonreshetov/mysigmail-v2-open-source-email-signature-generator-2p6n</link>
      <guid>https://dev.to/antonreshetov/mysigmail-v2-open-source-email-signature-generator-2p6n</guid>
      <description>&lt;p&gt;In 2019, I launched MySigMail, a simple tool to create professional email signatures. It got some traction, but I got swept up in other open-source projects—like my code snippet manager &lt;a href="https://github.com/massCodeIO/massCode" rel="noopener noreferrer"&gt;massCode&lt;/a&gt;, which has grown a vibrant community. Now, I’m excited to revive app with MySigMail v2, an open-source, client-side email signature generator designed for developers who value transparency and control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why MySigMail?
&lt;/h2&gt;

&lt;p&gt;Let’s face it: creating a professional email signature from scratch is not trivial. You’re stuck wrestling with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Table-based layouts&lt;/strong&gt;: Email clients like Outlook demand clunky HTML tables that are a pain to code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inconsistent rendering&lt;/strong&gt;: Your signature looks great in Gmail but breaks in Apple Mail or Thunderbird.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time sinks&lt;/strong&gt;: Tweaking fonts, spacing, and images to work across clients is a nightmare.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Closed-source tools&lt;/strong&gt;: Most solutions hide their code and lock you into their ecosystem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overpriced subscriptions&lt;/strong&gt;: Paying monthly for something so basic feels wrong.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;MySigMail solves this. It’s a free, open-source, client-side tool that empowers you to create polished email signatures with ease. I built app to make professional signatures accessible to everyone—especially developers who value customization and openness.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Get
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deep Customization&lt;/strong&gt;: Tweak fonts, colors, avatar shapes, social icons, and custom fields to match your style or brand.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ready-to-Use Templates&lt;/strong&gt;: Kickstart your design with clean, professional layouts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible Add-Ons&lt;/strong&gt;: Add disclaimers, call-to-action blocks, and more to make your signature stand out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lightweight &amp;amp; Client-Side&lt;/strong&gt;: Run it locally with no server setup required, perfect for developers who want simplicity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get Started in Minutes
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/antonreshetov/mysigmail
&lt;span class="nb"&gt;cd &lt;/span&gt;mysigmail
bun &lt;span class="nb"&gt;install
&lt;/span&gt;bun run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Want to test image uploads? Add your AWS S3 credentials to a &lt;code&gt;.env&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VITE_AWS_S3_URL=
VITE_AWS_S3_BASKET=
VITE_AWS_S3_ID=
VITE_AWS_S3_KEY=
VITE_AWS_S3_REGION=
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why Open-Source?
&lt;/h2&gt;

&lt;p&gt;Open-source email signature generators are rare. Most tools are proprietary, expensive, or both. MySigMail is my contribution to the developer community—a transparent, customizable tool you can trust and extend. Whether you’re a solo dev or part of a team, MySigMail gives you the freedom to create signatures without the usual headaches.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let’s Hear from You!
&lt;/h2&gt;

&lt;p&gt;I’d love your feedback:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Would you use a client-side, open-source email signature tool?&lt;/li&gt;
&lt;li&gt;What features would make it even better for your workflow?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check out the project on GitHub: &lt;a href="https://github.com/antonreshetov/mysigmail" rel="noopener noreferrer"&gt;https://github.com/antonreshetov/mysigmail&lt;/a&gt;. I hope MySigMail helps you craft signatures that look great and feel effortless. &lt;/p&gt;

&lt;p&gt;Cheers,&lt;br&gt;
Anton&lt;/p&gt;

</description>
      <category>vue</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Tracks and Records Your Work Time Accurately</title>
      <dc:creator>Anton Reshetov</dc:creator>
      <pubDate>Mon, 01 Apr 2024 08:58:41 +0000</pubDate>
      <link>https://dev.to/antonreshetov/tracks-and-records-your-work-time-accurately-1pk9</link>
      <guid>https://dev.to/antonreshetov/tracks-and-records-your-work-time-accurately-1pk9</guid>
      <description>&lt;p&gt;The Timefall project is an open-source software that is being developed to provide users with an efficient and convenient time management tool. Created with modern software trends in mind, Timefall is a tool accessible to anyone who wants to better understand how they allocate their time and how it can be used most productively. It's a simple yet powerful tool capable of adapting to each user's needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Task Creation with Hourly Pay:&lt;/strong&gt; Simplify your work assignment process by creating tasks with specified hourly rates, making payroll calculations more straightforward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Task Folder Organization:&lt;/strong&gt; Keep your tasks neatly organized by distributing them into individual folders – streamlining work management and enhancing productivity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Detailed Reporting:&lt;/strong&gt; Assess your work performance over different periods with our comprehensive reports. Analyze your tasks by week, month or year.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local JSON Database:&lt;/strong&gt; Maintain absolute control and privacy of your task data with our simple JSON database that resides on your computer, eliminating dependence on cloud storage.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/antonreshetov"&gt;
        antonreshetov
      &lt;/a&gt; / &lt;a href="https://github.com/antonreshetov/timefall"&gt;
        timefall
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Tracks and Records Your Work Time Accurately
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/antonreshetov/timefall./preview.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SBeKHQTM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/antonreshetov/timefall./preview.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Timefall&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;strong&gt;Built with Electron &amp;amp; Vue.&lt;/strong&gt;
  &lt;br&gt;
  Inspired by Timemator
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/dfeec448dea9eee786d31a68f30323fe2de09b830667b8a958f229b57e90c3d8/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f616e746f6e7265736865746f762f74696d6566616c6c"&gt;&lt;img alt="GitHub package.json version" src="https://camo.githubusercontent.com/dfeec448dea9eee786d31a68f30323fe2de09b830667b8a958f229b57e90c3d8/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f616e746f6e7265736865746f762f74696d6566616c6c"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/a82bae6a8e3b776884b115f2faf1336e0b79adf77b3309c8e28a53442bc74d5a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f616e746f6e7265736865746f762f74696d6566616c6c2f746f74616c"&gt;&lt;img alt="GitHub All Releases" src="https://camo.githubusercontent.com/a82bae6a8e3b776884b115f2faf1336e0b79adf77b3309c8e28a53442bc74d5a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f616e746f6e7265736865746f762f74696d6566616c6c2f746f74616c"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/b9dab75ef5f952bc7ca86f1704582bb798b7d9823d991a3018c56096e81f74d3/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f616e746f6e7265736865746f762f74696d6566616c6c"&gt;&lt;img alt="GitHub" src="https://camo.githubusercontent.com/b9dab75ef5f952bc7ca86f1704582bb798b7d9823d991a3018c56096e81f74d3/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f616e746f6e7265736865746f762f74696d6566616c6c"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/antonreshetov/timefall/releases"&gt;Latest Release&lt;/a&gt; |
  &lt;a href="https://github.com/antonreshetov/timefall/discussions"&gt;Discussions&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Support&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Timefall is open source project and completely free to use.&lt;/p&gt;

&lt;p&gt;However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support Timefall development via the following methods:&lt;/p&gt;

&lt;div&gt;
&lt;p&gt;&lt;a href="https://paypal.me/antongithub" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/df35050e6bc1edef3684bfe80de6aabebc6559b4ae6903961eb3cc8ab7b8eeea/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d50617950616c2d626c75652e7376673f7374796c653d706f706f7574266c6f676f3d70617970616c" alt="Donate via PayPal"&gt;&lt;/a&gt;
&lt;a href="https://antonreshetov.gumroad.com/l/timefall" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/8757916023821844893207a355cb123ff0b0737068d5f9c458accd360f02e012/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d47756d726f61642d626c75653f7374796c653d706f706f7574266c6f676f3d646174613a696d6167652f7376672b786d6c3b6261736536342c50484e325a79423361575230614430694d7a51694947686c6157646f644430694d7a4d6949485a705a58644362336739496a41674d43417a4e43417a4d7949675a6d6c7362443069626d39755a53496765473173626e4d39496d6830644841364c79393364336375647a4d7562334a6e4c7a49774d44417663335a6e496a344b5047567362476c776332556759336739496a45354c6a67794f44636949474e35505349784f5334784d7a553549694279654430694d5451754d5463784e434967636e6b39496a457a4c6a59334e6a556949475a7062477739496d4a7359574e724969382b436a78775958526f49475139496b30784e6934784e7a4530494449354c6a6b304e6a52444d6a51754e44417a4d6941794f5334354e44593049444d784c6a45794e4445674d6a4d754e446b354e53417a4d5334784d6a5178494445314c6a51344f4464444d7a45754d5449304d5341334c6a51334f4341794e4334304d444d79494445754d444d784d4445674d5459754d5463784e4341784c6a417a4d544178517a63754f544d354e7941784c6a417a4d544178494445754d6a45344e7a55674e7934304e7a67674d5334794d5467334e5341784e5334304f446733517a45754d6a45344e7a55674d6a4d754e446b354e5341334c6a6b7a4f5463674d6a6b754f5451324e4341784e6934784e7a4530494449354c6a6b304e6a52614969426d615778735053496a526b59354d4555344969427a64484a7661325539496d4a7359574e724969427a64484a766132557464326c6b64476739496a45754e5459794e53497650676f38634746306143426b50534a4e4d5455754d4451324e7941794d6934334f444933517a45774c6a67324d6941794d6934334f444933494467754e4441774d7a6b674d546b754e4441794e4341344c6a51774d444d35494445314c6a45354e7a5a444f4334304d44417a4f5341784d4334344d6a6335494445784c6a45774f4445674e7934794f4449334d5341784e6934794e7a6330494463754d6a67794e7a46444d6a45754e6a45774f5341334c6a49344d6a63784944497a4c6a51784e6941784d4334354d5441304944497a4c6a51354f4445674d5449754f5463784e5567784f5334324e444532517a45354c6a55314f5459674d5445754f4445334d7941784f4334314e7a5135494445774c6a41344e546b674d5459754d546b314e4341784d4334774f445535517a457a4c6a59314d5467674d5441754d4467314f5341784d6934774d544133494445794c6a4d784d6941784d6934774d544133494445314c6a417a4d6a64444d5449754d4445774e7941784e7934334e544d314944457a4c6a59314d5467674d546b754f5463354e5341784e6934784f545530494445354c6a6b334f5456444d5467754e446b794f5341784f5334354e7a6b31494445354c6a51334e7a55674d5467754d5459314e7941784f5334344f446334494445324c6a4d314d546c494d5459754d546b314e4659784e4334344e6a63345344497a4c6a6b304d7a4a574d6a49754e4455794f5567794d4334314e445179566a45334c6a59334d554d794d4334794f5467674d546b754e4441794e4341784f5334794d7a457a494449794c6a63344d6a63674d5455754d4451324e7941794d6934334f444933576949675a6d6c7362443069596d7868593273694c7a344b5043397a646d632b43673d3d" alt="Donate via Gumroad"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;About&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;The Timefall project is an open-source software that is being developed to provide users with an efficient and convenient time management tool. Created with modern software trends in mind, Timefall is a tool accessible to anyone who wants to better understand how they allocate their time and how it can be used most productively. It's a simple yet powerful tool capable of adapting to each user's needs.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Development&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Prerequisites&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;The project uses Bun for building and running. Please make sure you have &lt;a href="https://bun.sh/" rel="nofollow"&gt;Bun&lt;/a&gt; installed.&lt;/p&gt;

&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;
&lt;pre class="notranslate"&gt;&lt;code&gt;# Install dependencies
bun install
# Run the app
bun&lt;/code&gt;&lt;/pre&gt;…&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/antonreshetov/timefall"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



</description>
      <category>vue</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Create Stunning HTML Emails with vue-email - A Vue.js Components</title>
      <dc:creator>Anton Reshetov</dc:creator>
      <pubDate>Mon, 26 Jun 2023 06:20:00 +0000</pubDate>
      <link>https://dev.to/antonreshetov/create-stunning-html-emails-with-vue-email-a-vuejs-components-28he</link>
      <guid>https://dev.to/antonreshetov/create-stunning-html-emails-with-vue-email-a-vuejs-components-28he</guid>
      <description>&lt;p&gt;Hey everyone,&lt;/p&gt;

&lt;p&gt;I'm excited to share a side project I've been working on - &lt;a href="https://github.com/mysigmail/vue-email" rel="noopener noreferrer"&gt;Vue Email Components&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The primary objective of this project is to simplify the process of creating emails and to make it more accessible for everyone. MySigMail Vue Email Components is a collection of high-quality, unstyled components for creating beautiful emails using Vue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reduces the difficulty of coding responsive emails:&lt;/strong&gt; Helps ease the challenges of development and ensures consistency across various email clients, such as Gmail, Outlook, and others.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pre-built components:&lt;/strong&gt; This project includes a collection of components that can be used to create impressive emails without the hassle of manually creating tables and managing outdated code. Components include MBody, MButton, MColumn, MContainer, MHead, MHeading, MHr, MHtml, MImage, MLink, MPreview, MSection, MText and many more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Client Application:&lt;/strong&gt; This repository also contains a client application that serves as a local testing environment. Using this client, you can create email templates by selecting from pre-built components, apply styles to these components, preview the final render, and obtain the corresponding HTML code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This project was inspired by react-email and aims to bring similar functionality to the Vue ecosystem. I'd love to hear your thoughts, feedback, and suggestions for improvements. Feel free to check out the repository and contribute if you're interested!&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/mysigmail" rel="noopener noreferrer"&gt;
        mysigmail
      &lt;/a&gt; / &lt;a href="https://github.com/mysigmail/vue-email" rel="noopener noreferrer"&gt;
        vue-email
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A collection of high-quality, unstyled components for creating beautiful emails using Vue.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/mysigmail/vue-email./hero.jpg"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fmysigmail%2Fvue-email.%2Fhero.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Vue Email Components&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A collection of high-quality, unstyled components&lt;br&gt;for creating beautiful emails using Vue.&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://vue-email.mysigmail.com" rel="nofollow noopener noreferrer"&gt;Demo&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;strong&gt;SPONSORS&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://m.do.co/c/f2bb3bfab2e6" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fmysigmail%2Fvue-email.github%2Fassets%2FDO.svg"&gt;
  &lt;/a&gt;
  &amp;nbsp;
  &lt;a href="https://mysigmail.com/?ref=github/massCodeIO" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fmysigmail%2Fvue-email.github%2Fassets%2FMySigMail.svg"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Support&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;If you find this project useful, you can support development via the following methods:&lt;/p&gt;

&lt;div&gt;
&lt;p&gt;&lt;a href="https://paypal.me/antongithub" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fa851042eeebf66ee10e197c5a13a59f6f79451f51a42d36bbcedcb1354592e6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d50617950616c2d626c75652e7376673f7374796c653d706f706f7574266c6f676f3d70617970616c" alt="Donate via PayPal"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Introduction&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Reduces the difficulty of coding responsive emails, easing the challenges of development and ensuring consistency across various email clients, such as Gmail, Outlook, and others.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Motivation&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Email still remains one of the most widely used and popular communication channels to this day, and its popularity shows no signs of diminishing over time.&lt;/p&gt;

&lt;p&gt;We aim to simplify the process of creating emails and make it more accessible for everyone.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Install&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;pnpm add @mysigmail/vue-email-components&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Use&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Global&lt;/h3&gt;

&lt;/div&gt;

&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-s1"&gt;createApp&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'vue'&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-v"&gt;App&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'./App.vue'&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-v"&gt;VueEmail&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'@mysigmail/vue-email-components'&lt;/span&gt;

&lt;span class="pl-en"&gt;createApp&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-v"&gt;App&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;use&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-v"&gt;VueEmail&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;mount&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'#app'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Local&lt;/h3&gt;

&lt;/div&gt;

&lt;div class="highlight highlight-text-html-basic notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt; &lt;span class="pl-c1"&gt;setup&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-v"&gt;MButton&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'@mysigmail/vue-email-components'&lt;/span&gt;
&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;script&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/mysigmail/vue-email" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



</description>
      <category>vue</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>massCode v3 - An open source snippets manager is out 🚀</title>
      <dc:creator>Anton Reshetov</dc:creator>
      <pubDate>Mon, 05 Sep 2022 18:03:05 +0000</pubDate>
      <link>https://dev.to/antonreshetov/masscode-v3-an-open-source-snippets-manager-is-out-17c8</link>
      <guid>https://dev.to/antonreshetov/masscode-v3-an-open-source-snippets-manager-is-out-17c8</guid>
      <description>&lt;h2&gt;
  
  
  What it is and why
&lt;/h2&gt;

&lt;p&gt;massCode is a snippet manager for developers that helps you conveniently organize pieces of code and have quick access to them. Multilevel folders and tags are used for organization, and each snippet has fragments for even more granular structuring. The app supports Markdown so it can be used as a notebook if needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's New
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Direct support for TextMate grammars
&lt;/h3&gt;

&lt;p&gt;Now massCode uses Codemirror as the basis for the editor and &lt;code&gt;.tmLanguage&lt;/code&gt; as the grammar for syntax highlighting. This tandem opens the door to over 600 existing grammars. The application currently supports more than 160 grammars. In addition to &lt;code&gt;.tmLanguage&lt;/code&gt;, the application supports &lt;code&gt;.tmTheme&lt;/code&gt; for themes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real-time Render for HTML &amp;amp; CSS
&lt;/h3&gt;

&lt;p&gt;Now you can see the result of HTML &amp;amp; CSS directly in the application. This is such a CodePen on minimal 😀&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oS2J5bsv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/br9wh6oqt1b8ej2kh4dv.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oS2J5bsv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/br9wh6oqt1b8ej2kh4dv.gif" alt="Real-time Render for HTML &amp;amp; CSS" width="880" height="539"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Mermaid Diagram
&lt;/h3&gt;

&lt;p&gt;Added support for Mermaid - diagramming and charting tool that renders Markdown-inspired text definitions to create and modify diagrams dynamically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Presentation Mode
&lt;/h3&gt;

&lt;p&gt;massCode allows you to make a presentation out of a sequence of snippets. It's great for classroom use, team meetings, conferences or simply reviewing notes on your own.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WulycRDb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3zsiok39q9lu2v6kzc9k.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WulycRDb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3zsiok39q9lu2v6kzc9k.gif" alt="Presentation Mode" width="880" height="539"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Screnshots
&lt;/h3&gt;

&lt;p&gt;Create beautiful snippet images on different backgrounds and in different modes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Localization
&lt;/h3&gt;

&lt;p&gt;massCode is available in English, Español, Português (Brasil), Русский, 中文 (简体), 中文 (繁體), 中文 (繁體 香港特別行政區) &amp;amp; 日本語 languages.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/massCodeIO"&gt;
        massCodeIO
      &lt;/a&gt; / &lt;a href="https://github.com/massCodeIO/massCode"&gt;
        massCode
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A free and open source code snippets manager for developers
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/massCodeIO/massCode./preview.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Cwx2R67P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/massCodeIO/massCode./preview.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h1&gt;
massCode&lt;/h1&gt;

&lt;p&gt;
  &lt;strong&gt;Built with Electron, Vue 3 &amp;amp; Codemirror.&lt;/strong&gt;
  &lt;br&gt;
  Inspired by applications like SnippetsLab and Quiver
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/1dea35156c4877cdf66542f241776832fd3abf0b4f5b2553e7f7d04a549ba510/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f6d617373436f6465494f2f6d617373436f6465"&gt;&lt;img alt="GitHub package.json version" src="https://camo.githubusercontent.com/1dea35156c4877cdf66542f241776832fd3abf0b4f5b2553e7f7d04a549ba510/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f6d617373436f6465494f2f6d617373436f6465"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/a32dc816b7bda0457832bb6aeb55705ee846cdc423c8569a6e2adbc5ac473828/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f6d617373436f6465494f2f6d617373436f64652f746f74616c"&gt;&lt;img alt="GitHub All Releases" src="https://camo.githubusercontent.com/a32dc816b7bda0457832bb6aeb55705ee846cdc423c8569a6e2adbc5ac473828/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f6d617373436f6465494f2f6d617373436f64652f746f74616c"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/2085b33952f054364f3220359b02f9992de006174155787bd8fa478e163078bc/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6d617373436f6465494f2f6d617373436f6465"&gt;&lt;img alt="GitHub" src="https://camo.githubusercontent.com/2085b33952f054364f3220359b02f9992de006174155787bd8fa478e163078bc/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6d617373436f6465494f2f6d617373436f6465"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/massCodeIO/massCode/releases"&gt;Latest Release&lt;/a&gt; |
  &lt;a href="https://masscode.io/documentation/" rel="nofollow"&gt;Documentation&lt;/a&gt; |
  &lt;a href="https://github.com/massCodeIO/massCode/blob/master/CHANGELOG.md"&gt;Change Log&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  Extensions
  &lt;a href="https://marketplace.visualstudio.com/items?itemName=AntonReshetov.masscode-assistant" rel="nofollow"&gt;VS Code&lt;/a&gt; |
  &lt;a href="https://www.raycast.com/antonreshetov/masscode" rel="nofollow"&gt;Raycast&lt;/a&gt; |
  &lt;a href="https://github.com/massCodeIO/assistant-alfred"&gt;Alfred&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;strong&gt;SPONSORS&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://m.do.co/c/f2bb3bfab2e6" rel="nofollow"&gt;
    &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZVbS26Hq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/massCodeIO/massCode.github/assets/DO.svg"&gt;
  &lt;/a&gt;
  &amp;nbsp;
  &lt;a href="https://mysigmail.com/?ref=github/massCodeIO" rel="nofollow"&gt;
    &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zEL5xU58--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/massCodeIO/massCode.github/assets/MySigMail.svg"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
Support&lt;/h2&gt;

&lt;p&gt;massCode is open source project and completely free to use.&lt;/p&gt;

&lt;p&gt;However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support massCode development via the following methods:&lt;/p&gt;

&lt;div&gt;
&lt;p&gt;&lt;a href="https://opencollective.com/masscode" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/6fd5bfad67c414dca55292020d15e5cb2b266fcae48f67ed7cbcca32b67a3af8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d4f70656e253230436f6c6c6563746976652d626c75652e7376673f7374796c653d706f706f7574266c6f676f3d6f70656e636f6c6c656374697665" alt="Donate via Open Collective"&gt;&lt;/a&gt;
&lt;a href="https://paypal.me/antongithub" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/088d94bd8e338b00ef023545c3b81109aef5cca6d1685d1f16820c499ca5807f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d50617950616c2d626c75652e7376673f7374796c653d706f706f7574266c6f676f3d70617970616c" alt="Donate via PayPal"&gt;&lt;/a&gt;
&lt;a href="https://antonreshetov.gumroad.com/l/masscode" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/5b5080f3e4e4dc14c2ee54c661d107514ff1f9a25d0e6b83af524622bf7eb133/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d47756d726f61642d626c75653f7374796c653d706f706f7574266c6f676f3d646174613a696d6167652f7376672b786d6c3b6261736536342c50484e325a79423361575230614430694d7a51694947686c6157646f644430694d7a4d6949485a705a58644362336739496a41674d43417a4e43417a4d7949675a6d6c7362443069626d39755a53496765473173626e4d39496d6830644841364c79393364336375647a4d7562334a6e4c7a49774d44417663335a6e496a344b5047567362476c776332556759336739496a45354c6a67794f44636949474e35505349784f5334784d7a553549694279654430694d5451754d5463784e434967636e6b39496a457a4c6a59334e6a556949475a7062477739496d4a7359574e724969382b436a78775958526f49475139496b30784e6934784e7a4530494449354c6a6b304e6a52444d6a51754e44417a4d6941794f5334354e44593049444d784c6a45794e4445674d6a4d754e446b354e53417a4d5334784d6a5178494445314c6a51344f4464444d7a45754d5449304d5341334c6a51334f4341794e4334304d444d79494445754d444d784d4445674d5459754d5463784e4341784c6a417a4d544178517a63754f544d354e7941784c6a417a4d544178494445754d6a45344e7a55674e7934304e7a67674d5334794d5467334e5341784e5334304f446733517a45754d6a45344e7a55674d6a4d754e446b354e5341334c6a6b7a4f5463674d6a6b754f5451324e4341784e6934784e7a4530494449354c6a6b304e6a52614969426d615778735053496a526b59354d4555344969427a64484a7661325539496d4a7359574e724969427a64484a766132557464326c6b64476739496a45754e5459794e53497650676f38634746306143426b50534a4e4d5455754d4451324e7941794d6934334f444933517a45774c6a67324d6941794d6934334f444933494467754e4441774d7a6b674d546b754e4441794e4341344c6a51774d444d35494445314c6a45354e7a5a444f4334304d44417a4f5341784d4334344d6a6335494445784c6a45774f4445674e7934794f4449334d5341784e6934794e7a6330494463754d6a67794e7a46444d6a45754e6a45774f5341334c6a49344d6a63784944497a4c6a51784e6941784d4334354d5441304944497a4c6a51354f4445674d5449754f5463784e5567784f5334324e444532517a45354c6a55314f5459674d5445754f4445334d7941784f4334314e7a5135494445774c6a41344e546b674d5459754d546b314e4341784d4334774f445535517a457a4c6a59314d5467674d5441754d4467314f5341784d6934774d544133494445794c6a4d784d6941784d6934774d544133494445314c6a417a4d6a64444d5449754d4445774e7941784e7934334e544d314944457a4c6a59314d5467674d546b754f5463354e5341784e6934784f545530494445354c6a6b334f5456444d5467754e446b794f5341784f5334354e7a6b31494445354c6a51334e7a55674d5467754d5459314e7941784f5334344f446334494445324c6a4d314d546c494d5459754d546b314e4659784e4334344e6a63345344497a4c6a6b304d7a4a574d6a49754e4455794f5567794d4334314e445179566a45334c6a59334d554d794d4334794f5467674d546b754e4441794e4341784f5334794d7a457a494449794c6a63344d6a63674d5455754d4451324e7941794d6934334f444933576949675a6d6c7362443069596d7868593273694c7a344b5043397a646d632b43673d3d" alt="Donate via Ko-Fi"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h2&gt;
Features&lt;/h2&gt;

&lt;h3&gt;
Organization&lt;/h3&gt;

&lt;p&gt;massCode allows you to organize snippets using multi-level folders as well as tags. Each snippet has fragments - tabs, which gives even greater level of organization.&lt;/p&gt;

&lt;h3&gt;
Editor&lt;/h3&gt;

&lt;p&gt;massCode uses &lt;a href="https://github.com/codemirror/codemirror5"&gt;Codemirror&lt;/a&gt; as the basis for the editor and &lt;code&gt;.tmLanguage&lt;/code&gt; as the grammar for syntax highlighting. This tandem opens the door to over &lt;a href="https://github.com/github/linguist/blob/master/vendor/README.md"&gt;600&lt;/a&gt; existing grammars. The application currently supports more than &lt;a href="https://github.com/massCodeIO/massCode/tree/master/src/renderer/components/editor"&gt;160&lt;/a&gt; grammars. In addition to &lt;code&gt;.tmLanguage&lt;/code&gt;, the application supports &lt;code&gt;.tmTheme&lt;/code&gt; for themes. There is also…&lt;/p&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/massCodeIO/massCode"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Best regards,&lt;br&gt;
Anton&lt;/p&gt;

</description>
      <category>vue</category>
      <category>typescript</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>massCode v2 - An open source snippets manager is out to beta 🎉</title>
      <dc:creator>Anton Reshetov</dc:creator>
      <pubDate>Wed, 13 Apr 2022 18:09:23 +0000</pubDate>
      <link>https://dev.to/antonreshetov/masscode-v2-an-open-source-snippets-manager-is-out-to-beta-25lb</link>
      <guid>https://dev.to/antonreshetov/masscode-v2-an-open-source-snippets-manager-is-out-to-beta-25lb</guid>
      <description>&lt;p&gt;Hi, there!&lt;/p&gt;

&lt;p&gt;For a long time I did not have free time to develop massCode v1 and I am exited that massCode v2 is out to beta. &lt;/p&gt;

&lt;h2&gt;
  
  
  Goal
&lt;/h2&gt;

&lt;p&gt;The v1 code base is simply obsolete. massCode v1 was written using Electron v7, Vue 2, and JavaScript. The new version of massCode is based on Electron 16, Vue 3, and TypeScript. The only option to use the latest technology is to start from scratch, since rewriting the current code base is pretty much like starting from scratch, except that a lot of time will be spent migrating to the new requirements of the technology in use. This also includes updating dependencies.&lt;/p&gt;

&lt;p&gt;Electron v16 makes it possible to create a build for M1, Vue 3 &amp;amp; Vite is a very fast development and final build of the frontend of the application, TypeScript is a typing tool which gives less time for the subsequent development.&lt;/p&gt;

&lt;p&gt;In the new version of the application I am abandoning Monaco editor in favor of Ace editor, as it is a lighter weight library. Ace also supports much more language syntax highlighting and TextMate, which is more widespread than the proprietary Monarch for Monaco editor.&lt;/p&gt;

&lt;p&gt;The new version will have a database based on plain JSON. In v1 it was used for this purpose library NeDB, which is no longer supported by the author and has bugs. Also, new version will have API server available on localhost, which will allow integration with any third-party applications, such as Raycast or Alfred.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Organization
&lt;/h3&gt;

&lt;p&gt;massCode allows you to organize snippets using multi-level folders as well as tags. Each snippet has fragments - tabs, which gives even greater level of organization.&lt;/p&gt;

&lt;h3&gt;
  
  
  Editor
&lt;/h3&gt;

&lt;p&gt;A snippet manager must not only provide organization of snippets but also have a good code editor. That's why under the hood of massCode there's &lt;a href="https://microsoft.github.io/monaco-editor"&gt;Ace&lt;/a&gt;. Ace is a high performance code editor which supports syntax highlighting for over 170 languages. I also added a &lt;a href="https://prettier.io/"&gt;Prettier&lt;/a&gt; to code formatter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Markdown
&lt;/h3&gt;

&lt;p&gt;massCode allows you to write in Markdown and also provide syntax highlighting inside a code block. And of course there is a preview.&lt;/p&gt;

&lt;h3&gt;
  
  
  Search
&lt;/h3&gt;

&lt;p&gt;It is impossible to imagine a productive snippets manager without quick access to snippets. Therefore massCode has a fast full-text search with highlighting of the search query.&lt;/p&gt;

&lt;h3&gt;
  
  
  Autosave
&lt;/h3&gt;

&lt;p&gt;massCode automatically saves any changes you make during work, so you don't have to worry about losing changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sync
&lt;/h3&gt;

&lt;p&gt;You can use any service that provides cloud synchronization, such as iCloud Drive, Google Drive, Dropbox or other similar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Database
&lt;/h3&gt;

&lt;p&gt;massCode uses a simple JSON to store your data. The database files are on your local computer.&lt;/p&gt;

&lt;h3&gt;
  
  
  API Server
&lt;/h3&gt;

&lt;p&gt;Coming soon.&lt;/p&gt;

&lt;p&gt;I hope that my app will be useful to someone. &lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/massCodeIO"&gt;
        massCodeIO
      &lt;/a&gt; / &lt;a href="https://github.com/massCodeIO/massCode"&gt;
        massCode
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A free and open source code snippets manager for developers
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/massCodeIO/massCode./preview.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Cwx2R67P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/massCodeIO/massCode./preview.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h1&gt;
massCode&lt;/h1&gt;

&lt;p&gt;
  &lt;strong&gt;Built with Electron, Vue 3 &amp;amp; Codemirror.&lt;/strong&gt;
  &lt;br&gt;
  Inspired by applications like SnippetsLab and Quiver
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/1dea35156c4877cdf66542f241776832fd3abf0b4f5b2553e7f7d04a549ba510/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f6d617373436f6465494f2f6d617373436f6465"&gt;&lt;img alt="GitHub package.json version" src="https://camo.githubusercontent.com/1dea35156c4877cdf66542f241776832fd3abf0b4f5b2553e7f7d04a549ba510/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f6d617373436f6465494f2f6d617373436f6465"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/a32dc816b7bda0457832bb6aeb55705ee846cdc423c8569a6e2adbc5ac473828/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f6d617373436f6465494f2f6d617373436f64652f746f74616c"&gt;&lt;img alt="GitHub All Releases" src="https://camo.githubusercontent.com/a32dc816b7bda0457832bb6aeb55705ee846cdc423c8569a6e2adbc5ac473828/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f6d617373436f6465494f2f6d617373436f64652f746f74616c"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/2085b33952f054364f3220359b02f9992de006174155787bd8fa478e163078bc/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6d617373436f6465494f2f6d617373436f6465"&gt;&lt;img alt="GitHub" src="https://camo.githubusercontent.com/2085b33952f054364f3220359b02f9992de006174155787bd8fa478e163078bc/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6d617373436f6465494f2f6d617373436f6465"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/massCodeIO/massCode/releases"&gt;Latest Release&lt;/a&gt; |
  &lt;a href="https://masscode.io/documentation/" rel="nofollow"&gt;Documentation&lt;/a&gt; |
  &lt;a href="https://github.com/massCodeIO/massCode/blob/master/CHANGELOG.md"&gt;Change Log&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  Extensions
  &lt;a href="https://marketplace.visualstudio.com/items?itemName=AntonReshetov.masscode-assistant" rel="nofollow"&gt;VS Code&lt;/a&gt; |
  &lt;a href="https://www.raycast.com/antonreshetov/masscode" rel="nofollow"&gt;Raycast&lt;/a&gt; |
  &lt;a href="https://github.com/massCodeIO/assistant-alfred"&gt;Alfred&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
Support&lt;/h2&gt;

&lt;p&gt;massCode is open source project and completely free to use.&lt;/p&gt;

&lt;p&gt;However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support massCode development via the following methods:&lt;/p&gt;

&lt;div&gt;
&lt;p&gt;&lt;a href="https://opencollective.com/masscode" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/6fd5bfad67c414dca55292020d15e5cb2b266fcae48f67ed7cbcca32b67a3af8/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d4f70656e253230436f6c6c6563746976652d626c75652e7376673f7374796c653d706f706f7574266c6f676f3d6f70656e636f6c6c656374697665" alt="Donate via Open Collective"&gt;&lt;/a&gt;
&lt;a href="https://paypal.me/antongithub" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/088d94bd8e338b00ef023545c3b81109aef5cca6d1685d1f16820c499ca5807f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d50617950616c2d626c75652e7376673f7374796c653d706f706f7574266c6f676f3d70617970616c" alt="Donate via PayPal"&gt;&lt;/a&gt;
&lt;a href="https://antonreshetov.gumroad.com/l/masscode" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/5b5080f3e4e4dc14c2ee54c661d107514ff1f9a25d0e6b83af524622bf7eb133/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d47756d726f61642d626c75653f7374796c653d706f706f7574266c6f676f3d646174613a696d6167652f7376672b786d6c3b6261736536342c50484e325a79423361575230614430694d7a51694947686c6157646f644430694d7a4d6949485a705a58644362336739496a41674d43417a4e43417a4d7949675a6d6c7362443069626d39755a53496765473173626e4d39496d6830644841364c79393364336375647a4d7562334a6e4c7a49774d44417663335a6e496a344b5047567362476c776332556759336739496a45354c6a67794f44636949474e35505349784f5334784d7a553549694279654430694d5451754d5463784e434967636e6b39496a457a4c6a59334e6a556949475a7062477739496d4a7359574e724969382b436a78775958526f49475139496b30784e6934784e7a4530494449354c6a6b304e6a52444d6a51754e44417a4d6941794f5334354e44593049444d784c6a45794e4445674d6a4d754e446b354e53417a4d5334784d6a5178494445314c6a51344f4464444d7a45754d5449304d5341334c6a51334f4341794e4334304d444d79494445754d444d784d4445674d5459754d5463784e4341784c6a417a4d544178517a63754f544d354e7941784c6a417a4d544178494445754d6a45344e7a55674e7934304e7a67674d5334794d5467334e5341784e5334304f446733517a45754d6a45344e7a55674d6a4d754e446b354e5341334c6a6b7a4f5463674d6a6b754f5451324e4341784e6934784e7a4530494449354c6a6b304e6a52614969426d615778735053496a526b59354d4555344969427a64484a7661325539496d4a7359574e724969427a64484a766132557464326c6b64476739496a45754e5459794e53497650676f38634746306143426b50534a4e4d5455754d4451324e7941794d6934334f444933517a45774c6a67324d6941794d6934334f444933494467754e4441774d7a6b674d546b754e4441794e4341344c6a51774d444d35494445314c6a45354e7a5a444f4334304d44417a4f5341784d4334344d6a6335494445784c6a45774f4445674e7934794f4449334d5341784e6934794e7a6330494463754d6a67794e7a46444d6a45754e6a45774f5341334c6a49344d6a63784944497a4c6a51784e6941784d4334354d5441304944497a4c6a51354f4445674d5449754f5463784e5567784f5334324e444532517a45354c6a55314f5459674d5445754f4445334d7941784f4334314e7a5135494445774c6a41344e546b674d5459754d546b314e4341784d4334774f445535517a457a4c6a59314d5467674d5441754d4467314f5341784d6934774d544133494445794c6a4d784d6941784d6934774d544133494445314c6a417a4d6a64444d5449754d4445774e7941784e7934334e544d314944457a4c6a59314d5467674d546b754f5463354e5341784e6934784f545530494445354c6a6b334f5456444d5467754e446b794f5341784f5334354e7a6b31494445354c6a51334e7a55674d5467754d5459314e7941784f5334344f446334494445324c6a4d314d546c494d5459754d546b314e4659784e4334344e6a63345344497a4c6a6b304d7a4a574d6a49754e4455794f5567794d4334314e445179566a45334c6a59334d554d794d4334794f5467674d546b754e4441794e4341784f5334794d7a457a494449794c6a63344d6a63674d5455754d4451324e7941794d6934334f444933576949675a6d6c7362443069596d7868593273694c7a344b5043397a646d632b43673d3d" alt="Donate via Ko-Fi"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h2&gt;
Features&lt;/h2&gt;

&lt;h3&gt;
Organization&lt;/h3&gt;

&lt;p&gt;massCode allows you to organize snippets using multi-level folders as well as tags. Each snippet has fragments - tabs, which gives even greater level of organization.&lt;/p&gt;

&lt;h3&gt;
Editor&lt;/h3&gt;

&lt;p&gt;massCode uses &lt;a href="https://github.com/codemirror/codemirror5"&gt;Codemirror&lt;/a&gt; as the basis for the editor and &lt;code&gt;.tmLanguage&lt;/code&gt; as the grammar for syntax highlighting. This tandem opens the door to over &lt;a href="https://github.com/github/linguist/blob/master/vendor/README.md"&gt;600&lt;/a&gt; existing grammars. The application currently supports more than &lt;a href="https://github.com/massCodeIO/massCode/tree/master/src/renderer/components/editor"&gt;160&lt;/a&gt; grammars. In addition to &lt;code&gt;.tmLanguage&lt;/code&gt;, the application supports &lt;code&gt;.tmTheme&lt;/code&gt; for themes. There is also support…&lt;/p&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/massCodeIO/massCode"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Best regards, Anton.&lt;/p&gt;

</description>
      <category>vue</category>
      <category>typescript</category>
      <category>electron</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Image Optimizer</title>
      <dc:creator>Anton Reshetov</dc:creator>
      <pubDate>Thu, 09 Dec 2021 11:25:12 +0000</pubDate>
      <link>https://dev.to/antonreshetov/image-optimizer-2lgj</link>
      <guid>https://dev.to/antonreshetov/image-optimizer-2lgj</guid>
      <description>&lt;p&gt;Recently I decided to try Vite in tandem with Electron for self-development purposes. I ended up with a small project.&lt;/p&gt;

&lt;p&gt;I don't doubt there are lots of cool tools like this on the net, but I think mine will complete that list. Enjoy using it&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GBeskZBa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gjvvlx6ywquxklp992bn.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GBeskZBa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gjvvlx6ywquxklp992bn.gif" alt="Image description" width="864" height="590"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/antonreshetov"&gt;
        antonreshetov
      &lt;/a&gt; / &lt;a href="https://github.com/antonreshetov/image-optimizer"&gt;
        image-optimizer
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A free and open source tool for optimizing images and vector graphics.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/antonreshetov/image-optimizerlogo.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--symApnRz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/antonreshetov/image-optimizerlogo.png" width="150px"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h1&gt;
Image Optimizer&lt;/h1&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/18973c5527d09657cfe806598a5985121c329d8476ddc39696df3f0d2a690723/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f616e746f6e7265736865746f762f696d6167652d6f7074696d697a6572"&gt;&lt;img alt="GitHub package.json version" src="https://camo.githubusercontent.com/18973c5527d09657cfe806598a5985121c329d8476ddc39696df3f0d2a690723/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f616e746f6e7265736865746f762f696d6167652d6f7074696d697a6572"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/d86f08846ad50a6a3e831cbcfe0d71462e8f16b503255ff96da36a5c4cae50d5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f616e746f6e7265736865746f762f696d6167652d6f7074696d697a65722f746f74616c"&gt;&lt;img alt="GitHub All Releases" src="https://camo.githubusercontent.com/d86f08846ad50a6a3e831cbcfe0d71462e8f16b503255ff96da36a5c4cae50d5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f616e746f6e7265736865746f762f696d6167652d6f7074696d697a65722f746f74616c"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/72667029975e4e1b5ee2ee9346c47b2932a237c41cfe9a509eeb395784c3d0eb/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f616e746f6e7265736865746f762f696d6167652d6f7074696d697a6572"&gt;&lt;img alt="GitHub" src="https://camo.githubusercontent.com/72667029975e4e1b5ee2ee9346c47b2932a237c41cfe9a509eeb395784c3d0eb/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f616e746f6e7265736865746f762f696d6167652d6f7074696d697a6572"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;strong&gt;Built with Electron, Vue &amp;amp; Vite.&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;A free and open source tool for optimizing images and vector graphics.&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/antonreshetov/image-optimizerdemo.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4GJcoK8R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://github.com/antonreshetov/image-optimizerdemo.gif"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
Core libs&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/mozilla/mozjpeg"&gt;mozjpeg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pngquant.org" rel="nofollow"&gt;pngquant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/speed/webp/docs/cwebp" rel="nofollow"&gt;cwebp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.lcdf.org/gifsicle/" rel="nofollow"&gt;gifsicle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/svg/svgo"&gt;SVGO&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
Download and Installation on macOS&lt;/h2&gt;

&lt;p&gt;Go to &lt;a href="https://github.com/antonreshetov/image-optimizer/releases"&gt;Releases&lt;/a&gt; get the latest build, download and install.&lt;/p&gt;

&lt;h2&gt;
Development&lt;/h2&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; install dependencies&lt;/span&gt;
yarn
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; serve with hot reload&lt;/span&gt;
yarn dev&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
Build&lt;/h2&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; build application for production&lt;/span&gt;
yarn build&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
Related&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/antonreshetov/electron-vue-vite-boilerplate"&gt;Electron Vue Vite Boilerplate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Copyright (c) 2021-present, Anton Reshetov.&lt;/p&gt;
&lt;/div&gt;

  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/antonreshetov/image-optimizer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



</description>
      <category>github</category>
      <category>opensource</category>
      <category>vue</category>
      <category>electron</category>
    </item>
    <item>
      <title>massCode - open source snippets manager is out to v1.0 🎉</title>
      <dc:creator>Anton Reshetov</dc:creator>
      <pubDate>Thu, 27 Feb 2020 18:12:29 +0000</pubDate>
      <link>https://dev.to/antonreshetov/masscode-open-source-snippets-manager-is-out-to-v1-0-17e8</link>
      <guid>https://dev.to/antonreshetov/masscode-open-source-snippets-manager-is-out-to-v1-0-17e8</guid>
      <description>&lt;p&gt;Hi, there!&lt;/p&gt;

&lt;p&gt;I am excited that massCode is released to version 1.0.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CL1g4Yf---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1kuxx5km7z86pik1a4s3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CL1g4Yf---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1kuxx5km7z86pik1a4s3.png" alt="Alt Text" width="880" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The goal of creating this application was mostly my own growth as a developer. Also, I wanted this project to absorb the best of such applications already on the market (both free and paid). At the same time, I wanted this project to be an open source project. This is also my first experience in developing applications on Electron.&lt;/p&gt;

&lt;p&gt;I was inspired by applications like SnippetsLab, Quiver, Boostnote.&lt;br&gt;
SnippetsLab &amp;amp; Quiver are native MacOS applications. Boostnote is a cross platform application because it is written using Electron. Inside Boostnote, it uses React.&lt;/p&gt;

&lt;p&gt;I also took Electron as a basis to provide cross platforming. Since I'm a big fan of Vue, my app seems to be written in Vue.&lt;br&gt;
massCode allows you to organize snippets using multi-level folders as well as tags. Each snippet has fragments - tabs, which gives even greater level of organization.&lt;/p&gt;

&lt;p&gt;A snippets manager must not only provide organization of snippets but also have a good code editor. That's why under the hood of massCode there's Monaco editor. Monaco is a modern code editor from Microsoft which is used in one of the most popular editor VS Code. The editor provides IntelliSense, validation for TypeScript, JavaScript, CSS, LESS, SCSS, JSON, HTML. It's also added a super productive Emmet and Prettier to code formatter.&lt;/p&gt;

&lt;p&gt;I hope that my app will be useful to someone. &lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/antonreshetov"&gt;
        antonreshetov
      &lt;/a&gt; / &lt;a href="https://github.com/antonreshetov/massCode"&gt;
        massCode
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      This repository is outdated and no longer maintained. A new version of massCode is available! https://github.com/massCodeIO/massCode. A free and open source code snippets manager for developers.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;h1&gt;
massCode&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Project is no longer maintained, and may have bugs and security issues. Feel free to fork but no pull request or security alert will be answered.&lt;/p&gt;
&lt;p&gt;This is the repository for massCode v1. A new version of massCode is available in this &lt;a href="https://github.com/massCodeIO/massCode"&gt;repository&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A free and open source code snippets manager for developers.&lt;/p&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/antonreshetov/massCode./logo.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---YACc-iK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/antonreshetov/massCode./logo.png" width="80"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/380cc7748f9089a47f9aa6e4c7535263cebe3e3faa3295f2e388d1690aa02ad5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f616e746f6e7265736865746f762f6d617373436f64652f4349"&gt;&lt;img alt="GitHub Workflow Status" src="https://camo.githubusercontent.com/380cc7748f9089a47f9aa6e4c7535263cebe3e3faa3295f2e388d1690aa02ad5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f616e746f6e7265736865746f762f6d617373436f64652f4349"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/f72dea12d8e8086a04f6c23cd711384bd4e00acb83452bb17eebb1379df237b1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f616e746f6e7265736865746f762f6d617373436f6465"&gt;&lt;img alt="GitHub package.json version" src="https://camo.githubusercontent.com/f72dea12d8e8086a04f6c23cd711384bd4e00acb83452bb17eebb1379df237b1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f616e746f6e7265736865746f762f6d617373436f6465"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/72361db8c3d625a130b1f0e9568673a4c4b9a2544806968ec80cad8179747ffa/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f616e746f6e7265736865746f762f6d617373436f64652f746f74616c"&gt;&lt;img alt="GitHub All Releases" src="https://camo.githubusercontent.com/72361db8c3d625a130b1f0e9568673a4c4b9a2544806968ec80cad8179747ffa/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f616e746f6e7265736865746f762f6d617373436f64652f746f74616c"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/b10960d81b6151b212505bd143f41a47409e1d11c98c04f8dff75c335f7b6c02/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f616e746f6e7265736865746f762f6d617373436f6465"&gt;&lt;img alt="GitHub" src="https://camo.githubusercontent.com/b10960d81b6151b212505bd143f41a47409e1d11c98c04f8dff75c335f7b6c02/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f616e746f6e7265736865746f762f6d617373436f6465"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/antonreshetov/massCode./preview.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZzwmQM-c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/antonreshetov/massCode./preview.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;strong&gt;Built with Electron, Vue &amp;amp; Monaco editor.&lt;/strong&gt;
  &lt;br&gt;
  Inspired by applications like SnippetsLab and Quiver
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://masscode.io" rel="nofollow"&gt;Official Website&lt;/a&gt; | &lt;a href="https://masscode.io/documentation" rel="nofollow"&gt;Documentation&lt;/a&gt; | &lt;a href="https://masscode.io/releases" rel="nofollow"&gt;Change Log&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
Supporting&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;massCode&lt;/strong&gt; is open source project and completely free to use.&lt;/p&gt;

&lt;p&gt;However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support massCode development via the following methods:&lt;/p&gt;

&lt;div&gt;
&lt;p&gt;&lt;a href="https://opencollective.com/masscode" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/d3e3866ab583b6c3576244b60b6ad11d547d91f24d8e9877e03fa9c4a020e8d3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d6f70656e253230636f6c6c6563746976652d626c75652e7376673f7374796c653d706f706f7574266c6f676f3d646174613a696d6167652f7376672b786d6c3b6261736536342c5044393462577767646d567963326c76626a30694d5334774969426c626d4e765a476c755a7a3069565652474c546769507a343863335a6e494864705a48526f505349794e545a7765434967614756705a326830505349794e545a7765434967646d6c6c64304a76654430694d434177494449314e6941794e54596949485a6c636e4e7062323439496a45754d53496765473173626e4d39496d6830644841364c79393364336375647a4d7562334a6e4c7a49774d44417663335a6e4969423462577875637a703462476c75617a30696148523063446f764c336433647935334d793576636d63764d546b354f53393462476c756179496763484a6c63325679646d56426333426c5933525359585270627a3069654531705a466c4e61575169506a786e506a78775958526f49475139496b30794d446b754e7a59314d5451304c4445794f4334784e446b354e7a6b67517a49774f5334334e6a55784e4451734d5451304c6a45324d7a4d674d6a41304c6a67324e444d344d5377784e546b754e4467354f446b674d546b324c6a51354f4463304e7977784e7a49754e7a49314d446379494577794d6a6b754f5451314e6a63314c4449774e6934784e7a45354f546b67517a49304e6934324f4449784d4455734d54677a4c6a67314e6a63314f5341794e5455754e7a49354d7a41334c4445314e6934334d5455784e5449674d6a55314c6a63794f544d774e7977784d6a67754f4449784d54417949454d794e5455754e7a49354d7a41334c446b354c6a55314e6a6b354d5463674d6a51314c6a6b334e4459774d7977334d7934774e7a45774d6a4133494449794f5334794e5467354e4451734e5445754e4467314f4445794f43424d4d546b324c6a51344d7a45304c4467304c6a49784e4463354e4342444d6a41314c6a45794d6a55324d5377354e7934794d6a49304e6a677a494449774f5334334d7a59354d4463734d5445794c6a51344e7a6778494449774f5334334e446b314d7a63734d5449344c6a45774d7a45314e69424d4d6a41354c6a63324e5445304e4377784d6a67754d5451354f54633549466f6949475a706247773949694e434f45517a526a5169506a77766347463061443438634746306143426b50534a4e4d5449334c6a55784d7a51344e4377794d5441754d7a55304f44453249454d344d6934784e4459774f4463794c4449784d4334794e6a67354e5467674e4455754d7a67334e5441354e4377784e7a4d754e5445334d7a5534494451314c6a49354d7a417a4f544d734d5449344c6a45304f546b334f5342444e4455754d7a59784e7a55774d6977344d6934334e6a517a4d544d34494467794c6a45794e7a67304f4463734e4455754f5467304d6a5533494445794e7934314d544d304f4451734e4455754f446b344d7a45344e6942444d5451304c6a49304e4463314d6977304e5334344f54677a4d546732494445314f5334314e7a457a4e4449734e5441754e7a6b354d4467784e7941784e7a49754d5445354e7a6b794c4455354c6a45324e4463784e545167544449774e4334344e6a517a4f4445734d6a59754d7a67344f5445784e6942444d5467794c6a55304d7a59314c446b754e6a59324e6a55784d6a6b674d5455314c6a51774d7a51794f5377774c6a597a4d4467324d7a49354f4341784d6a63754e54457a4e4467304c4441754e6a4d324e446b304e44417a49454d314e7934784d6a4d314e444d334c4441754e6a4d324e446b304e44417a494441734e5463754e7a59774d444d344d5341774c4445794f4334784e446b354e7a6b67517a41734d546b344c6a55774f4463774e4341314e7934784d6a4d314e444d334c4449314e5334324e6a4d304e6a4d674d5449334c6a55784d7a51344e4377794e5455754e6a597a4e44597a49454d784e5455754e544d334d7a55794c4449314e5334334e4441344e7a59674d5467794c6a63334e546b344f5377794e4459754e4441344e5445674d6a41304c6a67324e444d344d5377794d6a6b754d5459784f446730494577784e7a45754e4445334e4455304c4445354e5334334d7a41314e6a5167517a45314f5334314e5455334d7a51734d6a41314c6a51344e5449324f4341784e4451754d6a59774d7a55354c4449784d43347a4e5451344d5459674d5449334c6a55784d7a51344e4377794d5441754d7a55304f444532494577784d6a63754e54457a4e4467304c4449784d43347a4e5451344d545967576949675a6d6c7362443069497a6447515552474d69492b504339775958526f506a77765a7a34384c334e325a7a343d" alt="Donate via Open Collective"&gt;&lt;/a&gt;
&lt;a href="https://www.patreon.com/antonreshetov" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/4671e9c1c59bbb42398bb4649fa8bc76089bfd1d0df638d579e09823331a8053/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d70617472656f6e2d6f72616e67652e7376673f7374796c653d706f706f7574266c6f676f3d70617472656f6e" alt="Donate via Patreon"&gt;&lt;/a&gt;
&lt;a href="https://paypal.me/antonreshetov" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/d82ced1c83f1757a33e33e6e4d1c1f93ee80cdab791d183b16eb04fa1985c71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d70617970616c2d626c75652e7376673f7374796c653d706f706f7574266c6f676f3d70617970616c" alt="Donate via PayPal"&gt;&lt;/a&gt;
&lt;a href="https://blockchain.com/btc/payment_request?address=1GnNU7UGrXyKx5Zd3uDfhCLL716AYBJwAJ&amp;amp;amount=0.00010450&amp;amp;message=Contribution%20to%20massCode" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/2331ccf424354dfafc7ee19eb1b99770e119e5b11451967dbe58502113964ae3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d626974636f696e2d6666393930302e7376673f7374796c653d706f706f7574266c6f676f3d626974636f696e266c6f676f436f6c6f723d434343" alt="Donate via Bitcoin"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h2&gt;
Overview&lt;/h2&gt;

&lt;p&gt;The goal of creating this application was mostly my own growth as a developer. Also, I wanted this project to absorb the best of such applications already on the market (both…&lt;/p&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/antonreshetov/massCode"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Best regards, Anton.&lt;/p&gt;

</description>
      <category>vue</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>massCode – An open source code snippets manager is out to v1</title>
      <dc:creator>Anton Reshetov</dc:creator>
      <pubDate>Mon, 20 Jan 2020 08:56:55 +0000</pubDate>
      <link>https://dev.to/antonreshetov/masscode-an-open-source-code-snippets-manager-is-out-to-v1-1l5h</link>
      <guid>https://dev.to/antonreshetov/masscode-an-open-source-code-snippets-manager-is-out-to-v1-1l5h</guid>
      <description>&lt;p&gt;Hi there,&lt;/p&gt;

&lt;p&gt;massCode developer here.&lt;/p&gt;

&lt;p&gt;I am excited to introduce my app.&lt;/p&gt;

&lt;p&gt;The goal of creating this application was mostly my own growth as a developer. Also, I wanted this project to absorb the best of such applications already on the market (both free and paid). At the same time, I wanted this project to be an open source project.&lt;/p&gt;

&lt;p&gt;The main feature is a modern editor - Monaco, which is used in VS Code. Among the advantages of the editor are rich IntelliSense, validation for TypeScript, JavaScript, CSS, LESS, SCSS, JSON, HTML. For more productivity, Emmet was added.&lt;/p&gt;

&lt;p&gt;The next feature is the tray assistant, which can be called with the help of hotkeys, thus having quick access to the snippets collection from any application.&lt;/p&gt;

&lt;p&gt;I'll be glad to hear your feedback!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://masscode.io/"&gt;https://masscode.io/&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/antonreshetov"&gt;
        antonreshetov
      &lt;/a&gt; / &lt;a href="https://github.com/antonreshetov/massCode"&gt;
        massCode
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      This repository is outdated and no longer maintained. A new version of massCode is available! https://github.com/massCodeIO/massCode. A free and open source code snippets manager for developers.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;h1&gt;
massCode&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Project is no longer maintained, and may have bugs and security issues. Feel free to fork but no pull request or security alert will be answered.&lt;/p&gt;
&lt;p&gt;This is the repository for massCode v1. A new version of massCode is available in this &lt;a href="https://github.com/massCodeIO/massCode"&gt;repository&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A free and open source code snippets manager for developers.&lt;/p&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/antonreshetov/massCode./logo.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---YACc-iK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/antonreshetov/massCode./logo.png" width="80"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/380cc7748f9089a47f9aa6e4c7535263cebe3e3faa3295f2e388d1690aa02ad5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f616e746f6e7265736865746f762f6d617373436f64652f4349"&gt;&lt;img alt="GitHub Workflow Status" src="https://camo.githubusercontent.com/380cc7748f9089a47f9aa6e4c7535263cebe3e3faa3295f2e388d1690aa02ad5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f616e746f6e7265736865746f762f6d617373436f64652f4349"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/f72dea12d8e8086a04f6c23cd711384bd4e00acb83452bb17eebb1379df237b1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f616e746f6e7265736865746f762f6d617373436f6465"&gt;&lt;img alt="GitHub package.json version" src="https://camo.githubusercontent.com/f72dea12d8e8086a04f6c23cd711384bd4e00acb83452bb17eebb1379df237b1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f616e746f6e7265736865746f762f6d617373436f6465"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/72361db8c3d625a130b1f0e9568673a4c4b9a2544806968ec80cad8179747ffa/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f616e746f6e7265736865746f762f6d617373436f64652f746f74616c"&gt;&lt;img alt="GitHub All Releases" src="https://camo.githubusercontent.com/72361db8c3d625a130b1f0e9568673a4c4b9a2544806968ec80cad8179747ffa/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f616e746f6e7265736865746f762f6d617373436f64652f746f74616c"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/b10960d81b6151b212505bd143f41a47409e1d11c98c04f8dff75c335f7b6c02/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f616e746f6e7265736865746f762f6d617373436f6465"&gt;&lt;img alt="GitHub" src="https://camo.githubusercontent.com/b10960d81b6151b212505bd143f41a47409e1d11c98c04f8dff75c335f7b6c02/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f616e746f6e7265736865746f762f6d617373436f6465"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/antonreshetov/massCode./preview.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZzwmQM-c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/antonreshetov/massCode./preview.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;strong&gt;Built with Electron, Vue &amp;amp; Monaco editor.&lt;/strong&gt;
  &lt;br&gt;
  Inspired by applications like SnippetsLab and Quiver
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://masscode.io" rel="nofollow"&gt;Official Website&lt;/a&gt; | &lt;a href="https://masscode.io/documentation" rel="nofollow"&gt;Documentation&lt;/a&gt; | &lt;a href="https://masscode.io/releases" rel="nofollow"&gt;Change Log&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
Supporting&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;massCode&lt;/strong&gt; is open source project and completely free to use.&lt;/p&gt;

&lt;p&gt;However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support massCode development via the following methods:&lt;/p&gt;

&lt;div&gt;
&lt;p&gt;&lt;a href="https://opencollective.com/masscode" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/d3e3866ab583b6c3576244b60b6ad11d547d91f24d8e9877e03fa9c4a020e8d3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d6f70656e253230636f6c6c6563746976652d626c75652e7376673f7374796c653d706f706f7574266c6f676f3d646174613a696d6167652f7376672b786d6c3b6261736536342c5044393462577767646d567963326c76626a30694d5334774969426c626d4e765a476c755a7a3069565652474c546769507a343863335a6e494864705a48526f505349794e545a7765434967614756705a326830505349794e545a7765434967646d6c6c64304a76654430694d434177494449314e6941794e54596949485a6c636e4e7062323439496a45754d53496765473173626e4d39496d6830644841364c79393364336375647a4d7562334a6e4c7a49774d44417663335a6e4969423462577875637a703462476c75617a30696148523063446f764c336433647935334d793576636d63764d546b354f53393462476c756179496763484a6c63325679646d56426333426c5933525359585270627a3069654531705a466c4e61575169506a786e506a78775958526f49475139496b30794d446b754e7a59314d5451304c4445794f4334784e446b354e7a6b67517a49774f5334334e6a55784e4451734d5451304c6a45324d7a4d674d6a41304c6a67324e444d344d5377784e546b754e4467354f446b674d546b324c6a51354f4463304e7977784e7a49754e7a49314d446379494577794d6a6b754f5451314e6a63314c4449774e6934784e7a45354f546b67517a49304e6934324f4449784d4455734d54677a4c6a67314e6a63314f5341794e5455754e7a49354d7a41334c4445314e6934334d5455784e5449674d6a55314c6a63794f544d774e7977784d6a67754f4449784d54417949454d794e5455754e7a49354d7a41334c446b354c6a55314e6a6b354d5463674d6a51314c6a6b334e4459774d7977334d7934774e7a45774d6a4133494449794f5334794e5467354e4451734e5445754e4467314f4445794f43424d4d546b324c6a51344d7a45304c4467304c6a49784e4463354e4342444d6a41314c6a45794d6a55324d5377354e7934794d6a49304e6a677a494449774f5334334d7a59354d4463734d5445794c6a51344e7a6778494449774f5334334e446b314d7a63734d5449344c6a45774d7a45314e69424d4d6a41354c6a63324e5445304e4377784d6a67754d5451354f54633549466f6949475a706247773949694e434f45517a526a5169506a77766347463061443438634746306143426b50534a4e4d5449334c6a55784d7a51344e4377794d5441754d7a55304f44453249454d344d6934784e4459774f4463794c4449784d4334794e6a67354e5467674e4455754d7a67334e5441354e4377784e7a4d754e5445334d7a5534494451314c6a49354d7a417a4f544d734d5449344c6a45304f546b334f5342444e4455754d7a59784e7a55774d6977344d6934334e6a517a4d544d34494467794c6a45794e7a67304f4463734e4455754f5467304d6a5533494445794e7934314d544d304f4451734e4455754f446b344d7a45344e6942444d5451304c6a49304e4463314d6977304e5334344f54677a4d546732494445314f5334314e7a457a4e4449734e5441754e7a6b354d4467784e7941784e7a49754d5445354e7a6b794c4455354c6a45324e4463784e545167544449774e4334344e6a517a4f4445734d6a59754d7a67344f5445784e6942444d5467794c6a55304d7a59314c446b754e6a59324e6a55784d6a6b674d5455314c6a51774d7a51794f5377774c6a597a4d4467324d7a49354f4341784d6a63754e54457a4e4467304c4441754e6a4d324e446b304e44417a49454d314e7934784d6a4d314e444d334c4441754e6a4d324e446b304e44417a494441734e5463754e7a59774d444d344d5341774c4445794f4334784e446b354e7a6b67517a41734d546b344c6a55774f4463774e4341314e7934784d6a4d314e444d334c4449314e5334324e6a4d304e6a4d674d5449334c6a55784d7a51344e4377794e5455754e6a597a4e44597a49454d784e5455754e544d334d7a55794c4449314e5334334e4441344e7a59674d5467794c6a63334e546b344f5377794e4459754e4441344e5445674d6a41304c6a67324e444d344d5377794d6a6b754d5459784f446730494577784e7a45754e4445334e4455304c4445354e5334334d7a41314e6a5167517a45314f5334314e5455334d7a51734d6a41314c6a51344e5449324f4341784e4451754d6a59774d7a55354c4449784d43347a4e5451344d5459674d5449334c6a55784d7a51344e4377794d5441754d7a55304f444532494577784d6a63754e54457a4e4467304c4449784d43347a4e5451344d545967576949675a6d6c7362443069497a6447515552474d69492b504339775958526f506a77765a7a34384c334e325a7a343d" alt="Donate via Open Collective"&gt;&lt;/a&gt;
&lt;a href="https://www.patreon.com/antonreshetov" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/4671e9c1c59bbb42398bb4649fa8bc76089bfd1d0df638d579e09823331a8053/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d70617472656f6e2d6f72616e67652e7376673f7374796c653d706f706f7574266c6f676f3d70617472656f6e" alt="Donate via Patreon"&gt;&lt;/a&gt;
&lt;a href="https://paypal.me/antonreshetov" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/d82ced1c83f1757a33e33e6e4d1c1f93ee80cdab791d183b16eb04fa1985c71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d70617970616c2d626c75652e7376673f7374796c653d706f706f7574266c6f676f3d70617970616c" alt="Donate via PayPal"&gt;&lt;/a&gt;
&lt;a href="https://blockchain.com/btc/payment_request?address=1GnNU7UGrXyKx5Zd3uDfhCLL716AYBJwAJ&amp;amp;amount=0.00010450&amp;amp;message=Contribution%20to%20massCode" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/2331ccf424354dfafc7ee19eb1b99770e119e5b11451967dbe58502113964ae3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d626974636f696e2d6666393930302e7376673f7374796c653d706f706f7574266c6f676f3d626974636f696e266c6f676f436f6c6f723d434343" alt="Donate via Bitcoin"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h2&gt;
Overview&lt;/h2&gt;

&lt;p&gt;The goal of creating this application was mostly my own growth as a developer. Also, I wanted this project to absorb the best of such applications already on the market (both…&lt;/p&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/antonreshetov/massCode"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>vue</category>
      <category>electron</category>
    </item>
    <item>
      <title>massCode just released to v0.3.4</title>
      <dc:creator>Anton Reshetov</dc:creator>
      <pubDate>Thu, 09 Jan 2020 13:07:06 +0000</pubDate>
      <link>https://dev.to/antonreshetov/masscode-just-released-to-v0-3-4-elb</link>
      <guid>https://dev.to/antonreshetov/masscode-just-released-to-v0-3-4-elb</guid>
      <description>&lt;p&gt;Hey folks, &lt;br&gt;
massCode just released to v0.3.4&lt;/p&gt;

&lt;p&gt;Available Mac, Linux and Windows versions.&lt;br&gt;
We are waiting for feedback and bugs ))).&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/antonreshetov"&gt;
        antonreshetov
      &lt;/a&gt; / &lt;a href="https://github.com/antonreshetov/massCode"&gt;
        massCode
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      This repository is outdated and no longer maintained. A new version of massCode is available! https://github.com/massCodeIO/massCode. A free and open source code snippets manager for developers.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;h1&gt;
massCode&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Project is no longer maintained, and may have bugs and security issues. Feel free to fork but no pull request or security alert will be answered.&lt;/p&gt;
&lt;p&gt;This is the repository for massCode v1. A new version of massCode is available in this &lt;a href="https://github.com/massCodeIO/massCode"&gt;repository&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A free and open source code snippets manager for developers.&lt;/p&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/antonreshetov/massCode./logo.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---YACc-iK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/antonreshetov/massCode./logo.png" width="80"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/380cc7748f9089a47f9aa6e4c7535263cebe3e3faa3295f2e388d1690aa02ad5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f616e746f6e7265736865746f762f6d617373436f64652f4349"&gt;&lt;img alt="GitHub Workflow Status" src="https://camo.githubusercontent.com/380cc7748f9089a47f9aa6e4c7535263cebe3e3faa3295f2e388d1690aa02ad5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f616e746f6e7265736865746f762f6d617373436f64652f4349"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/f72dea12d8e8086a04f6c23cd711384bd4e00acb83452bb17eebb1379df237b1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f616e746f6e7265736865746f762f6d617373436f6465"&gt;&lt;img alt="GitHub package.json version" src="https://camo.githubusercontent.com/f72dea12d8e8086a04f6c23cd711384bd4e00acb83452bb17eebb1379df237b1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f7061636b6167652d6a736f6e2f762f616e746f6e7265736865746f762f6d617373436f6465"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/72361db8c3d625a130b1f0e9568673a4c4b9a2544806968ec80cad8179747ffa/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f616e746f6e7265736865746f762f6d617373436f64652f746f74616c"&gt;&lt;img alt="GitHub All Releases" src="https://camo.githubusercontent.com/72361db8c3d625a130b1f0e9568673a4c4b9a2544806968ec80cad8179747ffa/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f616e746f6e7265736865746f762f6d617373436f64652f746f74616c"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/b10960d81b6151b212505bd143f41a47409e1d11c98c04f8dff75c335f7b6c02/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f616e746f6e7265736865746f762f6d617373436f6465"&gt;&lt;img alt="GitHub" src="https://camo.githubusercontent.com/b10960d81b6151b212505bd143f41a47409e1d11c98c04f8dff75c335f7b6c02/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f616e746f6e7265736865746f762f6d617373436f6465"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/antonreshetov/massCode./preview.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZzwmQM-c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/antonreshetov/massCode./preview.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;strong&gt;Built with Electron, Vue &amp;amp; Monaco editor.&lt;/strong&gt;
  &lt;br&gt;
  Inspired by applications like SnippetsLab and Quiver
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://masscode.io" rel="nofollow"&gt;Official Website&lt;/a&gt; | &lt;a href="https://masscode.io/documentation" rel="nofollow"&gt;Documentation&lt;/a&gt; | &lt;a href="https://masscode.io/releases" rel="nofollow"&gt;Change Log&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
Supporting&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;massCode&lt;/strong&gt; is open source project and completely free to use.&lt;/p&gt;

&lt;p&gt;However, the amount of effort needed to maintain and develop new features for the project is not sustainable without proper financial backing. You can support massCode development via the following methods:&lt;/p&gt;

&lt;div&gt;
&lt;p&gt;&lt;a href="https://opencollective.com/masscode" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/d3e3866ab583b6c3576244b60b6ad11d547d91f24d8e9877e03fa9c4a020e8d3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d6f70656e253230636f6c6c6563746976652d626c75652e7376673f7374796c653d706f706f7574266c6f676f3d646174613a696d6167652f7376672b786d6c3b6261736536342c5044393462577767646d567963326c76626a30694d5334774969426c626d4e765a476c755a7a3069565652474c546769507a343863335a6e494864705a48526f505349794e545a7765434967614756705a326830505349794e545a7765434967646d6c6c64304a76654430694d434177494449314e6941794e54596949485a6c636e4e7062323439496a45754d53496765473173626e4d39496d6830644841364c79393364336375647a4d7562334a6e4c7a49774d44417663335a6e4969423462577875637a703462476c75617a30696148523063446f764c336433647935334d793576636d63764d546b354f53393462476c756179496763484a6c63325679646d56426333426c5933525359585270627a3069654531705a466c4e61575169506a786e506a78775958526f49475139496b30794d446b754e7a59314d5451304c4445794f4334784e446b354e7a6b67517a49774f5334334e6a55784e4451734d5451304c6a45324d7a4d674d6a41304c6a67324e444d344d5377784e546b754e4467354f446b674d546b324c6a51354f4463304e7977784e7a49754e7a49314d446379494577794d6a6b754f5451314e6a63314c4449774e6934784e7a45354f546b67517a49304e6934324f4449784d4455734d54677a4c6a67314e6a63314f5341794e5455754e7a49354d7a41334c4445314e6934334d5455784e5449674d6a55314c6a63794f544d774e7977784d6a67754f4449784d54417949454d794e5455754e7a49354d7a41334c446b354c6a55314e6a6b354d5463674d6a51314c6a6b334e4459774d7977334d7934774e7a45774d6a4133494449794f5334794e5467354e4451734e5445754e4467314f4445794f43424d4d546b324c6a51344d7a45304c4467304c6a49784e4463354e4342444d6a41314c6a45794d6a55324d5377354e7934794d6a49304e6a677a494449774f5334334d7a59354d4463734d5445794c6a51344e7a6778494449774f5334334e446b314d7a63734d5449344c6a45774d7a45314e69424d4d6a41354c6a63324e5445304e4377784d6a67754d5451354f54633549466f6949475a706247773949694e434f45517a526a5169506a77766347463061443438634746306143426b50534a4e4d5449334c6a55784d7a51344e4377794d5441754d7a55304f44453249454d344d6934784e4459774f4463794c4449784d4334794e6a67354e5467674e4455754d7a67334e5441354e4377784e7a4d754e5445334d7a5534494451314c6a49354d7a417a4f544d734d5449344c6a45304f546b334f5342444e4455754d7a59784e7a55774d6977344d6934334e6a517a4d544d34494467794c6a45794e7a67304f4463734e4455754f5467304d6a5533494445794e7934314d544d304f4451734e4455754f446b344d7a45344e6942444d5451304c6a49304e4463314d6977304e5334344f54677a4d546732494445314f5334314e7a457a4e4449734e5441754e7a6b354d4467784e7941784e7a49754d5445354e7a6b794c4455354c6a45324e4463784e545167544449774e4334344e6a517a4f4445734d6a59754d7a67344f5445784e6942444d5467794c6a55304d7a59314c446b754e6a59324e6a55784d6a6b674d5455314c6a51774d7a51794f5377774c6a597a4d4467324d7a49354f4341784d6a63754e54457a4e4467304c4441754e6a4d324e446b304e44417a49454d314e7934784d6a4d314e444d334c4441754e6a4d324e446b304e44417a494441734e5463754e7a59774d444d344d5341774c4445794f4334784e446b354e7a6b67517a41734d546b344c6a55774f4463774e4341314e7934784d6a4d314e444d334c4449314e5334324e6a4d304e6a4d674d5449334c6a55784d7a51344e4377794e5455754e6a597a4e44597a49454d784e5455754e544d334d7a55794c4449314e5334334e4441344e7a59674d5467794c6a63334e546b344f5377794e4459754e4441344e5445674d6a41304c6a67324e444d344d5377794d6a6b754d5459784f446730494577784e7a45754e4445334e4455304c4445354e5334334d7a41314e6a5167517a45314f5334314e5455334d7a51734d6a41314c6a51344e5449324f4341784e4451754d6a59774d7a55354c4449784d43347a4e5451344d5459674d5449334c6a55784d7a51344e4377794d5441754d7a55304f444532494577784d6a63754e54457a4e4467304c4449784d43347a4e5451344d545967576949675a6d6c7362443069497a6447515552474d69492b504339775958526f506a77765a7a34384c334e325a7a343d" alt="Donate via Open Collective"&gt;&lt;/a&gt;
&lt;a href="https://www.patreon.com/antonreshetov" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/4671e9c1c59bbb42398bb4649fa8bc76089bfd1d0df638d579e09823331a8053/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d70617472656f6e2d6f72616e67652e7376673f7374796c653d706f706f7574266c6f676f3d70617472656f6e" alt="Donate via Patreon"&gt;&lt;/a&gt;
&lt;a href="https://paypal.me/antonreshetov" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/d82ced1c83f1757a33e33e6e4d1c1f93ee80cdab791d183b16eb04fa1985c71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d70617970616c2d626c75652e7376673f7374796c653d706f706f7574266c6f676f3d70617970616c" alt="Donate via PayPal"&gt;&lt;/a&gt;
&lt;a href="https://blockchain.com/btc/payment_request?address=1GnNU7UGrXyKx5Zd3uDfhCLL716AYBJwAJ&amp;amp;amount=0.00010450&amp;amp;message=Contribution%20to%20massCode" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/2331ccf424354dfafc7ee19eb1b99770e119e5b11451967dbe58502113964ae3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f6e6174652d626974636f696e2d6666393930302e7376673f7374796c653d706f706f7574266c6f676f3d626974636f696e266c6f676f436f6c6f723d434343" alt="Donate via Bitcoin"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

&lt;h2&gt;
Overview&lt;/h2&gt;

&lt;p&gt;The goal of creating this application was mostly my own growth as a developer. Also, I wanted this project to absorb the best of such applications already on the market (both…&lt;/p&gt;&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/antonreshetov/massCode"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>vue</category>
      <category>electron</category>
    </item>
  </channel>
</rss>
