Technology
The great thing about standards is that there's so many to choose from.
— Andrew S. Tanenbaum
We started building Cooper in January 2024 as a new project on the Sandbox project slate. Given that the project was very new, we had significant flexibility in choosing the technology stack. To create a Minimum Viable Product (MVP) quickly, we decided to use the T3 Stack.
At the core, the stack is built on Next.js along with tRPC for the type-safe API layer. The database is managed by Prisma and the frontend is styled with Tailwind CSS. In Summer 2024, the project was migrated to use Turborepo and Drizzle to improve developer experience and performance. This migration was based on the template in Create T3 Turbo. The template was stripped down to only have web
and auth-proxy
apps along with standalone monorepo packages for managing the API, database, authentication, and UI components (based on shadcn/ui).
This documentation is written almost entirely in MDX through Docusaurus. This was to support the onboarding of multiple new developers in Fall 2024.
Technology Stack
Adding unit and end-to-end tests is a work in progress so we do not have any testing framework set up as of now.
"dw testing is 4 chumps"
— Mr. Jarmale and the Big Steppers
- Next.js - Web development framework
- Tailwind CSS - CSS framework
- shadcn/ui - Pre-built components
- NextAuth.js - Authentication
- Drizzle - ORM
- PostgreSQL - Relational database
- Docker - Containerization
- tRPC - End-to-end typesafe API
- Zod - Validation
- Vitest - Unit tests
- Playwright - E2E tests