Sustainability Privacy Code Feedback
potted plant

Sustainability

Slimvoice is a free service. The business model is that when you accept a card payment via Stripe, I will collect a 1% application fee. It's as plain and simple as that.

Slimvoice was started as a side project on a shoestring budget and has remained that way since 2014. There are no major expenses to keeping it running or employees to pay. When you connect your Stripe account and accept card payments, you are helping keep Slimvoice up and running. If you enjoy using Slimvoice, tell a friend; the more people using it to accept payments, the more improvements I can make.

Privacy

Honesty about what's being done with my information seems to be almost non-existant on the Internet these days. It has been said that "if you're not paying for it, you are the product." Unlike Facebook and Google, I am not collecting your data with the intent to use it for anything other than the purpose of generating your invoices. There are absolutely no third-party trackers or analytics services in use on Slimvoice. The previous version of Slimvoice had "Sign in with Google" which has been removed.

I'll also never willingly give over your data to anyone else for any reason. For full transparency about this, please note:

  • Slimvoice is software running on the Internet, and while I do my best to keep it secure, getting hacked is not outside the realm of possibility.
  • Slimvoice runs on servers at Digital Ocean, so someone there or someone who infiltrates their networks could have access to your data.
  • Slimvoice sends email with Mailgun, so someone there or someone who receives emails from Slimvoice will have access to any information placed into an email.
  • Slimvoice integrates with Stripe when you connect your account, so when you send and receive payments Stripe will use both parties' information to complete the transaction.
  • Your password is hashed with bcrypt.

As a victim of many leaks, feeling like my personal information is being held hostage boils my blood, so for Slimvoice I have implemented a way to completely delete your account. If you decide that Slimvoice doesn't work for you, simply go to Settings and click "Delete Account." I won't make you contact support, go through a waiting period, or just "deactivate" your account: everything will be 100% wiped and it will be as if you were never here.

I really wish I didn't have to write a Terms & Privacy page. I made it as human-friendly as possible. You won't find anything malicious in there.

Code

I consider myself a craftsman, so the quality of the code is just as important to me as the design, interaction, and function of the app. The first version of Slimvoice was written in Angular with a Node.js backend. The second version was a rewrite of the frontend in React. Both of those were crap, and I'm sincerely sorry for any bugs you may have encountered.

With this version of Slimvoice, I wanted to prove that it was possible to deliver an amazing user experience while bucking the trend of JavaScript-heavy bullshit web apps. This version is written in Go and is completely server-side rendered, using HTML <form>s to communicate with the server. The plain old SQL database handles most of the business logic and relationship enforcements that would be otherwise hacked together with an ORM or written by hand. I use tons of CSS tricks to handle interactions without reloading the page. Use of JavaScript is kept to an absolute minimum; I used it only when something couldn't be accomplished with CSS alone.

None of my code is minified or obfuscated, and everything still loads quickly. This old-style web app is probably not a good subject for a blog post about modern web tomfoolery, but I hope that you find it to be fast, correct, and a pleasure to use.

If you are interested in improving your own software, reading Nikita Prokopov's writing is a good place to start.

Additionally, Slimvoice wouldn't have been possible without the following excellent open source software:

Feedback

Slimvoice is created and operated by one person. If you have feedback or would like to suggest a feature, please submit it here. I can't respond to every request, but I do read everyone's feedback.

—Matt