Building my first SaaS in years

/ #Misc


It's been a really long time since I've built, and actually finished something.

It might be a bit too early to start saying that I'm going to finish this, but I want to say it in public so that I can be held a little bit accountable.

The last few years, I have started a lot of projects, but never really finished them. I have finished a few small projects, and then just quit the day I released them. I think a little bit of the problem has been that I have not built something I wanted to use my self.

What am I building this time?

This time, I'm going to build something I want to use my self. I'm really into day trading. I know that there are many good alternatives for tracking your trades, journaling, etc. But since I'm quite the geek, I want to build everything myself. And that's my I'm currently working on a MVP for a new SaaS.

I'm not expecting a lot from the initial version, and neither should you. I just want to build out the basic functionality, and then keep iterating. Hopefully, I get some users that can provide me with some feedback.

The tech stack

I have built everything so far in my career in Django (more or less at least). This time, I will be focusing on Ruby on Rails. I'm learning this in a new job, and I want to become better at it as well. And I'm getting better at it by using it a lot.

What's coming next?

I hope this sounds like an interesting journey to follow along. If you're in the same boat, then leave a comment below and we'll catch up :-)

I'm going to document this journey here, and on my X (https://x.com/codewithstein). Feel free to follow me there for daily updates.

Comments

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

-1 OR 2+328-328-1=0+0+0+1 --

EFSArCBy | Jul 02, 26 07:20

-1 OR 2+476-476-1=0+0+0+1

EFSArCBy | Jul 02, 26 07:20

-1' OR 2+337-337-1=0+0+0+1 --

EFSArCBy | Jul 02, 26 07:20

-1' OR 2+602-602-1=0+0+0+1 or '9ehAuWC4'='

EFSArCBy | Jul 02, 26 07:20

-1" OR 2+601-601-1=0+0+0+1 --

EFSArCBy | Jul 02, 26 07:20

555*if(now()=sysdate(),sleep(15),0)

EFSArCBy | Jul 02, 26 07:20

5550'XOR(555*if(now()=sysdate(),sleep(15),0))XOR'Z

EFSArCBy | Jul 02, 26 07:20

5550"XOR(555*if(now()=sysdate(),sleep(15),0))XOR"Z

EFSArCBy | Jul 02, 26 07:20

(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/

EFSArCBy | Jul 02, 26 07:20

555-1; waitfor delay '0:0:15' --

EFSArCBy | Jul 02, 26 07:20

555-1); waitfor delay '0:0:15' --

EFSArCBy | Jul 02, 26 07:20

555-1 waitfor delay '0:0:15' --

EFSArCBy | Jul 02, 26 07:20

555F6kSVC0t'; waitfor delay '0:0:15' --

EFSArCBy | Jul 02, 26 07:20

555-1 OR 86=(SELECT 86 FROM PG_SLEEP(15))--

EFSArCBy | Jul 02, 26 07:20

555-1) OR 794=(SELECT 794 FROM PG_SLEEP(15))--

EFSArCBy | Jul 02, 26 07:20

555-1)) OR 586=(SELECT 586 FROM PG_SLEEP(15))--

EFSArCBy | Jul 02, 26 07:20

555Pe5zGJys' OR 132=(SELECT 132 FROM PG_SLEEP(15))--

EFSArCBy | Jul 02, 26 07:20

5559ym7EHW2') OR 555=(SELECT 555 FROM PG_SLEEP(15))--

EFSArCBy | Jul 02, 26 07:20

555KxSBYc1B')) OR 720=(SELECT 720 FROM PG_SLEEP(15))--

EFSArCBy | Jul 02, 26 07:20

555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)

EFSArCBy | Jul 02, 26 07:20

555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555'"

EFSArCBy | Jul 02, 26 07:20

@@06XmA

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

-1 OR 2+951-951-1=0+0+0+1 -- | Jul 02, 26 07:20

555

-1 OR 2+741-741-1=0+0+0+1 | Jul 02, 26 07:20

555

-1' OR 2+45-45-1=0+0+0+1 -- | Jul 02, 26 07:20

555

-1' OR 2+105-105-1=0+0+0+1 or 'oGpLt5K5'=' | Jul 02, 26 07:20

555

-1" OR 2+787-787-1=0+0+0+1 -- | Jul 02, 26 07:20

555

if(now()=sysdate(),sleep(15),0) | Jul 02, 26 07:20

555

EFSArCBy0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z | Jul 02, 26 07:20

555

EFSArCBy0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z | Jul 02, 26 07:20

555

EFSArCBy-1 waitfor delay '0:0:15' -- | Jul 02, 26 07:20

555

EFSArCByxCxMvhvL'; waitfor delay '0:0:15' -- | Jul 02, 26 07:20

555

EFSArCByJamtd4n0' OR 964=(SELECT 964 FROM PG_SLEEP(15))-- | Jul 02, 26 07:20

555

EFSArCBywmGbb42Y') OR 443=(SELECT 443 FROM PG_SLEEP(15))-- | Jul 02, 26 07:20

555

EFSArCByYoQVERyK')) OR 157=(SELECT 157 FROM PG_SLEEP(15))-- | Jul 02, 26 07:20

555

EFSArCBy'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||' | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy'" | Jul 02, 26 07:20

555

@@h7Qx6 | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:20

555

EFSArCBy | Jul 02, 26 07:21

555

EFSArCBy | Jul 02, 26 07:21

555

EFSArCBy | Jul 02, 26 07:21

555

EFSArCBy | Jul 02, 26 07:21

555

EFSArCBy | Jul 02, 26 07:21

555

EFSArCBy | Jul 02, 26 07:21

555

EFSArCBy | Jul 02, 26 07:21

555

EFSArCBy | Jul 02, 26 07:21

555

EFSArCBy | Jul 02, 26 07:21

555

EFSArCBy | Jul 02, 26 07:21

555

EFSArCBy | Jul 02, 26 07:21

555

EFSArCBy | Jul 02, 26 07:21

555

EFSArCBy | Jul 02, 26 07:21

555

EFSArCBy | Jul 02, 26 07:21

555

EFSArCBy | Jul 20, 26 08:28

555

EFSArCBy | Jul 20, 26 08:28

555

EFSArCBy | Jul 20, 26 08:28

555

EFSArCBy | Jul 20, 26 08:28

-1 OR 2+29-29-1=0+0+0+1 --

EFSArCBy | Jul 20, 26 08:28

-1 OR 2+737-737-1=0+0+0+1

EFSArCBy | Jul 20, 26 08:28

-1' OR 2+898-898-1=0+0+0+1 --

EFSArCBy | Jul 20, 26 08:28

-1' OR 2+807-807-1=0+0+0+1 or '1l4Myeo4'='

EFSArCBy | Jul 20, 26 08:28

-1" OR 2+590-590-1=0+0+0+1 --

EFSArCBy | Jul 20, 26 08:28

555*if(now()=sysdate(),sleep(15),0)

EFSArCBy | Jul 20, 26 08:28

5550'XOR(555*if(now()=sysdate(),sleep(15),0))XOR'Z

EFSArCBy | Jul 20, 26 08:28

5550"XOR(555*if(now()=sysdate(),sleep(15),0))XOR"Z

EFSArCBy | Jul 20, 26 08:28

(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/

EFSArCBy | Jul 20, 26 08:28

555-1; waitfor delay '0:0:15' --

EFSArCBy | Jul 20, 26 08:28

555-1); waitfor delay '0:0:15' --

EFSArCBy | Jul 20, 26 08:28

555-1 waitfor delay '0:0:15' --

EFSArCBy | Jul 20, 26 08:28

555BTBOW9oi'; waitfor delay '0:0:15' --

EFSArCBy | Jul 20, 26 08:28

555-1 OR 319=(SELECT 319 FROM PG_SLEEP(15))--

EFSArCBy | Jul 20, 26 08:28

555-1) OR 808=(SELECT 808 FROM PG_SLEEP(15))--

EFSArCBy | Jul 20, 26 08:28

555-1)) OR 425=(SELECT 425 FROM PG_SLEEP(15))--

EFSArCBy | Jul 20, 26 08:28

555KXecQV8o' OR 965=(SELECT 965 FROM PG_SLEEP(15))--

EFSArCBy | Jul 20, 26 08:28

555rHIXA6iK') OR 111=(SELECT 111 FROM PG_SLEEP(15))--

EFSArCBy | Jul 20, 26 08:28

555QQrjFWLn')) OR 320=(SELECT 320 FROM PG_SLEEP(15))--

EFSArCBy | Jul 20, 26 08:28

555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)

EFSArCBy | Jul 20, 26 08:28

555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

EFSArCBy | Jul 20, 26 08:28

555

EFSArCBy | Jul 20, 26 08:28

555'"

EFSArCBy | Jul 20, 26 08:28

@@E1ETU

EFSArCBy | Jul 20, 26 08:28

555

EFSArCBy | Jul 20, 26 08:28

555

EFSArCBy | Jul 20, 26 08:28

555

EFSArCBy | Jul 20, 26 08:28

555

EFSArCBy | Jul 20, 26 08:28

555

EFSArCBy | Jul 20, 26 08:28

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

-1 OR 2+860-860-1=0+0+0+1 -- | Jul 20, 26 08:29

555

-1 OR 2+200-200-1=0+0+0+1 | Jul 20, 26 08:29

555

-1' OR 2+53-53-1=0+0+0+1 -- | Jul 20, 26 08:29

555

-1' OR 2+403-403-1=0+0+0+1 or 't5iRnSTJ'=' | Jul 20, 26 08:29

555

-1" OR 2+184-184-1=0+0+0+1 -- | Jul 20, 26 08:29

555

if(now()=sysdate(),sleep(15),0) | Jul 20, 26 08:29

555

EFSArCBy0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z | Jul 20, 26 08:29

555

EFSArCBy0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z | Jul 20, 26 08:29

555

EFSArCBy-1 waitfor delay '0:0:15' -- | Jul 20, 26 08:29

555

EFSArCBym8j8VkP4'; waitfor delay '0:0:15' -- | Jul 20, 26 08:29

555

EFSArCBy9QYETuNL' OR 865=(SELECT 865 FROM PG_SLEEP(15))-- | Jul 20, 26 08:29

555

EFSArCByimGUJhbz') OR 520=(SELECT 520 FROM PG_SLEEP(15))-- | Jul 20, 26 08:29

555

EFSArCByZsBJfcqP')) OR 504=(SELECT 504 FROM PG_SLEEP(15))-- | Jul 20, 26 08:29

555

EFSArCBy'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||' | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy'" | Jul 20, 26 08:29

555

@@A3C5b | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 20, 26 08:29

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

-1 OR 2+982-982-1=0+0+0+1 --

EFSArCBy | Jul 23, 26 11:17

-1 OR 2+38-38-1=0+0+0+1

EFSArCBy | Jul 23, 26 11:17

-1' OR 2+197-197-1=0+0+0+1 --

EFSArCBy | Jul 23, 26 11:17

-1' OR 2+205-205-1=0+0+0+1 or 'XXXCKVSq'='

EFSArCBy | Jul 23, 26 11:17

-1" OR 2+746-746-1=0+0+0+1 --

EFSArCBy | Jul 23, 26 11:17

555*if(now()=sysdate(),sleep(15),0)

EFSArCBy | Jul 23, 26 11:17

5550'XOR(555*if(now()=sysdate(),sleep(15),0))XOR'Z

EFSArCBy | Jul 23, 26 11:17

5550"XOR(555*if(now()=sysdate(),sleep(15),0))XOR"Z

EFSArCBy | Jul 23, 26 11:17

(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/

EFSArCBy | Jul 23, 26 11:17

555-1; waitfor delay '0:0:15' --

EFSArCBy | Jul 23, 26 11:17

555-1); waitfor delay '0:0:15' --

EFSArCBy | Jul 23, 26 11:17

555-1 waitfor delay '0:0:15' --

EFSArCBy | Jul 23, 26 11:17

5559zy0ez5X'; waitfor delay '0:0:15' --

EFSArCBy | Jul 23, 26 11:17

555-1 OR 726=(SELECT 726 FROM PG_SLEEP(15))--

EFSArCBy | Jul 23, 26 11:17

555-1) OR 115=(SELECT 115 FROM PG_SLEEP(15))--

EFSArCBy | Jul 23, 26 11:17

555-1)) OR 239=(SELECT 239 FROM PG_SLEEP(15))--

EFSArCBy | Jul 23, 26 11:17

555IKPrI9Vm' OR 697=(SELECT 697 FROM PG_SLEEP(15))--

EFSArCBy | Jul 23, 26 11:17

5552DMjXMG1') OR 680=(SELECT 680 FROM PG_SLEEP(15))--

EFSArCBy | Jul 23, 26 11:17

555hQrYGEqH')) OR 109=(SELECT 109 FROM PG_SLEEP(15))--

EFSArCBy | Jul 23, 26 11:17

555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)

EFSArCBy | Jul 23, 26 11:17

555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555'"

EFSArCBy | Jul 23, 26 11:17

@@YuQzR

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

EFSArCBy | Jul 23, 26 11:17

555

-1 OR 2+381-381-1=0+0+0+1 -- | Jul 23, 26 11:17

555

-1 OR 2+90-90-1=0+0+0+1 | Jul 23, 26 11:17

555

-1' OR 2+55-55-1=0+0+0+1 -- | Jul 23, 26 11:17

555

-1' OR 2+871-871-1=0+0+0+1 or 'REftl9a5'=' | Jul 23, 26 11:18

555

-1" OR 2+300-300-1=0+0+0+1 -- | Jul 23, 26 11:18

555

if(now()=sysdate(),sleep(15),0) | Jul 23, 26 11:18

555

EFSArCBy0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z | Jul 23, 26 11:18

555

EFSArCBy0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z | Jul 23, 26 11:18

555

EFSArCBy-1 waitfor delay '0:0:15' -- | Jul 23, 26 11:18

555

EFSArCByJGYCNDho'; waitfor delay '0:0:15' -- | Jul 23, 26 11:18

555

EFSArCBybf521ezl' OR 325=(SELECT 325 FROM PG_SLEEP(15))-- | Jul 23, 26 11:18

555

EFSArCBy6d8LNjzA') OR 116=(SELECT 116 FROM PG_SLEEP(15))-- | Jul 23, 26 11:18

555

EFSArCByI547doEP')) OR 135=(SELECT 135 FROM PG_SLEEP(15))-- | Jul 23, 26 11:18

555

EFSArCBy'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||' | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy'" | Jul 23, 26 11:18

555

@@dC6ce | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

EFSArCBy | Jul 23, 26 11:18

555

Add comment

Info

Please log in to comment!

Newsletter

Subscribe to my weekly newsletter. One time per week I will send you a short summary of the tutorials I have posted in the past week.