A modern full-stack web application where users can create, browse, comment on, and manage products.
Built with TypeScript from end to end, secure authentication, and a clean, responsive UI.
- 🔐 Authentication with Clerk
- 📦 Create, edit, delete products
- 👤 View your own products (Profile page)
- 💬 Comment system with ownership control
- 🖼️ Product images & creator profiles
- ⚡ Fast data fetching with React Query
- 🎨 Responsive UI with Tailwind CSS + DaisyUI
- 🧠 Fully typed API (TypeScript everywhere)
- React 19
- TypeScript
- Vite
- React Router v7
- TanStack React Query
- Axios
- Tailwind CSS v4
- DaisyUI
- Lucide Icons
- Clerk Authentication
- Node.js
- Express v5
- TypeScript
- PostgreSQL
- Drizzle ORM
- Clerk Auth Middleware
- dotenv
- CORS
.
├── backend/
│ ├── src/
│ ├── drizzle/
│ ├── package.json
│ └── tsconfig.json
│
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ ├── pages/
│ │ ├── hooks/
│ │ ├── lib/
│ │ └── types/
│ ├── package.json
│ └── vite.config.ts
│
└── README.md
git clone https://github.com/your-username/your-repo-name.git
cd your-repo-namecd backend
npm installDATABASE_URL=postgresql://user:password@localhost:5432/db_name
CLERK_SECRET_KEY=your_clerk_secret_keynpm run db:pushnpm run devBackend runs on http://localhost:3000
cd frontend
npm installVITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
VITE_API_URL=http://localhost:3000npm run devFrontend runs on http://localhost:5173
Authentication is powered by Clerk:
- Secure sign in & sign up
- User identity sync with backend
- Authorization for product & comment ownership
- GET
/products - GET
/products/:id - GET
/products/my - POST
/products - PUT
/products/:id - DELETE
/products/:id
- POST
/comments/:productId - DELETE
/comments/:commentId
- Shared API & UI types
- Strongly typed React Query hooks
- Prevents runtime bugs like
.map is not a function
- Search & filtering
- Likes / favorites
- Pagination & infinite scroll
- Admin dashboard
Marouane OUARRADI
Full-Stack Developer (TypeScript / MERN)
🌐 Portfolio: https://marwancodes.vercel.app/
ISC License