TaskRatchet Development Updates

Update

API

  • Make PUT requests to /me return the updated version of me. This was causing account changes to appear to revert to their previous values on save.
  • Fix Stripe payments integration.
  • Add a warning to morning emails if Stripe payment method isn’t set up properly, mess up the warning wording, fix it with help from @shanaqui.
  • Switch to using a proper template file for morning emails.
  • Add ability to run API locally for development.

Web

  • Convert account page to a functional component.
  • Make account page use toast messages instead of plain text messages.
  • Make app use API running locally when in development mode.

More to come soon!

2 Likes

Update

And a big deploy! This deploy switches TaskRatchet away from AirTable and to Google Cloud Firestore, which also ended up requiring quite a few other changes, too. Please email me at nathan@taskratchet.com if you find a bug or run into an issue with the new changes.

API

  • Build Firestore wrapper
  • Build Firestore one-time migration
  • Connect with production and development Firestore database instances
  • Add support for Stripe test mode
  • Consolidate Stripe hooks into one endpoint for easier event forwarding
  • Add Stripe event forwarding to development environment for hook testing
  • Add basic logging functionality for development
  • Switch from unix time to naive datetime for task due dates
  • Switch from datetime to unix time for session expiration
  • Switch from spaces to underscores for database field names
  • Build migration runner cron job
  • Add support for alphanumeric entity IDs
  • Improve subscription payment handling
  • Set Stripe redirect URLs dynamically based on environment

Web

  • Replace datetime picker
  • Log out automatically on 403 forbidden API response
  • Default to localhost for API requests when in development mode
  • Convert some more class components to functions + hooks
  • Support the few parts of the API schema changes that bleed through the interface
2 Likes

Update

API

  • Make login email case-insensitive
  • Limit new task pledges to $2500 or less
  • Fix bug with how morning emails were being scheduled
  • Fix bug with due date validation
  • Catch and handle Stripe refund error
  • Auto-deploy from CircleCI for master branch
  • Cache dependencies in CircleCI for faster build time
  • Ensure that charges aren’t even authorized until 24 hours past the task’s due date

Web

  • Add $2500 max value to stakes field
2 Likes

Update

API

  • Work on improving exception handling

Web

  • Don’t show “due” label if task completed
  • Don’t reset due date and stakes fields when new task created
  • Fix task sorting (this may still be an issue…)
2 Likes

Update

API

  • Fix a bug where part of the system was trying to capture contested charges even though the rest of the system was preventing it from going through (thankfully!)
  • Add task id to failed capture admin email notifications
  • Log user events to Amplitude
  • Log Amplitude exceptions

Web

  • Add privacy policy and terms of service agreement checkbox to registration page
1 Like

Update

API

  • Add Beeminder integration support

Web

  • Add staging server support
  • Fix SameSite setting in cookies
  • Add Beeminder integration configuration to account page

Hi, Nathan - can you explain how the Beeminder intergration works? Do I set up a Beeminder goal to complete tasks in Taskratchet before the deadline that I set?

Yeah @narthur I never got an email announcing the integration :frowning: :slightly_frowning_face: :frowning_face: :sob: :crying_cat_face: :cry: - is there documentation somewhere?

Sure! The integration is super simple right now. All it lets you do is beemind adding tasks to TaskRatchet. So basically it will post a 1 with a summary of the task to a goal you choose whenever you create a new TaskRatchet task.

To set it up, click “Enable Beeminder integration” in your account page. That will take you to Beeminder where you’ll have the opportunity to grant TaskRatchet access to your Beeminder data. Once you’ve granted it, you should be redirected back, at which point you can specify the name of the goal you want TaskRatchet to post to when you create a task.

I have lots of ideas for how to make this integration better (including some that @zedmango suggested!) but that’s all we’ve got for now. :slight_smile:

I don’t remember committing to announcing every new feature by email. :wink: But you’re absolutely right about getting some documentation together. It’s on my list!

2 Likes

Ok, quick and dirty, we have a docs site! It’s hosted on GitHub, so please feel free to add issues and/or make pull requests.

http://docs.taskratchet.com/

2 Likes

Made a pull request! This is fun!

1 Like

Nice!! Approved and merged. :smile:

I’m leaving on a trip and won’t be back until June 19. If you run into any issues or for whatever reason want to reach out, please email me at nathan@taskratchet.com and I’ll try to get back with you as soon as I return from my trip!

Remember, replying to charge emails puts a pause on them, so reply to it as soon as you receive it if you think the charge shouldn’t go through.

1 Like

I’ve been back for a while, and working hard on the product! Better update coming soon…

1 Like

API

  • Catch charge authorization failures
  • Set chargeable flag to false on user when charge authorization fails
  • Modify stripe hook to handle missing user
  • Catch morning email failures
  • Validate registration requests
  • Fix email-already-taken check when updating /me

Web

  • Improve login form error handling
  • Improve login form loading state
  • Extract input component
  • Add testing
  • Run tests and security audit in CI
1 Like

Hi. Just learned about TaskRatchet and signed up, but…I’m unclear about how it works with Beeminder. Do I create a Beeminder goal? And does TaskRatchet rely exclusively on me saying that I completed my task?

3 Likes

Hi, @astrotsarina. Great questions!

You can use TaskRatchet without connecting it to Beeminder at all. Just add a task, and TaskRatchet will charge you if you don’t complete it by the deadline you set. The Beeminder integration allows you to have TaskRatchet post to a Beeminder goal when you create a new task.

That’s right, TaskRatchet relies on you to tell it when you’ve completed a task. We don’t double-check that you’re telling the truth. If you’re looking for something that does that, Boss as a Service is probably closer to what you’re looking for. Unfortunately I don’t think they’re currently accepting new users.

Please let me know if you have any more questions, issues, or feedback! You can also email me at nathan@taskratchet.com

2 Likes

I was curious to how Taskratchet compares as a service to a website like www.gofuckingdoit.com (sorry for the foul language) I know it has the Beeminder integration and that’s really neat. But just wondering.

2 Likes

Interesting! I just made a goal using GFDI and here are my notes:

  • TaskRatchet lets you set a pledge of any dollar increment from $1 to $2,500, whereas GFDI only allows pledges of $25, $50, $100, $250, and $1000.
  • TaskRatchet tasks are on your honor, while GFDI requires that you pull a “supervisor” into the deal to ensure you’re playing fair.
  • TaskRatchet lets you mark a task complete any time between now and the deadline. GFDI waits until the deadline and then emails your supervisor to ask them if you completed the task or not.
  • TaskRatchet lets you login to see a list of all your outstanding tasks, as well as a history of all your previous tasks. GFDI doesn’t appear to have login or account functionality.

GFDI looks to be a way to set up weasel-proof commitments for large one-time milestones.

In contrast, TaskRatchet is a todo app with built-in commitment contracts on your honor that works great for tasks of any size.

Hope that helps!

4 Likes

https://taskratchet.com/ - “launch app” is demanding to register and login before linking app store.

Not sure how many people were lost there, I certainly stopped (in such case I always want to see reviews before registration).

2 Likes