A modern full-stack web application built with React, Express.js, and MongoDB.
- React 19 - UI Library
- Vite - Build Tool
- TailwindCSS 4 - Styling
- React Router DOM - Routing
- Clerk - Authentication
- Express.js - Web Framework
- MongoDB with Mongoose - Database
- Clerk - Authentication & User Management
- Cloudinary - Image Upload & Management
- Multer - File Upload Middleware
WebsiteJSX/
├── client/ # Frontend React application
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── pages/ # Page components
│ │ ├── assets/ # Static assets
│ │ ├── App.jsx # Main App component
│ │ └── main.jsx # Entry point
│ ├── public/ # Public assets
│ ├── package.json # Frontend dependencies
│ └── vite.config.js # Vite configuration
├── server/ # Backend Express application
│ ├── controllers/ # Route controllers
│ ├── models/ # Database models
│ ├── routes/ # API routes
│ ├── middleware/ # Custom middleware
│ ├── configs/ # Configuration files
│ ├── package.json # Backend dependencies
│ └── server.js # Server entry point
└── README.md # Project documentation
- Node.js (v18 or higher)
- npm or yarn
- MongoDB Atlas account
- Clerk account
- Cloudinary account
git clone https://github.com/Febriyan2005/WebsiteJSX.git
cd WebsiteJSXFrontend:
cd client
npm installBackend:
cd server
npm installClient (.env in client folder):
VITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
VITE_API_BASE_URL=http://localhost:5000Server (.env in server folder):
MONGODB_URI=your_mongodb_connection_string
CLERK_SECRET_KEY=your_clerk_secret_key
CLERK_WEBHOOK_SECRET=your_clerk_webhook_secret
CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name
CLOUDINARY_API_KEY=your_cloudinary_api_key
CLOUDINARY_API_SECRET=your_cloudinary_api_secret
PORT=5000
NODE_ENV=developmentDevelopment mode:
Terminal 1 (Backend):
cd server
npm run serverTerminal 2 (Frontend):
cd client
npm run devThe frontend will be available at http://localhost:5173
The backend will be available at http://localhost:5000
- Connect your GitHub repository to Vercel
- Set build command:
npm run build - Set output directory:
dist - Add environment variables in Vercel dashboard
- Deploy the server folder
- Set start command:
npm start - Add all environment variables
- Update CORS_ORIGIN with your frontend URL
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
npm run server- Start development server with nodemonnpm start- Start production server
- Create account at clerk.dev
- Create new application
- Get publishable key and secret key
- Configure webhooks for user management
- Create account at MongoDB Atlas
- Create new cluster
- Get connection string
- Whitelist your IP address
- Create account at cloudinary.com
- Get cloud name, API key, and API secret
- Configure upload presets if needed
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License.
Febriyan2005
- GitHub: @Febriyan2005