Google Docs Clone Tech Stack
I've been thinking about creating a Google Docs clone with Google Classroom integration. However, I’ve never built a full-stack app before—only Chrome extensions and frontend websites using TypeScript and Svelte.
I'm curious about what tech stack people would recommend. I watched Theo’s video, "I Built the Same App with 5 Different Stacks," and have been learning a lot about Elixir. However, I’m unsure if the potential scalability benefits are worth learning an entirely new language.
Would learning Elixir be useful for development when my main goal is to land a job? I imagine most companies primarily use a full TypeScript stack. I'm open to learning a new language, but I don’t want to invest time in Elixir only to find that I never actually use it in a job.
If I don't use Elixir what tech stack you recommend for this case?
5 Replies
In my opinion you don't need to learn another language if you know TypeScript/JS. I'd rather get really good at one language than mediocre at 3 different languages (short-term) (not counting HTML/CSS).
Plus with TS/JS it's nice that you can build both frontend and backend with it. Some people might argue that you should use a "dedicated" language for backend stuff, but from my experience you can build solid apps with TS. Plus the ecosystem is huge - there's a package for everything.
If you want to land a job, I think the requirements also depend on your country. For example here in Germany, PHP is very popular and many medium-sized companies use it for backends.
But as I said, in my opinion TypeScript is a solid choice which can get you a variety of jobs from frontend to backend. If you're decently good at designing / HTML / CSS that's a huge plus.
I highly suggest that you build some kind of portfolio using the tech you know - Svelte and TS - and make it open source. That's a nice way to showcase your skills.
If you know the principles of any frontend framework, I think one can also land a job at a company which uses a different framework. Because Svelte, React, Vue, etc are very similar, the learning curve should be quite steep.
ok i feel like there's a couple of layers to this
First of all, Google Docs clone is quite an ambitious project for a beginner... to say the absolute least. I suggest separating that project into parts and tackle whichever you think is most interesting first:
1. a doc file parser and generator
2. a "what you see is what you get" editor
3. a simple real-time multiplayer text editor
4. a simple Google Classroom integration (maybe a simple personal dashboard)
Second, typescript is absolutely good enough for these, and would definitely help you get a job. And knowing backend typescript will definitely help you
Third, depending on how proficient you are with typescript, learning elixir would definitely help you. Not just because now you know elixir, but because you'll rethink how you write typescript if you didn't do functional style ts before. But i think if you're still not that comfortable with typescript yet, focusing on that first will probably be more productive
The plan is to use Tiptap which can handle most of the hyper text editing. While it might seem like with that 90% is already done the part that I am more intrested in storing the documents in a way such that I can access any previous version in O(1). I have taken a look at Next.js and it seems good however I really like the simplicity in Elixir where everything uses SSR. However it feels like I may be adding unneeded complexity.
O(1)? you mean by using key value map..?
honestly just try doing it, idk why you would even consider elixir for tiptap, unless your aim is to learn elixir. Next.js and Sveltekit can do SSR too
Its more efficient to store documents using a delta log but then access a historic version is O(n) as you need to apply every delta between your current version and the one you want to go to.
Yeah I know that you can do SSR with Next.js and Sveltekit something about having a language that runs in the server and a language that runs in the client is nice tho imo. Idk I prolly am overthinking and should just use TS since thats what I know.