What are the best open source TypeScript frontend and backend real world projects I can learn from?<p>I am a self-taught web developers and I haven't worked for any good companies. There are no seniors reviewing my code.<p>My code quality can be improved but I don't know how. Maybe reading some good codebase is a way out.<p>I use React in frontend and express in Backend. Do you know any good OSS projects that use those stacks?<p>Maybe I should read popular OSS frameworks instead of web app's source code? I am thinking of changing my job, so reading real web app's source code might be more relavant.<p>I am very thankful for any advices. And Happy New Year!
Depends whether you actually want to learn TypeScript or just how to consume it. More than 90% of TypeScript code I've seen is not actually taking advantage of TypeScript's static analysis capabilities to write safer more scalable code and is instead just being used as glorified autocomplete.<p>If you actually want to learn, then take a look at the implementation for stuff like Zod: <a href="https://github.com/colinhacks/zod/tree/master/src/helpers">https://github.com/colinhacks/zod/tree/master/src/helpers</a><p>You can do some really powerful stuff that hugely benefits your team. A decent example I stumbled across recently when I went to release my own library (that does the same thing) is <a href="https://github.com/leancodepl/ts-routes">https://github.com/leancodepl/ts-routes</a>
I work on Linen <a href="https://github.com/Linen-dev/linen.dev">https://github.com/Linen-dev/linen.dev</a> its an open source Slack alternative. Its a full stack typescript app. We do a mono repo with typesharing between both client and backend. If you are looking for a realworld typescript SAAS app this would be good
This could be a good learning resource, a collection of client & server-side TypeScript projects.<p>Awesome TypeScript - <a href="https://github.com/dzharii/awesome-typescript">https://github.com/dzharii/awesome-typescript</a><p>And here's a list of projects on GitHub tagged with the topic "TypeScript", sorted by most stars. Many build tools I see on the first page, starting with the TypeScript compiler itself - which is an impressive and interesting codebase, but it may not be so suitable for study purpose.<p><a href="https://github.com/topics/typescript">https://github.com/topics/typescript</a><p>You might enjoy learning from some books too.<p>The TypeScript Handbook - <a href="https://www.typescriptlang.org/docs/handbook/intro.html" rel="nofollow">https://www.typescriptlang.org/docs/handbook/intro.html</a><p>TypeScript Deep Dive - <a href="https://basarat.gitbook.io/typescript/" rel="nofollow">https://basarat.gitbook.io/typescript/</a>
This is not exactly a codebase, but I believe it merits mention in this thread as a great TypeScript learning resource.<p><a href="https://type-level-typescript.com/" rel="nofollow">https://type-level-typescript.com/</a><p>A short online course about intermediate-to-advanced level TypeScript.
I'm part of the team that maintains a digital wallet browser extension with a really clean codebase — check it out.<p><a href="https://github.com/tallyhowallet/extension">https://github.com/tallyhowallet/extension</a>
I am working on a Node/browser OS in TypeScript to solve for decentralization/peer-to-peer relations if you want to check that out.<p><a href="https://github.com/prettydiff/share-file-systems">https://github.com/prettydiff/share-file-systems</a><p>Selling points:<p>* No frameworks and minimal dependencies<p>* The GUI loads in the browser with full state restoration in about 260ms in Chrome.<p>* Full peer to peer file system access<p>* Original WebSocket service support faster than the popular NPM packages (ws, socket.io)<p>* Peer-to-peer end-to-end test automation in the browser that is faster and easier than the big browser test automation applications (puppeteer, playwrite)<p>* I am currently working on a streaming command terminal for the browser for support for for things like vim and irssi. The current experimental terminal only supports basic command input/output
You should check out <a href="https://github.com/medusajs/medusa">https://github.com/medusajs/medusa</a><p>It’s an open source commerce engine built in Node w. TypeScript. The domain is fairly easy to wrap your head around and the architecture and code quality are often praised.
I've found NestJs to be a very thoughtful application framework. I'd argue it demonstrates pro-level typescript coding.<p><a href="https://github.com/nestjs/nest">https://github.com/nestjs/nest</a>
I definitely wouldn’t say it’s the “best” open source project but my side project <a href="https://github.com/codeamigo/codeamigo">https://github.com/codeamigo/codeamigo</a> is a full stack project written in TypeScript and I’m happy to answer any questions you have about it. Full project here: <a href="https://codeamigo.dev" rel="nofollow">https://codeamigo.dev</a>
Fp-ts and io-ts, best examples of what functional programming along with strict type safety can achieve. The source code is a pleasure to read and explore
This book gave me a good push in the right direction when I was in the same situation as you many years ago. It gave me the tools I needed, and it is still very relevant today. "old but not obsolete" as they say in the terminator movie.<p><a href="https://en.wikipedia.org/wiki/Code_Complete" rel="nofollow">https://en.wikipedia.org/wiki/Code_Complete</a>
I started working on a project to solve this exact issue <a href="https://github.com/mburst/protomolecule">https://github.com/mburst/protomolecule</a>. I haven't spent too much time building out other frameworks, but the first framework is React + Express which fits what you're looking for
<a href="https://github.com/type-challenges/type-challenges">https://github.com/type-challenges/type-challenges</a><p>The type challenges are a great thing to learn with. Admittedly, they're a bit intense but it's a great way to "expand your awareness".<p>As a shameless self plug, I'm participating in a 140-day long project to do them all (complete with video explanations) that just started yesterday, if you wanna follow along: <a href="https://github.com/type-challenges/type-challenges/issues/21338">https://github.com/type-challenges/type-challenges/issues/21...</a>
This could be a good place <a href="https://create.t3.gg" rel="nofollow">https://create.t3.gg</a> (understanding all the code generation would be useful, but also you can deep dive into any one of the type safe libraries).
<a href="https://github.com/shadcn/taxonomy">https://github.com/shadcn/taxonomy</a> has been very useful for me learning the new Next.js 13 app/ React Server Components in Typescript.
Outline: <a href="https://github.com/outline/outline">https://github.com/outline/outline</a><p>One of the best code base that I have seen, not just TypeScript.
This is such a valuable question for other languages too. I wonder if there's a repo/resource listing such projects..<p>I asked a similar question about ruby some time ago, and came across one good recommendation (<a href="https://github.com/sharetribe/sharetribe">https://github.com/sharetribe/sharetribe</a>), but would love to have many more. I'm also self-taught and feel I haven't read enough great ruby code!
For backend and general typescript knowledge, I’d highly recommend Apollo GraphQL: <a href="https://github.com/apollographql/apollo-server">https://github.com/apollographql/apollo-server</a><p>Check out their apollo-server and apollo-client repos. It’s a very useful codebase to be knowledgeable about. This is something you should mention in an interview as a strong positive if the company wants graphql experience.
Meta question: I wonder what it would take to splat a code quality metric on every github repo. Obviously this is a combination of subjective and objective factors, but I wonder if doing this in bulk would lead to a general improvement in the industry. Particularly paired with CoPilot and having some sort of feedback into the training this would be pretty neat...
How about a different approach. Instead doing more of the same, branch out in to a different language. Elm, for example. [0]<p>Elm specifically will teach you lots on the static types end of things. And it will only take a weekend or so of tinkering to show improvements in your TS life.<p>0 - <a href="https://elm-lang.org/" rel="nofollow">https://elm-lang.org/</a>
This one is good reading, it's the backend of a real-time 2D multiplayer war game: <a href="https://github.com/wight-airmash/ab-server">https://github.com/wight-airmash/ab-server</a>
It's not popular, but I'm very proud of my ADT library I'm working on. <a href="https://github.com/schwartzworld/schtate">https://github.com/schwartzworld/schtate</a>
I don't know about the quality, but Mattermost is in TS: <a href="https://github.com/mattermost/mattermost-webapp">https://github.com/mattermost/mattermost-webapp</a>
tRPC, because you can learn a lot of type-inference tricks using generics and proxies<p><a href="https://github.com/trpc/trpc">https://github.com/trpc/trpc</a>