Jason Leow

Indie hacker, solopreneur | Creating a diverse portfolio of products + services.

Added favicon, og:image, and all meta tags to

Tried Netlify prerendering but didn't seem to help much with Lighthouse scores...anyone had a similar/different experience?
Jason Leow Author

@knight can't wait! πŸ’ͺ

0 Likes
Knight Tan

joined and going to start in 1st Jan :P

0 Likes

Signed up for Freshping web monitoring (thanks @yuyu for the recommend!) to ping my Heroku API app to prevent it from idling after 30min. Ended up monitoring both frontend and backend since they give 50 checks for FREE!πŸ˜―πŸ€©πŸ€‘ Status page looks schweet too: https://statuspage.freshping.io/49631-golifelogcom

Thanks @yuyu for introducing this to me too #goodvibes

0 Likes
Jason Leow Author

@surjithctly yep am aware. 1000 dyno hours per month should be enough for 1 app running 24/7/31, yes? 😊

0 Likes

Updated DNS from Namecheap to Netlify, now just have to sit on my hands for 24-48h πŸ˜‘

Records updated and propagated in record time, in 1-2h!!! Netlify is niiiice

Added Netlify build plugins - auto sitemap generation and publishing, and Algolia search - really enjoying how easy it is to add extra functionality to my site with just one click!

🌩 Deployment day! Deployed my latest Strapi backend api to Heroku, and all-new Nuxt frontend to Netlify

Lessons learned:
-- don't wait till the end before you do your first deployment. Super stressful and harder to debug.
-- set Nuxt config `target: static` and `generate fallback true` if routing is buggy
-- create and set up your personal access token for Git push to Github
-- things that take time to propagate or approve: DNS records, txn email, any 3rd party services. Set them up waaay beforehand!
--

Re-produced (ie copy-paste) in whole the awesome Netlify 404 page to Codepen, to learn how they did it, especially the hover parallax effect. Breathe...🧘🏻 https://codepen.io/jasonleow/pen/LYROQEJ

🀬🀬🀬 Who else was screwed over for a few hours by Github's recent change to switch from username+password to personal access token for auth (when using Git to remote push in terminal)? So many error messages that led to nowhere and lots and lots of pointless searching dammit...only to discover a quiet little email from Github saying it's been depreciated

Solution (for Macs):
-- Create a personal access token in your Github account
-- Open Keychain Access in your Mac, find github item in the table, change the password to the PAT
-- go back to VSCode or terminal to remote push and voila!

Ref:
https://docs.github.com/en/free-pro-team@latest/github/getting-started-with-github/set-up-git#next-steps-authenticating-with-github-from-git

https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token

https://docs.github.com/en/free-pro-team@latest/github/using-git/updating-credentials-from-the-macos-keychain

Followed tutorial by @uf4no to set up Sendinblue in Strapi app, but now stuck and unable to test if it worked as 1) txt records from Sendinblue needs 24-48h to propagate, 2) Sendinblue needs to activate SMTP account (and it's Christmas week!)! 😩😩😩

🧐 Completed basic design+layout of hero and features sections

Looks functional...but boring. Must enhance the design later.

Registered for Sendinblue email provider for all my transactional emails

🀸 FINALLY decided and bought the domain name golifelog.com for

Enhanced user privacy by removing unessential user data from API payloads. Thanks to @GalloDaSballo for this awesome YT tute https://youtu.be/yMobhhCLl_I

πŸ˜ͺ Mind-boggling research on payment gateways along the nocode to low-code to full-code spectrum

Trying to find one that's no to low-code in terms of implementation, easy and fast to deploy, and easy for customers to self-help... Payhere seems like a good middle ground!

-- 2.5% TillyPay for nocode payment with redirect urls
-- 1% Paythen nocode payment with redirect urls
-- 2% Payhere nocode-lowcode-dev payment with npm, APIs, webhooks
-- $15/m + 1.9% Servicebot for lowcode payment embdeddables like plan picker, checkout form, invoice portal
-- $?? Paddle with inline checkout embed
-- Pico $0/m until pass 500 contacts, then $5
-- Stripe client only checkout, least code needed compared to Stripe Checkout (server) and Stripe Elements
Knight Tan

ping me on telegram or twitter if wanna talk !

0 Likes
Knight Tan

let me know, I can get you the GetPayHQ account to use Stripe Checkout directly

0 Likes

More brainstorming with friend on the name... Lifelogger (instead of Lifelog) seems like the best compromise/corrective alignment, considering trade-offs with SEO ranking, domain availability and price, and accuracy to the app's purposes

Added tags to _slug but realised I need a new model for tags/categories rather than a string entry tied to a post

πŸŽ‰πŸŽ‰πŸŽ‰ And we have confetti! Installed the canvas-confetti package, deployed it on the /write page upon publishing, and left a easter egg πŸ₯š in the site for people to go crazy with confetti

This took most of my day! Choosing between packages, seeing which ones were the easiest to implement, trying 3-4 different ones before reverting back to the first one which I previously tried before on Codepen using skypack packages. Then digging deep into learning how to use the functions, setting options. Had to experiment and trial and error a lot to see where best to place the function - nested within the Publish method, or directly in the HTML elements (of which there were some possible places - the publish btn using @click, the success message using a watcher/listener on v-if="success"? SOOO many different ways, so many rabbit holes to tumble into! 😡😩

😩😑Prettier / Eslint - help or hinder? Fixed Prettier errors where it breaks up my inline styles into multiline to prettify it but somehow deactivates the styles upon refreshing the page. How very odd! And frustrating!

I initially loved it for helping me write consistent, well-laid out code based on good conventions/best practices. But past few days had been just spending too much time fixing what I think are minor/lame prettier errors that doesn't add much value to the app. The worse was today when I had to fix inline styles disappearing when I refresh the page! It hindered instead of helping, and created more bugs! I didn't even know what went wrong initially and went on a wild goose chase. 🀬WTF. Had to learn this vital piece of commenting - `prettier-ignore` and `eslint-disable`. Must. Remember. This.πŸ‘‡πŸ»

No idea on your setup but prettier can fix most of the issues on its own by running prettier --write. You can take this one step further by using git hooks and having it run automatically when you commit changes πŸ‘οΈ

0 Likes
Jason Leow Author

@nblackburn yeah it was fine mostly, but this issue I had was quite concerning. Introduced a bug instead… not sure why

0 Likes

Switched 3 out of 4 of the `@mouseover + v-if` hover of the invisible toolbar on the /write page to Bulma-based dropdowns, because writers might need to copy the markdown tips, the writing prompts and definitely need the dropdown menu to persist for the checkboxes and publish button.

Took half a day to nest all the code bit by bit in dropdown classes, and then having to re-adjust the spacing because dropdown menus come with different default spaces!😩

πŸ‘‡πŸ»There, I think I'm finally done with making my own little text editor. It's HELL LOT OF WORK! 😡

πŸ“Modified textarea inputs to be autosizing

Had to add event listeners to the scroll height to automatically increase the style height as lines of text gets typed. Usually we can use `contenteditable` attribute easily for this, but that doesn't work for textarea inputs, and I HAVE to use textarea as I need to use the v-model directive (which only can be used on input kind of fields). So had to dig deeper into how to create my own auto-resizing textarea using Vue! Crazy how this isn't more easily accessible, and that we have to write Javascript functions for it! (It gets even harder if the auto-resizing textarea is a component, because v-model is not directly available on the component. So you have to add more listeners and emit events to do that! I only need the functions on the /write page, so it doesn't make sense to make components for it. A case when it's easier to just type the damn code into the page, than to use the component approach and make everything more complex than it has to.)

πŸ’ͺ YAASS! Added the last and final piece of UI to the invisible toolbar on the /write page - the Publish menu, with checkboxes for selecting goals, and a publish button that only becomes active when it hits the word minimum

Learned how transfer code from one section to another, bit by bit instead of copy-pasting an entire spaghetti block of code over. Move one tiny function over, then another, then another, like building Lego. Much easier - an important learning point! Other simple but useful things learned - how to have a submit button outside of the form element (hint: use id on the form and link the button using form="formID"), and using the dropdown class for Bulma 😯

Brainstormed and narrowed down my name/domain choices

-- getlifelog.me 🀩
-- getlifelog.com 🀩🀩
-- lifelogger.me 🀩
-- life-log.me 🀩🀩🀩

πŸ™ŒπŸŽ‰ FINALLY! Completed the styling tweaks to the whole web app. Took a lot longer than exepcted, and it's always the little things, like move things 1rem here, 1px there that takes the longest!