The journey of starting my startup
Tags: startup, webdev, beginners
Published: 2024-02-01 09:02:10

Did you ever find that things like LinkTree & Beacons lock some basic features behind paywalls? Things they had access to share, but decided to make it a "premium" feature to milk money from it's users? That's where the startup I'm founding "[Doras](https://doras.to)" is aiming to hit. We've developed a whole new ecosystem of tools for the dreamers and the doers, and we're getting ready to launch. As this is Dev.to, I'm going to talk less about buzz words, and more about the technology behind everything, and how we achieved what we did.

So this all started with an ExpressJS site about 2 years ago called Mystlink. We developed this "original" concept as a "partner" website to our Chrome extension that brought channel rewards to YouTube livestreams, the same way they work on Twitch.tv. We realized that maintaining this mess of a project was going to be difficult, so both myself and my partner in crime spent a year off releasing anything, and dove into more modern stacks.

We played with Svelte, Nuxt, React, the list goes on and on. We eventually found ourselves on AstroJS, and that's where we decided. This wouldn't last terribly long.

## The Development Phase

As the frontend guy, I tend to lay out majority of the UI before Trent comes in to make all the connections. As someone who isn't great at backend and he's not great at the front, we found harmony in this tactic, as I would build everything and it acts how it should, which then makes it really easy for Trent to then clone the repo, see what's going on, and build up the database and bridge connections. This is how we start. Although we were using AstroJS, we were attempting to build an entire SaaS product, which is really not what Astro was intended for. But we loved the freedom of things such as being able to use React and Svelte components, and the concept of Astro Islands. While learning NextJS we always hit hydration errors we didn't understand, and Astro was just a lot more forgiving or us noobs.

We had build two separate sites, one for the admin backend and one for the frontend. When you made changes to your profile, they were visible via an iframe hitting the front end back on the dashboard.

We also hosted this on Cloudflare Pages as we thought that this would be the simplist way to make the app be multi-tenant, so allowing users to attach their own domains to their pages. This was also very wrong.

## The Problems came swiftly

So, our stack was not built for this, not at all. A core feature we wanted was the custom domains, however Astro lacked any sort of middleware to even assist with subdomains for users (user.doras.to instead of doras.to/user), and then Cloudflare's documentation on setting up Cloudflare SaaS was extremely difficult. We loved Cloudflare, we've used them as a DNS provider for years, but we either had to spend weeks parsing their docs and trial and error, or we could look at other solutions. 

We discovered that Vercel & Next has this great middleware and API that could handle this seamlessly, and within 20 minutes on a dummy project we were adding custom domains, so the writing was on the walls. We had to do a rewrite.

## The dreaded rewrite

This actually didn't take too long once we settled as majority of everything was React components, but there was a lot of humming and hawing. Mainly, we couldn't figure out a structure. We tried:

- Next for admin dashboard & Astro frontend
- Next for admin dashboard & a separate Next for frontend
- A Turborepo with a repo that just handled things like the rendering of the user profile, etc

And we then realised we're going to have to make it all one site. 

We had an idea about separating the sites, so at least if we ever had a problem with lets say the admin dashboard, the user pages would still load. This was a silly concept in principle however, we were planning on going serverless. Who's to say that if one site was having a server issue that the other wouldn't too? Or if Cloudflare Pages had some downtime, it'd obviously affect both. We essentially built this block in front of ourselves for no apparent reason, and we have to overcome it.

Overall, we actually managed to finish the rewrite in about 8 days, in 3/5 hour sprints.

## The move to public

Now on Feburary 3rd, we're leaving closed alpha and hitting open beta. During all this time we've been in a closed alpha state where we had some friends and randoms come in and test it all out, and it's been great. We've got some great feedback in our public meetings, and we're excited to finally launch publicly.

For those interested in giving it a shot, you can use code `BETA` for 50% off our Pro subscription for life as a thank you for making it this far ❤️

We've learned a lot, and as a starting "startup founder", I'm very excited to see where this leads. We've already built some awesome internal tools like a fully fledged ticketing system and now working on a project management system as we couldn't agree on Monday.com or Clickup's pricing models. 

This is what we do. We build tools that break down paywalls. While the ticketing system is fully baked into [Doras](https://doras.to) and won't be released publicly, I plan on having the project management system be open source, available for self hosting, and a hosted model. Again, this is just what we do.

Appreciate you giving me the time,

Tom Lundy,
Founder & Admiral of the Fleet @ [Doras](https://doras.to)