Tech Stack Overview - PAiMo-io/PAiMo GitHub Wiki
Tech Stack Overview
This document provides a high-level overview of the main technologies used in this project.
Framework
- Next.js 14 with the app router (
app/
directory) for server-side rendering and routing. - React 18 as the UI library.
- TypeScript for type-safe JavaScript development.
Authentication
- NextAuth with Google and credentials providers (
auth.ts
). - Sessions and JWT callbacks extend user details for roles and profile data.
Database
- MongoDB accessed through Mongoose (
utils/mongoose.ts
). Models are defined inmodels/
for users, clubs, events and more.
Styling & UI
- Tailwind CSS configured in
tailwind.config.ts
andapp/globals.css
. - shadcn/ui components (Radix UI based) with paths defined in
components.json
. - Lucide icon library.
Emails & Notifications
- Resend API for sending registration and password reset emails (see
app/api/register/route.ts
).
Storage
- Cloudflare R2 (S3-compatible) accessed through
@aws-sdk/client-s3
. Used to store user avatars viascripts/updateMissingAvatars.ts
.
Other Libraries
- BcryptJS for hashing passwords.
- Day.js for date utilities.
- Axios for HTTP requests.
- Boring Avatars to generate fallback user avatars.
Tooling
- ESLint via
npm run lint
. - Build process using
next build
vianpm run build
. - Scripts for seeding data and filling avatars are in
scripts/
.
Configuration
- Environment variables (see
README.md
for examples) configure database connection, authentication secrets, Resend API key and R2 credentials.