The Results of Launching my SaaS

แชร์
ฝัง
  • เผยแพร่เมื่อ 4 ก.พ. 2025

ความคิดเห็น • 119

  • @conaticus
    @conaticus ปีที่แล้ว +95

    This is super interesting, thanks for sharing Josh!

  • @Luxcium
    @Luxcium ปีที่แล้ว +18

    I have no words to express how proud I am and I can’t describe how happy I am each time I watch your videos… You have such an incredible energy and I can’t imagine you are not at one million yet… You deserve more than that but I hope you get there in the next one and a half year from now 🎉🎉🎉🎉

  • @Zimeftw
    @Zimeftw 11 หลายเดือนก่อน

    I just want to say. I'll be posting my SaaS soon. But because of Josh and his ability to clearly express information I have gotten a solid understanding of how I can go about building my application. To you Josh, when my product is done. I hope you can view it. It will be things I have learned throughout your videos combined into my own application.

  • @KyTechInc
    @KyTechInc ปีที่แล้ว +3

    Love this video. As someone who came to learn coding from the traditional IT/ Infra side of things I have always wondered what all these apps would look like under production loads. No many people make videos showing this side of things and I would argue that building the app is less then half the battle. Hosting, support, shipping new features and keeping costs down is not something that takes care of its self. Great work Josh!

  • @DocRamadani
    @DocRamadani ปีที่แล้ว

    Hey Josh,
    so gut zu sehen, dass Du Deine initiale Idee zu einem echten SaaS-Produkt entwicklen konntest. Ich drücke Dir ganz fest die Daumen. Ich habe mich neulich schon gewundert, woher Du diese coolen Code-Animationen in den Videos hergezaubert hast. Jetzt weiß ich es 😃. Danke, dass Du Deine bisherige Reise schon bis hier her mit uns geteilt hast. Große Klasse! Ich freue ich total für Dich (und uns). Marco😃

  • @2an_sound
    @2an_sound ปีที่แล้ว

    This is a beautiful little app, Josh!

  • @ridhwanio
    @ridhwanio ปีที่แล้ว

    Congrats on launching your SaaS, simple idea but very nicely executed!

  • @kaidollarsense
    @kaidollarsense ปีที่แล้ว +38

    Could you share more about the video rendering engine you wrote to process the slides? Is it by using a headless browser, taking screenshots and passing it to ffmpeg?

    • @joshtriedcoding
      @joshtriedcoding  ปีที่แล้ว +36

      That was the idea at first, but turns out the chrome protocol does not support stable fps. TDLR: You have to acknowledge each frame, which takes time, and you dont get the next frame until you've acked the previous one, leading to a lot of frames dropping and a pretty unstable 60fps video. So I rewrote the entire thing using canvas, which lets you specify exactly how many FPS you want spread over how many seconds, and am really happy with that implementation

    • @deezydoezeet
      @deezydoezeet ปีที่แล้ว +1

      ​@@joshtriedcoding Like a Boss!!

    • @ajinkyabodke_
      @ajinkyabodke_ ปีที่แล้ว

      @@joshtriedcoding Have you tried Remotion?

    • @kamalzairig
      @kamalzairig ปีที่แล้ว

      @@joshtriedcoding that's fantastic. Did you consider using Remotion for video rendering ?

  • @Liz3_
    @Liz3_ ปีที่แล้ว +4

    Overall a good thing, cool idea. although a few comments:
    - The site seams unusable in firefox, you can't create a new line in firefox it just bugs out, chromium works.
    - I think the tab character should insert a tab rather then to execute the default behaviour which is focusing the next element(if the editor is focused).
    - Maybe add highlighting for other languages: Java, c, c++, python, c#, php, kotlin, go, rust, sql and ruby are ofc not all but maybe a good start.

    • @chiroyce
      @chiroyce ปีที่แล้ว +1

      Yep, also it would be nice to have an actual text editor like Monaco so its easier to make changes, the current editor is quite buggy and also unusable on Firefox. Monaco would automatically handle all the other languages too!

  • @the_py_guy
    @the_py_guy ปีที่แล้ว +1

    I'm just impressed by Josh ,your approach is different no BS direct to topic . I wish you all the best pal.

  • @k9habidu
    @k9habidu 11 หลายเดือนก่อน

    You can see object count and object size in S3 -> Metric tab. It updates daily, and will not cost you unlike listing all the files.

  • @starlord7526
    @starlord7526 ปีที่แล้ว +5

    we need a tutorial for this, this project is far more interesting than any of your previous projects, which were heavily invested on frontend only

  • @noahpittman
    @noahpittman ปีที่แล้ว

    Amazing josh. The product is excellent & the outcome is great!!!

  • @Joselson14
    @Joselson14 ปีที่แล้ว

    This is a very interesting project. I am interested in understanding how you planned and coded this. Might not even be this specific project but something that is similar

  • @CodingAfterThirty
    @CodingAfterThirty ปีที่แล้ว

    Great video as always.

  • @CordialSoft
    @CordialSoft ปีที่แล้ว

    This is amazing tool
    Especially in presentation
    I will use for that

  • @dinhero21
    @dinhero21 11 หลายเดือนก่อน +1

    Any reasons why you didn't make it client-side-only? You can render into a canvas (or just use html2canvas) and then stitch all frames together for a movie. No need for a backend (outside of static file serving which is free in many platforms)

  • @gounane
    @gounane ปีที่แล้ว

    4:22 You can locate the aggregate number of objects/content within a Bucket on the Metrics tab

  • @wabsastudios
    @wabsastudios 3 หลายเดือนก่อน +1

    josh, that website is not working

  • @freeyoutube216
    @freeyoutube216 11 หลายเดือนก่อน

    Thanks for sharing, do the express and nextjs backend have access to the same database?

  • @danielsotojaimes3602
    @danielsotojaimes3602 ปีที่แล้ว +5

    I have a question about the pulling mechanism for the download. Are we actually having some meta data about how the progress is doing or we’re just faking the download time until we see the success and then we finish the progress bar.
    Great Video very informative 🎉

    • @MaxHDeveloping
      @MaxHDeveloping ปีที่แล้ว

      I am pretty sure the progress bar is the progress of the video being rendered in the background

    • @macawls
      @macawls ปีที่แล้ว +1

      Yeah that also got me thinking

  • @Dreez
    @Dreez ปีที่แล้ว

    Hi Josh,
    love the software and how you built it from scratch. Congrats!
    I would be super interested on how you process this video using libx264 while using that less cpu power.
    Could you make a video on it or can you share any resources regarding that topic?
    Would be super interested on how you did that.

  • @VitorVelosoSA
    @VitorVelosoSA ปีที่แล้ว

    Super nice content! Thanks for sharing

  • @samben08
    @samben08 ปีที่แล้ว +2

    Awesome video 🎉
    Why are you base64 encoding the text content? Doesn't it take more space and memory?
    Did you try aws lambda instead of railway for video export?

  • @CoderBeast
    @CoderBeast ปีที่แล้ว

    if your goal is to keep it free forever, consider porting it as a WASM app! that way you won't have to incur server charges as you process stuff

  • @alii4334
    @alii4334 ปีที่แล้ว +1

    Can You make a seprate video about polling and how it works?

  • @ardianhotii
    @ardianhotii ปีที่แล้ว

    I would like you to make a tutorial how to mask the url that you mentioned that you could make it cuz I always wondered is that possible somehow. Also very nice project 💪

  • @itsanishjain
    @itsanishjain ปีที่แล้ว +1

    Curios if you have express app why not just websockets or some other service like Pusher instead of pooling?

    • @nazarshvets7501
      @nazarshvets7501 ปีที่แล้ว +1

      Probably because of timeframe, as setting websockets require more time. Also its is not clear, to which backend you should connect, as you probably don't want to expose express backend (it depends)

  • @CallousCoder
    @CallousCoder ปีที่แล้ว

    Silly question why not render this using OpenCV in C++ and stream the contents over a web socket? That would eliminate the use of a database and ffmpeg to stream and OpenCV to make the animation key frames is very fast and pretty low memory.

  • @peternicholas4750
    @peternicholas4750 ปีที่แล้ว

    Super interesting video. How much did nextjs side of things cost you? Was that hosted on vercel?

  • @TheTeamScorpia
    @TheTeamScorpia ปีที่แล้ว

    What about caching content where all slides are the same? I guess some people would just click generate to test so you end up with the same files many times in S3 and additional processing time.

  • @specy_
    @specy_ ปีที่แล้ว

    Instead of Polling for status you could use SSE to track the progress and make an event based system

  • @xDiggie
    @xDiggie ปีที่แล้ว +1

    Hi newbie here :) . Just curious about the server in railway which needs processing power for intensive tasks. When multiple users is requesting for something intensive, does the server get locked up?
    I've had a problem with intensive tasks before where when I try to test with 2 or more instances (users using the app) are performing the intensive task at the same time. It seems to lock out the others and process them sequentially whereas it should be simultaneous and asynchronous. How do you make this work. I've seen queues/worker threads, but have you used that for this? Just want any insights about how servers serve intensive tasks for multiple users in general. the do's and dont's. I'd really appreciate any feedback. Thanks so much!

    • @wooggie9685
      @wooggie9685 11 หลายเดือนก่อน

      Microservices B)

  • @alexismichellerodriguezlar630
    @alexismichellerodriguezlar630 ปีที่แล้ว

    bro, nice work, one question, where are they from, or where did you consume the graphics you used in your project?

  • @AlexLane-s7t
    @AlexLane-s7t ปีที่แล้ว

    Hey hey josh! you can deploy go with a .go filename in your api routes!

  • @zhanezar
    @zhanezar 11 หลายเดือนก่อน

    is the polling just a SetInterval() function ?

  • @codewithmirko1651
    @codewithmirko1651 ปีที่แล้ว

    Kinda confused about the express part.. why we need it? To convert the video or just to rate limit/poll the video when its done generatig?

    • @nazarshvets7501
      @nazarshvets7501 ปีที่แล้ว

      To split heavy rendering load on service, so Nextjs instance would not have to degrade performance for end user

  • @marcoio8742
    @marcoio8742 ปีที่แล้ว

    Questions: What happens if I launch the export but reload the page? You'll have a zombie file on S3. What if I try and export n times the same thing, I haven't made any change or anything. Now you'll have n exports on S3 that are identical. What if the backend hangs up? For some 5xx or something, will the frontend just keep loading? Lastly, and this is not a question but a suggestion for this Saas which I really like btw, I think you should give the chance not only to export but also to save locally (in the app) so that I can go back and download as many times as I want and you save a lot S3 space and processing on Railway. Keep it up

    • @nazarshvets7501
      @nazarshvets7501 ปีที่แล้ว

      You are not considering timeframe for this project (2 weeks, one dev)
      Of course there are plenty of room to impove, such as profiles with saved animations, reusing rended slides(i don't know how yet, but it seems like it will cut costs/time-to-render), paywall and so on

  • @JasonLayton
    @JasonLayton ปีที่แล้ว

    Why didn't you let railway handle your database as well? Any reason you chose S3?

  • @marouanelhaddad8632
    @marouanelhaddad8632 ปีที่แล้ว +2

    I wonder if it's profitable in the beginning? You said AWS threw you off the free tier, and that would suck it if it is not profitable (thinking as a first time SAAS creator)

    • @joshtriedcoding
      @joshtriedcoding  ปีที่แล้ว +3

      It's definitely not profitable, there is no way to even pay for this if you wanted to lol. Just wanted to build something cool, can always think about monetizing later

    • @Dino-Kupinic
      @Dino-Kupinic ปีที่แล้ว

      @@joshtriedcoding you could setup Ko-Fi donations. Or maybe show an ad while processing or something

  • @hafiz_n
    @hafiz_n ปีที่แล้ว

    How we can contribute to this josh?

  • @20081428s
    @20081428s ปีที่แล้ว

    Wondering what's the point of express backend, can't these logic be handled in nextjs backend?

  • @itay7036
    @itay7036 ปีที่แล้ว

    Why not using Cloudflare R2 instead of S3? Better pricing for sure

  • @web3developer961
    @web3developer961 ปีที่แล้ว

    The link is mission in description, can't find anywhere

  • @Jackson_Zheng
    @Jackson_Zheng ปีที่แล้ว

    Wow. This is insane. I would've predicted the traffic to crash the site or something.

  • @wfl-junior
    @wfl-junior ปีที่แล้ว

    0:48 did you try streaming instead of polling?

  • @tranmani
    @tranmani ปีที่แล้ว

    my question is how do you monetize this? or is this just a project for learning?

  • @Svish_
    @Svish_ ปีที่แล้ว

    Did you host the NextJS frontend on Railway as well, or did you host that on Vercel or somewhere else?

  • @lkardashev
    @lkardashev ปีที่แล้ว +1

    Let the man cook🔥🧑‍🍳

  • @vipinsanthosh2230
    @vipinsanthosh2230 ปีที่แล้ว

    So the polling for progress don't really have a way of knowing what percentage of progress has been made right?

  • @TS-po3fg
    @TS-po3fg ปีที่แล้ว

    Are you going to make this open-source at any point? I'd be very interested in learning what you used to make the videos

  • @qodesmith520
    @qodesmith520 ปีที่แล้ว

    Where is the url for the SaaS site?

  • @igorkudryk2199
    @igorkudryk2199 ปีที่แล้ว

    Hey, I need it. Where is the link?

  • @Pyrospower
    @Pyrospower ปีที่แล้ว

    4:29 wait, there's a free tier for S3? I thought that service didn't have one

    • @flexdash
      @flexdash ปีที่แล้ว

      5 gb storage for 12 months. After 12 months gotta pay.

    • @Pyrospower
      @Pyrospower ปีที่แล้ว

      i see, ty!

  • @rtorcato
    @rtorcato ปีที่แล้ว +3

    instead of using your server to check for file done you could use s3 sdk to check if the file exists and poll that.

    • @nazarshvets7501
      @nazarshvets7501 ปีที่แล้ว +1

      But how would u know which file to check against?

  • @worldhack.1201
    @worldhack.1201 ปีที่แล้ว

    Can you write this SaaS application?

  • @LA-fb9bf
    @LA-fb9bf ปีที่แล้ว +1

    I think it is better to rent a vServer. It’s much cheaper than AWS

  • @StephenRayner
    @StephenRayner ปีที่แล้ว +1

    How is this a SaaS? It’s just an app right?

    • @StephenRayner
      @StephenRayner ปีที่แล้ว

      Live the app though 🎉

    • @StephenRayner
      @StephenRayner ปีที่แล้ว

      Add gpt, make it output the steps to code something in this format. So it can give you code slides and explanations. Your welcome 😘

    • @StephenRayner
      @StephenRayner ปีที่แล้ว

      Oh wasm do video in browser.

    • @StephenRayner
      @StephenRayner ปีที่แล้ว

      To get the count of files use AWS CLI

    • @StephenRayner
      @StephenRayner ปีที่แล้ว

      Gzip video on s3 at least?

  • @jimshtepa5423
    @jimshtepa5423 ปีที่แล้ว

    dude i remember you had only 4-5k subs, when did you manage to grow this channel so massive?

  • @codesoak
    @codesoak 11 หลายเดือนก่อน

    😃😃

  • @o_glethorpe
    @o_glethorpe ปีที่แล้ว

    Thank your for sharing.
    This seams like it could be at least 30% simpler if you removed nextjs from the equation. Like create just a spa that access the express backend (change to go later). It would be cheaper and easy to maintain. Or if you dont want a spa, create a route inside the express server.

  • @VincenzoCassaro
    @VincenzoCassaro ปีที่แล้ว +1

    How did you setup your s3? is it public? How you make the user download the content? signed urls?

  • @takudzwamututa7608
    @takudzwamututa7608 ปีที่แล้ว

    Imagine, working along side your mentor😁..i want to join the team🙂

  • @MeatCatCheesyBlaster
    @MeatCatCheesyBlaster ปีที่แล้ว

    you forgot to drop the url

  • @cynicusme9007
    @cynicusme9007 ปีที่แล้ว

    Great developer, terrible marketer. What is the name of the app and what is the link to the app?

  • @bangbokir5739
    @bangbokir5739 ปีที่แล้ว

    Good job bro

  • @merlin6962
    @merlin6962 ปีที่แล้ว

    Couldn't you do all the processing client side? Might be a bit slower, but probably not even a lot

  • @thedevkk
    @thedevkk ปีที่แล้ว +4

    Make it open-source ✨🔥

  • @TechXSoftware
    @TechXSoftware ปีที่แล้ว

    This isn't a SaaS, coz there is no subscription model.
    This is a Web app.

  • @pequod4557
    @pequod4557 11 หลายเดือนก่อน

    Your approach produces a lot of junk data in your redis data store. At least set some TTL expiration periods to some of your keys.

  • @jaydeep-p
    @jaydeep-p ปีที่แล้ว +1

    Who is the target demographic for this service?

  • @ryonnl
    @ryonnl 11 หลายเดือนก่อน

    I broke it, it doesn't allow the 💩 emoji, great product tho!

  • @anasouardini
    @anasouardini 11 หลายเดือนก่อน

    re-do it in WASM, 0 servers needed 😀

  • @arvidd
    @arvidd 11 หลายเดือนก่อน

    Why can’t people just run this program on their own machines?

  • @StarlingCodes
    @StarlingCodes ปีที่แล้ว +2

    Jai Shree Ram

  • @itzJingran
    @itzJingran ปีที่แล้ว

    you are so cute

  • @racerguyf1
    @racerguyf1 ปีที่แล้ว

    hi

  • @eptic-c
    @eptic-c ปีที่แล้ว +32

    Nice and cool idea, but such a waste of money, 20 something dollars for a low traffic website is not acceptable, i don't understand why people don't self host and instead use a dozen of services paying a lot of money for something that in reality is very cheap and not even having the performance they should have because of all the latency for the communication between data centers.

    • @mayoo6545
      @mayoo6545 ปีที่แล้ว +7

      because these days developers don't even think about costs or budgets, they simply spend hundreds of thousands, if not millions of dollars on services for absolutely no reason.

    • @sylum3
      @sylum3 11 หลายเดือนก่อน +2

      You mean buying an on-prem server?

    • @eptic-c
      @eptic-c 11 หลายเดือนก่อน

      @@sylum3 No, you can do just fine with a VPS or with a dedicated instance based on need or scale. Any of this ways are cheaper. Let's say you want to support US WEST + EAST + Europe, look at Hetzner prices as an example. If you use something like AWS EC2 you are getting ripped off. Those prices are crazy because they want you to pay in advance over 1-2 years, it's a price for big companies even for small servers.

    • @marco4570
      @marco4570 11 หลายเดือนก่อน

      Still don't understand if it's 20$/month or whatever.
      I pay 2€ for my vServer at Ionos monthly and host a Postgre DB, dotnet web api, blazor frontend alltogether with an nginx reverse proxy. The 1 vCore is mostly at 5%... The 500mb RAM are more of a problem at 20-30%.

    • @khaledsanny4817
      @khaledsanny4817 11 หลายเดือนก่อน +6

      First of all, its not a waste of money... now you are kinda right but we do that to ship faster and avoid taking bad design decisions for our infra. Also you can scale and change your infra whenever you want if you are smart with your choices. You have to validate your idea quickly that why we do that and afterwards if it evolves we can scale. Never overengineer when you're experimenting. NEVER.

  • @ApexCoders
    @ApexCoders ปีที่แล้ว

    1st Comment ❤

  • @limpep
    @limpep ปีที่แล้ว +1

    fastify is better then express