Quick Start
Explore the suite of software we use.
Written in a beginner-friendly language in order to provide a smooth onboarding experience for cuHacking's 2024-25 development team, and also act as a general open-source reference for other projects.
TypeScript
Javascript on steroids.Catches your silly bugs before you can even run the code.React
A JavaScript view layer library for building user interfaces.Emphasis on the library part, it's not a framework.Very bueno for saving you from writing all the HTML yourself, and adding small bits of interactivity.Not so bueno for heavyweight interactivity, need bigger guns and external libraries for that.Next.js (may be replaced with Remix)
An unopinionated and batteries-not-included React framework with routing, server-side rendering, image optimizations, and many other things.In a nutshell, pulls all kinds of strings that allow you to use React without setting the user's computer on fire.Maintained by Vercel.Remix
More performant than Next.js for dynamic applications.More 'guts-out' and modular with a clearer separation between client and server.Maintained by Shopify & the React Router team.Storybook
A framework for developing and testing UI components in isolation.Allows you to make your buttons in peace, without having to launch the entire main app to see it.Also doubles as documentation for our design system and a playground for anything and everything the user sees in the main app, in any state; saving you valuable clickity clicks.TailwindCSS
A utility-first CSS framework to style components super fast.No more separate stylesheets. Won't necessarily fix your potato UI but will allow you to make them faster and with less debugging.Does not scale well and makes codebases unreadable by mixing styling and business logic. This is addressed by good React component architecture in tandem with other libraries.Radix UI Primitives
Unstyled headless components that we can easily lay our design system on top of.Also handles accessibility, saving us from writing and maintaining a lot of code + tests.Shadcn/ui
A modern component library built on top of Radix UI Primitives and styled with Tailwind, combining accessibility, customizability, and business logic into one.Has an entire ecosystem of other libraries and heavily supported by the community, making it easy for us to find any component we need.Also has maintained Figma files and Storybooks, allowing us to tightly integrate design mockups with the frontend.Not an npm package, and therefore easily modifiable because we have direct access to code. Even comes with tools so that we can track how much we changed the original look.
ESLint
Find and fix problems in code, and enforce style guide and best practices.Saves you from having to memorize and study our style guide by giving you instant feedback while coding.Saves us from having to make our entire style guide and re-invent best practices from scratch using plugins.Can catch lightweight surface bugs. Cannot catch deep business logic bugs, but prevents the likelihood of them happening by catching the surface bugs.Prettier
An opinionated code formatter to make code look Prettier.Cannot catch bugs. Only handles fixing inconsistencies in spacing, quotes, semicolons, parentheses, brackets, etc.Conventional Commits
Standardized open-source specification for commit messages.Commitizen
A tool to create standardized commit messages that adhere to the conventional commits specification + our sprinkles on top.Commitlint
Lint commit messages according to our specifications.Commitlint/config-conventional- Plugin that enforces conventional commits for commit messages and allows us to modify them.Commitlint/cz-commitlint- Provides an integration for Commitizen so that the only options displayed to you are the same ones defined in Commitlint.In a nutshell, blocks commit messages that do not meet our specs, which in turn saves our CI pipelines from crashing or creating the wrong versions, which in turn ensures our whole app doesn't blow up.Lint-staged
Runs ESLint and Prettier on Git staged files so that there are no code style diffs at the PR level.Husky
Library that allows us to quickly and easily trigger Git hooks, which in turn trigger commands to run the tools mentioned above.