Started a new project! This time AI enabled browser extension. Though I already launched two projects using the #OpenAI API (plus one that was abandoned), this is my first experience creating an extension.

To make it more intriguing, I have decided to use #JavaScript for #backend, which is also a new for me. Previously I have developed backends only in #PHP, #Java and #Python.

#buildinpublic

✅ First backend version deployed
✅ Prototype extension developed for both Chrome and Firefox
✅ Did 81 push-ups

Time to conduct extensive tests, i.e., eat my own dog food.

#buildinpublic

✅ Came up with the extension icon.
✅ Decided to use #MongoDB (another new technology for me).
✅ Implemented rudimentary user management.

It seems I have stepped into the ME.N of the #MERN tech stack.

#buildinpublic

You are right, those corners were too sharp. Here is the smoothed version. #uxui #buildinpublic

Spent a day optimizing 45 lines of #JavaScript code that were supposed to work in all circumstances, only to find out moments ago that all those lines can be replaced with:

document.execCommand("insertText", false, newText).

The catch: that call is deprecated.

#buildinpublic

✅ Deployed the database on #MongoDB #Atlas and connected it to #GoogleAppEngine!
✅ Added cron jobs for user management.

Using the MongoDB Atlas free tier (512 MB) should be more than enough!

#buildinpublic #indiehackers

✅ Implemented keyboard shortcuts for easier access to the context menu! They are Alt+Shift+P and Alt+Shift+I, time to start memorizing! 🙂

Next up: finalizing the landing page and integrating with a payment processor. Stay tuned!

#buildinpublic #indiehackers

Wrapping up the landing page and diving deeper into #UXUI! 🎨 Excited to share my chosen color palette. Check out this fantastic palette generator: https://coolors.co

#BuildInPublic #IndieHackers

Coolors - The super fast color palettes generator!

Generate or browse beautiful color combinations for your designs.

Coolors.co

Updated palette = updated product icon.

#buildinpublic #indiehackers

And here is the price table! Major second typescale with WCAG AAA contrasts. My favorite contrast checker: https://webaim.org/resources/contrastchecker/

#uxui #buildinpublic #indiehackers

WebAIM: Contrast Checker

While testing on Windows and using Chrome instead of Chromium, I discovered that the shortcut Alt+Shift+I is reserved. It's a pity since the letters P and I correspond to the first letters of my extension's actions.

Additionally, I found that the extension is not working properly in the Reddit markdown editor (it works fine in the default editor) and in Blogger.

#buildinpublic #indiedev

Check out the video below! The browser extension shows error messages in a modal dialog over the web page. With #CSS loaded remotely, I might also use remote #HTML and #JavaScript to fully customize the dialog—no need for users to update the installed extension!

#buildinpublic

#UXUI Tip 1: When designing modals, always add all possible options to close them: click outside, click on the '×' button in the top right corner, click on a 'Close' button, and use the 'Esc' key as well.

#UXUI Tip 2: Restore the previous focus once your modal is closed.

As I am finishing the product, I have just found out that a competitor launched an extension with quite similar functionality two days ago. They have a total of five users. My competitor's low user numbers are depressing me.

#buildinpublic #indiedev

✅ Added semantic elements to HTML.
✅ Added essential documents: Terms of Service, Privacy Notice, and Refund Policy.
✅ Connected the custom domain to Google App Engine.
✅ Submitted the domain to the e-commerce provider for approval.

#buildinpublic #indiedev

🚀 Update: Payment integration took too long, so I launched the extension without it for now—focusing on feedback first!

✅ Social media accounts linked
✅ Google Analytics added
✅ UI fixes for modal dialog
✅ Minified & separated dev/prod code
✅ Firefox extension submitted & verified

Next step? Finding beta users! 🦊 Only #Firefox for now—starting small, growing gradually.

#buildinpublic #indiedev

Total time dedicated to the project before the first launch: 95.5 hours. This is slightly more than two workweeks, which is not bad considering that I have chosen to work with new technologies.

#buildinpublic #indiedev

Just onboarded the first beta users—then discovered a Firefox trait: it kills extension background scripts after a while. This meant some requests were missing the unique user ID. Fixed the bug, patched both server & extension, and v0.1.2 is live! 🚀 #buildinpublic

Software is like a piece of art—it's never truly finished. 🎨 This is the fourth revision of the browser extension icon. The extension is currently in closed beta and ready for your testing. Are you a Chrome or Firefox user? Let me know!

#buildinpublic #indiedev

The latest #extension update was approved yesterday by the #Chrome Web Store. It took them 3 to 4 days, while #Mozilla approved the #Firefox version in a few hours. In any case, the extension is no longer in 'closed beta', it now has the official status of 'unlisted' on Chrome and 'experimental' on Firefox. However, anyone with the direct link can install it.

Chrome link:
https://chromewebstore.google.com/detail/revise-text/bmndhppkilpcmcfpeamdlggjffnoaeje

Firefox link:
https://addons.mozilla.org/en-US/firefox/addon/revise-text/

#buildinpublic #indiedev

Revise text - Chrome Web Store

Write with confidence. Instantly proofread and enhance grammar, spelling and style in any language. Free, fast and easy to use.

Today I made adjustments to the landing page and, as a result, gained my first experience with the Handlebars templating engine. The web page can be found at the following address:
https://revisetext.com

#buildinpublic #indiedev

Revise text browser extension

Decided to track competitors, as well as relevant keywords across social networks. One has shown significant related activity, but it doesn't support RSS feeds. So I've built a scraper along with an RSS feed generator.

Explored new technologies in the process: #Cloudflare workers in #JavaScript and their KV (key-value) datastore.

RSS alerts are functioning smoothly, though my dedicated social network account is marked as probable spam. Hope this is just a temporary issue due to its newness.