upup is a web application designed for Ask Me Anything (AMA) sessions with a unique feature allowing users to upvote questions.
- Upvoting functionality for questions.
- Real-time updates using websockets.
- Pub/Sub with Redis for improved scalability.
- User authentication powered by Next Auth.
- Responsive and stylish UI with Tailwind CSS.
- Monorepo structure powered by Turborepo.
This Monorepo includes the following packages/apps:
web
: A Next.js app. This serves as the frontend of upup. Built uisng Next Auth, Drizzle ORM (+ PostgreSQL), Radix UI and Tailwind.ui
: a stub React component library used byweb
application. Contains Radix UI and custom Tailwind components.server
: A Node.js app that uses websockets for establishing connections and broadcasting messages. It also uses Redis for publishing and subscribing to messages reveived. This enables this backend server to be highly scalable.
Each package/app is 100% TypeScript.
To develop all apps and packages, run the following command:
- Start an instace of Redis locally (using Docker)
docker run -p 6379:6379 redis
-
Copy over
.env.local.example
to.env.local
in apps/web -
Run all the apps and packages in the project locally
pnpm i
pnpm dev