Jerry is a modern, responsive AI chat application built with React, Vite, Tailwind CSS, and Clerk authentication.
- Clerk auth: Google OAuth, email + password, username + password, forgot password
- Protected routes for chat and profile
- Real-time streaming AI responses
- Markdown with code highlighting
- Mobile-first sidebar layout
| Layer | Technology |
|---|---|
| Framework | React 19 + Vite 7 |
| Styling | Tailwind CSS 4 |
| Auth | Clerk (@clerk/clerk-react) |
| Routing | React Router 7 |
| Toasts | sonner |
| Icons | lucide-react, react-icons |
Copy .env.example to .env.development and set:
VITE_API_BASE_URL=http://localhost:5000/api
VITE_CLERK_PUBLISHABLE_KEY=pk_test_...Publishable key: Clerk Dashboard → API Keys.
Configure these so the in-app <SignIn /> / <SignUp /> match the product requirements:
- Social — User & authentication → Social connections → enable Google
- Email + password — enable Email address and Password
- Username — enable Username as an identifier (sign-in with email or username)
- Forgot password — keep password reset enabled (default with Email+Password)
- Paths / URLs
- Application → Domains / paths: sign-in
/sign-in, sign-up/sign-up - Allowed origins:
http://localhost:5173(and production frontend URL) - Redirect URLs:
http://localhost:5173,http://localhost:5173/sign-in, etc.
- Application → Domains / paths: sign-in
- Align secret key on the API (
jerry-apiCLERK_SECRET_KEY) with the same Clerk application
npm install
npm run devApp: http://localhost:5173
Sign-in: /sign-in · Sign-up: /sign-up · Profile shell: /profile
Legacy /login and /register redirect to Clerk paths.
API must verify Clerk session JWTs (Authorization: Bearer). See jerry-api README / env (CLERK_SECRET_KEY, FRONTEND_URL).
ClerkProviderinsrc/main.jsxwithVITE_CLERK_PUBLISHABLE_KEYProtectedRoute/PublicOnlyRouteinsrc/features/auth/ProtectedRoute.jsxAuthProviderbridges Clerk →{ user, getIdToken() }for chat API calls- After sign-in/up, redirect to
/(chat). Profile overview at/profile(full edit UI is Step 3)
- Enter: Send message
- Shift + Enter: New line
Jerry can make mistakes. Verify important information.